Directives Oracle Database pour les agents d'IA générative dans l'outil RAG

Vous pouvez utiliser vos propres intégrations vectorielles (BYO) depuis Oracle Database version 23ai vers les agents d'intelligence artificielle générative pour OCI.

Cette rubrique décrit les informations de soutien, les tâches préalables et les directives relatives à l'utilisation d'Oracle Database 23ai en tant qu'option de données pour les agents d'IA générative. Les informations fournies supposent que vous connaissez les réseaux en nuage virtuels et les sous-réseaux, Oracle Database 23ai et le service d'outils de base de données.

Étape 1. Consulter les informations sur le soutien de base de données

Avant d'utiliser un magasin de vecteurs Oracle Database version 23ai comme option de données pour les agents d'IA générative, assurez-vous de comprendre ce qui est pris en charge et d'effectuer 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 de :

  • Base de données de base Oracle 23ai : La base de données peut être configurée sur un réseau privé. Voir Créer un système de base de données.

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

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

    • Accès sécurisé de partout : l'authentification mTLS est activée par défaut et est requise.

    Voir Créer une instance Autonomous Database.

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

Si l'authentification mTLS est activée pour la base de données autonome, vous devez télécharger le portefeuille, créer un mot de passe de portefeuille et extraire un fichier du portefeuille. Voir Exigences de sécurité de portefeuille à l'étape 3. Configurer les exigences en matière de réseau et de sécurité.

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

La prise en charge inter-région et interlocation de base de données n'est disponible que pour Oracle Database 23ai avec un accès réseau privé. Cela inclut la base de données de base Oracle et Oracle Autonomous Database, qui est configurée par le type d'accès réseau Accès au point d'extrémité privé seulement. 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.
  • 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 de réseau, voir Exigences relatives au réseau (base de données inter-région et interlocation) à l'étape 3. Configurer les exigences en matière de réseau et de sécurité.

Pour créer une connexion, entrez la chaîne de connexion manuellement, comme décrit à l'étape 5. Créer des connexions au service d'outils de base de données.

Étape 2. Ajouter un groupe dynamique et des politiques

En plus d'accorder à l'utilisateur l'accès à toutes les ressources des agents d'IA générative, comme décrit sous Ajout de politiques avant de pouvoir utiliser le service, vous devez créer un groupe dynamique avec accès aux clés secrètes de chambre forte et aux outils de base de données.

  1. Créer un groupe dynamique et ajouter la règle de correspondance suivante.

    ALL {resource.type='genaiagent'}

    Si vous avez besoin d'aide, voir Création d'un groupe dynamique.

  2. Autorisez le groupe dynamique.

    • Écrivez les politiques 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 politiques suivantes avec un domaine d'identité 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 l'écriture des politiques précédentes, il peut y avoir un problème avec le jeton de session du principal de ressource. Essayez d'utiliser les paramètres de politique suivants sans vous fier aux 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. Configurer les exigences en matière de réseau et de sécurité

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

Exigences relatives au réseau
  • Ajoutez la base de données au sous-réseau privé d'un VCN.
  • Configurez les propriétés suivantes pour la règle de trafic entrant du sous-réseau :
    • Type de source : CIDR
    • CIDR source : Bloc IPv4 CIDR du réseau VCN (par exemple, 10.0.0.0/16)
    • Protocole IP : TCP
    • Intervalle de ports sources : Tous
    • Intervalle de ports de destination : 1521-1522
Exigences en matière de réseau (base de données inter-région et interlocation)

Les exigences suivantes ne s'appliquent qu'à Oracle Database 23ai avec accès réseau privé. Cela inclut la base de données de base Oracle et Oracle Autonomous Database, qui est configurée par le type d'accès réseau Accès au point d'extrémité privé seulement. Les bases de données autonomes avec accès public ne sont pas prises en charge.

Paramètres de réseau

  • Configurez deux réseaux en nuage virtuels avec des blocs CIDR qui ne se chevauchent pas. Pour configurer les paramètres de réseau, voir Appairage distant de VCN.
  • Dans le VCN de la base de données, assurez-vous d'ajouter la règle de trafic entrant pour le bloc CIDR du 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 où le service d'agents du service d'intelligence artificielle générative est exécuté. Exemple :

  • Le service d'agent s'exécute dans la location A dans la région ORD.

  • La base de données de base Oracle ou Oracle Autonomous Database avec un accès 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 (DRG) dans les deux régions et configurez une connexion aux outils de base de données dans ORD pour la connexion à la base de données dans PHX.

Exemple de base de données interlocation : Vous pouvez vous connecter à une base de données située dans une location différente du service d'agents du service d'intelligence artificielle générative. Exemple :

  • Le service d'agent s'exécute dans la location A dans la région ORD.

  • La base de données de base Oracle ou Oracle Autonomous Database avec un accès 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 (DRG) dans les deux locations et configurez une connexion aux outils de base de données dans la location A (région OR) pour la connexion à la base de données dans la location B (région PHX).

La configuration réseau interlocation 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 relatives à la sécurité de la chambre forte

Une chambre forte dans le service de chambre forte OCI est requise 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 la chambre forte dans le même compartiment que la connexion aux outils de base de données. Cela s'applique aux bases de données de la même région que le service d'agents d'IA générative et aux bases de données inter-région ou interlocation.

  1. Créer une chambre forte.
  2. Créez une clé de chiffrement principale.
  3. Dans la chambre forte, créez une clé secrète pour le mot de passe de la base de données.
Exigences 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 un mot de passe de portefeuille. Voir Télécharger des données d'identification de client (portefeuilles).
  2. À partir du fichier zip du 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'intelligence artificielle 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 retourne des résultats de recherche vectorielle à partir des interrogations.

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 fragmenté, si le document est supérieur à 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, s'ils sont disponibles.
Conseil

Vous pouvez créer des intégrations de texte dans l'intelligence artificielle générative OCI.
Fonction de base de données

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

Paramètres d'entrée

  • p_query : Chaîne d'interrogation
  • top_k : Nombre de premiers résultats

Type de valeur renvoyée

  • SYS_REFCURSOR

Conditions requises

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

  • Les champs de retour de 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'intégration pour produire une valeur VECTOR pour chaque contenu. La fonction calcule les distances entre le vecteur d'interrogation et chaque VECTOR, retournant les rangées top_k. Le champ SCORE représente les distances entre le vecteur d'interrogation et VECTOR à partir de BODY.

  • Si les noms de champ de retour de la fonction ne correspondent pas aux noms de champ de la 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 au service d'outils de base de données

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

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

Directives relatives à la connexion à Oracle Base Database 23ai

Les agents d'IA générative peuvent accéder à une base de données de base Oracle 23ai au moyen d'un point d'extrémité privé. 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 sélectionnez 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 enfichables et sélectionnez le nom de la base de données enfichable. Sélectionnez Connexion à la base de données enfichable et copiez la chaîne de connexion au format Longue.

      Exemple de chaîne de connexion avec un 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 le service d'outils de base de données, 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 Base de données de base Oracle.
      2. Sélectionnez le système de base de données, le répertoire de base et la base de données.
      3. Sélectionnez la base de données enfichable.
    • Utilisez l'option Entrer les informations sur la base de données pour une base de données inter-région ou interlocation et entrez les informations de connexion manuellement. Pour Type de connexion, sélectionnez Oracle Database.
  3. Complétez le reste des informations avec les propriétés suivantes :

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

      Assurez-vous que l'utilisateur de base de données dispose des autorisations nécessaires pour exécuter la fonction de base de données qui a été préparée à l'étape 4. Configurez une table de base de données et une fonction, et un rôle approprié lui est affecté. Par exemple, pour l'utilisateur SYS, affectez le rôle SYSDBA.

    • Pour Clé secrète du mot de passe de l'utilisateur, sélectionnez la clé secrète si elle a déjà été 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 la chambre forte que vous avez créée.
    • Pour Chaîne de connexion, collez le format long de la base de données enfichable que vous avez copiée à l'étape 1 de cette procédure.

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

    • Cochez la case Accéder à la base de données au moyen d'un réseau privé.
    • Pour le point d'extrémité privé, effectuez l'une des opérations suivantes :
      • Cliquez sur Sélectionner un point d'extrémité privé et sélectionnez le point d'extrémité.
      • Sélectionnez Créer un point d'extrémité privé et créez le point d'extrémité. Pour Sous-réseau, sélectionnez le sous-réseau privé de la base de données. Assurez-vous de créer le point d'extrémité privé 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 pour créer une connexion sans authentification TLS mutuelle (mTLS).
Directives pour la connexion à Autonomous Database 23ai

Les agents d'IA générative peuvent accéder à une base de données Autonomous Database 23ai au moyen d'un point d'extrémité privé avec une connexion configurée pour l'authentification TLS mutuelle (mTLS). Effectuez ces tâches pour établir une connexion à la 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 des 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 un accès réseau de point d'extrémité privé uniquement) Sous la section Réseau :
      • Adresse IP du point d'extrémité privé
      • URL du point d'extrémité privé
    • Sélectionnez Connexion à la base de données et procédez de la façon suivante :
      • 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 qui nécessite une authentification TLS mutuelle (mTLS) : Téléchargez le portefeuille. Voir Exigences de sécurité de portefeuille à l'étape 3. Configurer les exigences en matière de réseau et de sécurité.
  2. Dans le service d'outils de base de données, 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 sur la base de données pour une base de données inter-région ou interlocation et entrez manuellement la chaîne de connexion. Pour Type de connexion, sélectionnez Oracle Database.
  3. Complétez le reste des informations avec les propriétés suivantes :

    • Pour Nom d'utilisateur, entrez l'utilisateur qui dispose des autorisations 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 du mot de passe de l'utilisateur, sélectionnez la clé secrète si elle a déjà été 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 la chambre forte que vous avez créée.
    • 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 des 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 à accès privé : Réduisez retry_count de 20 à 3, et remplacez l'URL du point d'extrémité privé de l'hôte par l'adresse IP du point d'extrémité privé.

        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 mis à 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 à 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 le point d'extrémité privé :
      • Pour les bases de données à accès public, aucun point d'extrémité privé ne doit être configuré.
      • Pour Accès au point d'extrémité privé uniquement, cochez la case Accéder à la base de données au moyen d'un réseau privé. Sélectionnez ensuite le point d'extrémité privé ou sélectionnez Créer un point d'extrémité privé pour créer un point d'extrémité, en vous assurant d'utiliser le même VCN et le même sous-réseau privé que la base de données.
    • Pour 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 du contenu du portefeuille et la clé secrète du mot de passe du portefeuille, ou sélectionnez-les si vous avez déjà créé les clés secrètes.