Instructions Oracle Database de l'outil RAG pour les agents d'IA générative

Vous pouvez utiliser vos propres intégrations vectorielles (BYO) à partir d'une version 23ai d'Oracle Database vers des agents OCI Generative AI.

Pour que les données dans Object Storage soient disponibles pour les agents d'IA générative, reportez-vous à Exigences en matière de données pour Object Storage. Afin de rendre disponible la recherche OCI ingérée et indexée BYO avec des données OpenSearch pour les agents à utiliser, reportez-vous à Recherche OCI de l'outil RAG avec des directives OpenSearch pour les agents d'IA générative.

Cette rubrique décrit les informations d'assistance, les tâches prérequises et les instructions relatives à l'utilisation d'Oracle Database 23ai en tant qu'option de données pour les agents Generative AI. Les informations fournies supposent que vous êtes familiarisé avec les réseaux cloud virtuels et les sous-réseaux, Oracle Database 23ai et le service Database Tools.

Étape 1 Consulter les informations de support relatives à la base de données

Avant d'utiliser une banque de vecteurs Oracle Database version 23ai en tant qu'option de données pour les agents d'IA générative, assurez-vous que vous comprenez ce qui est pris en charge et effectuez toutes les tâches requises.

Types de base de données

Les agents d'IA générative prennent en charge les intégrations de vecteurs BYO à partir des éléments suivants :

  • Oracle Base Database 23ai : la base de données peut être configurée sur un réseau privé. Reportez-vous à Création d'un système de base de données.

  • Oracle Autonomous Database 23ai des types d'accès réseau suivants uniquement :

    • Accès à l'adresse privée uniquement : l'authentification TLS mutuelle (mTLS) peut être activée pour authentifier les connexions à la base de données. Cochez la case Exiger une authentification TLS mutuelle (mTLS) pour activer l'authentification mTLS.

    • Accès sécurisé à partir de n'importe quel emplacement : l'authentification mTLS est activée par défaut et requise.

    Reportez-vous à Création d'une instance Autonomous Database.

Bases de données autonomes activées pour l'authentification mTLS

Si la base de données autonome est activée pour l'authentification TLS mutuelle, vous devez télécharger le portefeuille, créer un mot de passe de portefeuille et extraire un fichier du portefeuille. Reportez-vous à la section Wallet Security Requirements à l'étape 3. Configuration de la mise en réseau et des exigences de sécurité.

Prise en charge des bases de données inter-région et inter-locations

La prise en charge des bases de données inter-régions et inter-locations n'est disponible que pour Oracle Database 23ai avec accès au réseau privé. Cela inclut Oracle Base Database et Oracle Autonomous Database configurés par le type d'accès réseau Accès à l'adresse privée uniquement. Les bases de données autonomes avec accès public ne sont pas prises en charge.

Lorsque vous utilisez des agents d'IA générative dans une région hébergée, vous pouvez vous connecter à une base de données à accès privé qui réside dans :
  • Une autre région dans la même location. Activez la connectivité en créant une connexion aux outils de base de données dans la région où le service d'agent est disponible.
  • Une autre location. Activez la connectivité en créant une connexion aux outils de base de données dans la location où le service d'agent est disponible.

Pour configurer les paramètres réseau, reportez-vous à Exigences réseau (base de données inter-région et inter-locations) à l'étape 3. Configuration de la mise en réseau et des exigences de sécurité.

Pour créer une connexion, entrez la chaîne de connexion manuellement, comme décrit à l'Step 5. Création de connexions Database Tools.

Étape 2. Ajouter un groupe dynamique et des stratégies

En plus de donner à l'utilisateur l'accès à toutes les ressources des agents d'IA générative, comme décrit dans Ajout de stratégies pour pouvoir utiliser le service, vous devez créer un groupe dynamique avec accès aux clés secrètes de coffre et aux outils de base de données.

  1. Créez un groupe dynamique et ajoutez la règle de mise en correspondance suivante.

    ALL {resource.type='genaiagent'}

    Si vous avez besoin d'aide, reportez-vous à Création d'un groupe dynamique.

  2. Accordez des droits d'accès au groupe dynamique.

    • Ecrivez les stratégies suivantes, qui peuvent être utilisées avec le domaine d'identité par défaut :

      allow dynamic-group <dynamic-group-name> 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group <dynamic-group-name> 
      to read secret-bundle in compartment <compartment-name>
      
    • Utilisez les stratégies suivantes avec un domaine d'identité qui n'est pas par défaut, en fournissant le nom de domaine Oracle Identity Cloud Service (IDCS) et le nom de groupe dynamique :

      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read database-tools-family in compartment <compartment-name>
      
      allow dynamic-group '<idcs-domain-name>/<dynamic-group-name>' 
      to read secret-bundle in compartment <compartment-name>
      
Conseil

Si la connexion aux outils de base de données est inaccessible après avoir écrit les stratégies précédentes, il peut y avoir un problème avec le jeton de session de principal de ressource. Essayez d'utiliser les paramètres de stratégie suivants sans dépendre de groupes dynamiques :

allow any-user to read database-tools-family in compartment <compartment-name> where any {request.principal.type='genaiagent'}

allow any-user to read secret-bundle in compartment <compartment-name> where any {request.principal.type='genaiagent'}
Étape 3. Configuration requise pour la mise en réseau et la sécurité

Effectuez ces tâches si vous n'avez pas encore configuré ou créé les ressources requises.

Configuration réseau requise
  • Ajoutez la base de données au sous-réseau privé d'un VCN.
  • Configurez les propriétés suivantes pour la règle entrante du sous-réseau :
    • Type de source : CIDR
    • Source CIDR: The VCN's IPv4 CIDR Block (such as 10.0.0.0/16)
    • Protocole IP : TCP
    • Plage de ports source : Tout
    • Plage de ports de destination : 1521-1522
Configuration réseau requise (base de données inter-région et inter-locations)

Les exigences suivantes s'appliquent uniquement à Oracle Database 23ai avec accès au réseau privé. Cela inclut Oracle Base Database et Oracle Autonomous Database configurés par le type d'accès réseau Accès à l'adresse privée uniquement. Les bases de données autonomes avec accès public ne sont pas prises en charge.

Paramètres réseau

  • Configurez deux réseaux cloud virtuels avec des CIDR qui ne se chevauchent pas. Pour configurer les paramètres réseau, reportez-vous à Appairage VCN distant.
  • Dans le VCN de la base de données, assurez-vous d'ajouter la règle entrante pour le CIDR VCN de la connexion aux outils de base de données afin d'accéder aux ports de base de données 1521-1522.

Exemple de base de données inter-région : vous pouvez vous connecter à une base de données située dans une région différente de celle dans laquelle le service Agents d'IA générative est exécuté. Exemples :

  • Le service d'agent est en cours d'exécution dans la location A de la région ORD.

  • La base de données Oracle Base ou Oracle Autonomous Database avec accès au réseau privé est déployée dans la région PHX.

  • Pour accéder à la base de données privée, configurez des passerelles de routage dynamique dans les deux régions et configurez une connexion aux outils de base de données dans ORD pour vous connecter à la base de données dans PHX.

Exemple de base de données inter-locations : vous pouvez vous connecter à une base de données située dans une location différente du service Agents Generative AI. Exemples :

  • Le service d'agent est en cours d'exécution dans la location A de la région ORD.

  • La base de données Oracle Base ou Oracle Autonomous Database avec accès au réseau privé est déployée dans la location B dans la région PHX.

  • Pour accéder à la base de données privée, configurez des passerelles de routage dynamique dans les deux locations et configurez une connexion aux outils de base de données dans la location A (région ORD) pour vous connecter à la base de données dans la location B (région PHX).

La configuration réseau inter-locations s'applique que le service de base de données et le service d'agent se trouvent dans la même région ou dans des régions différentes.

Exigences de sécurité du coffre

Un coffre dans OCI Vault est requis pour stocker les clés secrètes de la base de données, telles que le mot de passe de la base de données.

Créez le coffre dans le même compartiment que la connexion Database Tools. Cela s'applique aux bases de données de la même région que le service Generative AI Agents, ainsi qu'aux bases de données inter-région ou inter-locations.

  1. Créer un coffre.
  2. Créez une clé de cryptage maître.
  3. Dans le coffre, créez une clé secrète pour le mot de passe de base de données.
Conditions de sécurité du portefeuille

Si la base de données autonome est activée pour l'authentification mTLS, effectuez les tâches suivantes :

  1. Téléchargez le portefeuille et créez-en un. Reportez-vous à Téléchargement des informations d'identification client (portefeuilles).
  2. A partir du fichier ZIP de portefeuille téléchargé, extrayez le fichier ewallet.p12 et mettez-le de côté. Vous avez besoin du portefeuille PKCS#12 pour créer la connexion aux outils de base de données.
Étape 4. Configurer une table de base de données et une fonction

Dans la base de données que vous avez créée pour l'utiliser avec les agents d'IA générative, créez une table de base de données avec certains champs obligatoires et configurez une fonction de base de données qui renvoie des résultats de recherche vectorielle à partir de requêtes.

Table de base de données
Créez une table Oracle Database 23ai avec les champs suivants :

Champs obligatoires

  • DOCID : ID affecté à chaque enregistrement ou document
  • BODY : contenu réel que l'agent doit rechercher
  • VECTOR : vecteur généré à partir d'un modèle d'intégration basé sur le contenu body

Champs facultatifs

  • CHUNKID : ID du document découpé en blocs, au cas où le document dépasse 512 jetons.
  • URL : référence d'URL pour le contenu, si disponible.
  • TITLE : titre du contenu body
  • PAGE_NUMBERS : numéros de page du contenu, le cas échéant.
Conseil

Vous pouvez créer des incorporations de texte dans OCI Generative AI.
Fonction de base de données

Une fonction est un sous-programme qui peut admettre des paramètres et renvoyer une valeur. Vous devez configurer une fonction de base de données qui peut renvoyer des résultats de recherche vectorielle à partir de chaque requête. Voici les exigences :

Paramètres d'entrée

  • p_query : chaîne de requête
  • top_k : nombre de résultats principaux

Type renvoyé

  • SYS_REFCURSOR

Exigences

  • Le modèle d'intégration que vous utilisez pour le champ de requête de la fonction doit être identique au modèle d'intégration qui transforme le contenu BODY de la table en incorporations vectorielles.

  • Les champs renvoyés par la fonction doivent correspondre aux champs obligatoires de la table (DOCID, BODY et SCORE) et facultatifs (CHUNKID, TITLE et URL).

    Le contenu BODY est traité par un modèle d'incorporation afin de produire une valeur VECTOR pour chaque contenu. La fonction calcule les distances entre le vecteur de requête et chaque VECTOR, en renvoyant les lignes top_k. Le champ SCORE représente les distances entre le vecteur de requête et VECTOR à partir de BODY.

  • Si les noms de champ de retour de la fonction ne correspondent pas aux noms de champ de table, vous devez utiliser des alias dans la fonction.

Exemple

Voici un exemple de fonction de base de données :

create or replace FUNCTION RETRIEVAL_FUNC (p_query IN VARCHAR2,top_k IN NUMBER) RETURN SYS_REFCURSOR IS
    v_results SYS_REFCURSOR;
    query_vec VECTOR;
BEGIN
    query_vec := dbms_vector.utl_to_embedding(
        p_query,
        json('{
            "provider": "OCIGenAI",
            "credential_name": "OCI_VECTOR_CREDENTIAL",
            "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
            "model": "cohere.embed-english-v3.0"
        }')
    );

    OPEN v_results FOR
        select l.id as DOCID, lv.chunk_id as CHUNKID, l.file_name as TITLE, 
        'https://objectstorage.us-chicago-1.oraclecloud.com/n/{namespace}/b/{bucket_name}/o/' || l.file_name as URL,
        lv.chunk_txt as BODY, vector_distance(embed_vector, query_vec) AS SCORE
        from legislation_vector lv, legislation l
        where l.id = lv.id
        order by SCORE 
        fetch first top_k rows only;

    RETURN v_results;
END;
Étape 5. Créer des connexions Database Tools

Vous pouvez créer des connexions réutilisables à une base de données Oracle dans OCI à l'aide du service Database Tools.

Suivez ces instructions pour créer une connexion à votre base de données.

Instructions relatives à la connexion à Oracle Base Database 23ai

Les agents d'IA générative peuvent accéder à une base de données Oracle Base Database 23ai via une adresse privée. Effectuez ces tâches pour établir la connexion à la base de données.

  1. Obtenez les informations suivantes :

    Dans la console, ouvrez le menu de navigation et sélectionnez Oracle Database, puis Oracle Base Database Service. Sélectionnez le nom du système de base de données, puis le nom de la base de données. Copiez les propriétés suivantes à utiliser pour les informations de connexion à l'étape suivante :

    • Système de base de données
    • Base de données
    • Répertoire de base de la base de données
    • Sur le côté gauche, sélectionnez Bases de données pluggables et sélectionnez le nom de la base de données pluggable. Sélectionnez Connexion de base de données pluggable et copiez la chaîne de connexion au format Long.

      Exemple de chaîne de connexion au format long :

      (DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
      (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.62)(PORT=1521)))
      (CONNECT_DATA=(SERVICE_NAME=xxx_pdb1.xxx.dbsvcn.oraclevcn.com)))
  2. Dans Database Tools, créez une connexion à l'aide de l'une des options suivantes :

    • Utilisez l'option Sélectionner une base de données pour sélectionner une base de données.
      1. Sélectionnez Oracle Base Database.
      2. Sélectionnez le système, le répertoire de base et la base de données.
      3. Sélectionnez la base de données pluggable.
    • Utilisez l'option Entrer les informations de base de données pour une base de données inter-région ou inter-locations et entrez les informations de connexion manuellement. Pour Type de connexion, sélectionnez Oracle Database.
  3. Renseignez le reste des informations avec les propriétés suivantes :

    • Saisissez le nom utilisateur et sélectionnez le rôle de l'utilisateur.

      Assurez-vous que l'utilisateur de base de données dispose des droits d'accès nécessaires et qu'il peut exécuter la fonction de base de données préparée à l'étape 4. Configurez une table de base de données et une fonction. Un rôle approprié lui est affecté. Par exemple, pour l'utilisateur SYS, affectez le rôle SYSDBA.

    • Pour Clé secrète de mot de passe utilisateur, sélectionnez la clé secrète si elle est déjà créée. Sinon, sélectionnez Créer une clé secrète de mot de passe et créez une clé secrète pour stocker le mot de passe dans le coffre que vous avez créé.
    • Pour Chaîne de connexion, collez le format long de la base de données pluggable que vous avez copiée à l'étape 1 de cette procédure.

      Pour une base de données inter-région ou inter-locations, entrez la chaîne de connexion.

    • Cochez la case Accéder à la base de données via un réseau privé.
    • Pour Adresse privée, effectuez l'une des opérations suivantes :
      • Cliquez sur Sélectionner une adresse privée et sélectionnez l'adresse.
      • Sélectionnez Créer une adresse privée et créez l'adresse. Pour Sous-réseau, sélectionnez le sous-réseau privé de la base de données. Assurez-vous de créer l'adresse privée en utilisant le même VCN et le même sous-réseau que la base de données.
    • Pour Format de portefeuille, sélectionnez None afin de créer une connexion sans authentification TLS mutuelle (mTLS).
Instructions relatives à la connexion à Autonomous Database 23ai

Les agents d'IA générative peuvent accéder à une instance Autonomous Database 23ai via une adresse privée avec une connexion configurée pour l'authentification TLS mutuelle (mTLS). Effectuez ces tâches pour établir une connexion de base de données.

  1. Obtenez les informations suivantes :

    Dans la console, ouvrez le menu de navigation . Sélectionnez Oracle Database, puis Autonomous Database. Sélectionnez la base de données. Dans la page de détails de la base de données, copiez les propriétés suivantes à utiliser pour les informations de connexion à l'étape suivante :

    • Nom de base de données
    • (Pour l'accès réseau Accès à l'adresse privée uniquement) Sous la section Réseau :
      • Adresse IP de l'adresse privée
      • URL de l'adresse privée
    • Sélectionnez Connexion à la base de données et procédez comme suit :
      • Dans la liste des noms TNS, recherchez le nom TNS qui se termine par _high et copiez sa chaîne de connexion.
      • Uniquement pour une base de données nécessitant une authentification TLS mutuelle : téléchargez le portefeuille. Reportez-vous à la section Wallet Security Requirements à l'étape 3. Configuration de la mise en réseau et des exigences de sécurité.
  2. Dans Database Tools, créez une connexion à l'aide de l'une des options suivantes :

    • Utilisez l'option Sélectionner une base de données pour sélectionner une base de données.
      1. Sélectionnez Oracle Autonomous Database.
      2. Sélectionnez la base de données.
    • Utilisez l'option Entrer les informations de base de données pour une base de données inter-région ou inter-locations et entrez la chaîne de connexion manuellement. Pour Type de connexion, sélectionnez Oracle Database.
  3. Renseignez le reste des informations avec les propriétés suivantes :

    • Dans Nom utilisateur, entrez l'utilisateur qui dispose des droits d'accès nécessaires et peut exécuter la fonction de base de données préparée à l'étape 4. Configurer une table de base de données et une fonction.
    • Pour Clé secrète de mot de passe utilisateur, sélectionnez la clé secrète si elle est déjà créée. Sinon, sélectionnez Créer une clé secrète de mot de passe et créez une clé secrète pour stocker le mot de passe dans le coffre que vous avez créé.
    • Pour Chaîne de connexion, collez la chaîne de connexion qui se termine par _high, la chaîne que vous avez copiée à partir de la section Connexion à la base de données de la page de détails de la base de données.
      Ensuite, selon le type de base de données, mettez à jour la chaîne comme suit :
      • Base de données d'accès privé : réduisez retry_count de 20 à 3, et remplacez l'URL de l'adresse privée de l'hôte par l'adresse IP de l'adresse privée.

        Exemple de chaîne de connexion :

        (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-URL>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

        Exemple de chaîne de connexion mise à jour :

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<private-endpoint-IP>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=no)))

      • Base de données d'accès public : réduisez retry_count de 20 à 3.

        Exemple de chaîne de connexion mise à jour :

        (description= (retry_count=3)(retry_delay=3)(address=(protocol=tcps)(port=1522)
        (host=<name>)(connect_data=(service_name=xxx_high.adb.oraclecloud.com))
        (security=(ssl_server_dn_match=yes)))
    • Pour Adresse privée :
      • Pour les bases de données d'accès public, aucune adresse privée ne doit être configurée.
      • Pour Accès à l'adresse privée uniquement, cochez la case Accéder à la base de données via un réseau privé. Sélectionnez ensuite l'adresse privée, ou sélectionnez Créer une adresse privée pour créer une adresse, en vous assurant d'utiliser le même VCN et le même sous-réseau privé que la base de données.
    • Pour le format de portefeuille :
      • Pour une base de données qui n'est pas activée pour l'authentification mTLS, sélectionnez None.
      • Pour une base de données activée pour l'authentification mTLS, sélectionnez PKCS#12 wallet(e.g., ewallet.p12). Créez ensuite la clé secrète de contenu de portefeuille et la clé secrète de mot de passe de portefeuille, ou sélectionnez-les si vous avez déjà créé les clés secrètes.