Accéder au contenu principal Passer au contenu complémentaire

Utiliser Oracle comme base de données vectorielle

Le Job suivant a pour objectif de se connecter à une base de données Oracle 23ai, de créer une table pour une recherche de similarités, d'insérer dans cette table des données concernant des citations célèbres et d'effectuer une recherche de similarités par type vectoriel.

Avant de commencer

Ce scénario utilise les fonctions de recherche vectorielle d'Oracle AI. Pour plus d'informations, consultez la documentation Oracle (en anglais).

Relier les composants

Procedure

  1. Glissez-déposez les composants suivants de la Palette dans l'espace de modélisation graphique : un tPrejob, un tOracleConnection, un tFileInputDelimited, deux tLogRow, un tMap, un tOracleOutput, un tOracleInput, un tPostjob et un tOracleClose.
  2. Reliez le tPrejob au tOracleConnection et le tPostjob au tOracleClose à l'aide de liens OnComponentOk, car aucune donnée n'est gérée ici.
  3. Reliez les autres composants à l'aide de liens Row > Main.
  4. Reliez le Job principal au sous-Job à l'aide d'un lien Trigger > OnSubjobOk.
    Vue d'ensemble du Job dans le Studio.

Configurer les composants

Procedure

  1. Double-cliquez sur le composant tOracleConnection pour afficher sa vue Component.
  2. Configurez la connexion à votre base de données Oracle 23ai.
    Configuration du tOracleConnection.
  3. Double-cliquez sur le composant tFileInputDelimited pour afficher sa vue Component.
  4. Configurez le chemin et les propriétés du fichier d'exemple à insérer dans la base de données Oracle.
    Confguration du tFileInputDelimited
    Ce scénario utilise un fichier TXT contenant des citations connues, le nom de la personne à l'origine de la citation, l'année et le pays.
    Fichier contenant des citations connues, avec le nom, la date et le pays concernés.
  5. Double-cliquez sur le composant tLogRow afin d'afficher sa vue Component.
    Cliquez sur Sync columns afin de récupérer le schéma du composant précédent, si nécessaire.
    Dans la zone Mode, sélectionnez Table, puis Print content with log4j pour afficher les résultats du Job dans la console.
  6. Double-cliquez sur le composant tMap pour accéder au Map Editor.
  7. Glissez-déposez les colonnes suivantes de la table d'entrée vers la table de sortie out1 : id, statement, author, year et country.
    Ajoutez une colonne statement_clone à la fin de la table out1, puis glissez la colonne statement de la table d'entrée dans cette colonne. Cette nouvelle colonne sera utilisée comme colonne de référence dans la table vectorielle Oracle.
    Configuration du tMap.
  8. Cliquez sur OK afin de valider les modifications et fermer l'éditeur.
  9. Double-cliquez sur le composant tOracleOutput afin d'afficher sa vue Component.
  10. Dans la vue Basic settings, saisissez le nom de la table Oracle utilisée comme table vectorielle (ici, son nom est vectable).
    Sélectionnez Drop table if exists and create dans la liste Action on table et sélectionnez Insert dans la liste Action on data.
    Pour plus d'informations concernant les tables vectorielles, consultez la documentation Oracle (en anglais).
    Vue Basic settings de la configuration du tOracleOutput.
  11. Dans la vue Advanced settings, ajoutez une ligne à la table Additional columns afin de saisir l'expression SQL vous permettant d'insérer les données d'exemple dans la colonne vectorielle sélectionnée.
    Configurez le type de données Data type à VECTOR, sélectionnez statement_clone dans Reference column, sélectionnez Replace dans la liste Position et saisissez l'expression SQL suivante :
    "TO_VECTOR(VECTOR_EMBEDDING(ALL_MINILM_L12_V2 USING ? as data))"
    Vue Advanced settings de la configuration du tOracleOutput.
  12. Double-cliquez sur le composant tOracleInput pour afficher sa vue Component.
  13. Dans la vue Basic settings, saisissez la requête suivante dans le champ Query afin de récupérer les données d'exemple de la table vectorielle précédemment créée :
    "
    SELECT statement 
    FROM vectable 
    ORDER BY VECTOR_DISTANCE(vec, TO_VECTOR(VECTOR_EMBEDDING(ALL_MINILM_L12_V2 USING '" + context.query + "' as data)), EUCLIDEAN_SQUARED)
    FETCH FIRST 5 ROWS ONLY
    "
  14. Dans la vue Advanced settings, ajoutez une colonne nommée result dans la table Trim column. Cette colonne sera affichée dans la console lors de l'exécution du Job.
  15. Double-cliquez sur le second composant tLogRow afin d'afficher sa vue Component.
    Cliquez sur Sync columns afin de récupérer le schéma du composant précédent, si nécessaire.
    Dans la zone Mode, sélectionnez Table, puis Print content with log4j pour afficher les résultats du Job dans la console.

Exécuter le Job

Procedure

  1. Appuyez sur les touches Ctrl + S pour sauvegarder votre Job.
  2. Appuyez sur F6 pour l’exécuter.

Results

La console de la vue Run affiche le résultat de la requête SQL récupérant les données d'exemple de la table vectorielle. Seules les cinq premières lignes du résultat de la requête sont affichées.

Une fois la table vectorielle créée, vous pouvez faire des recherches de similarités sur cette table. Par exemple, avec la requête "Matter of work", vous obtenez les résultats suivants :
.-----------------------------------------------------.
|                      tLogRow_2                      |
|=---------------------------------------------------=|
|result                                               |
|=---------------------------------------------------=|
|The only way to do great work is to love what you do.|
|The only way to do great work is to love what you do.|
|Knowledge is power.                                  |
|To do nothing is the way to be nothing.              |
|With great power comes great responsibility.         |
'-----------------------------------------------------'

Pour plus d'informations concernant la recherche vectorielle avec Oracle, consultez la documentation Oracle (en anglais).

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.