Package DBMS_CLOUD_AI

Le package DBMS_CLOUD_AI, avec Select AI, facilite et configure la traduction des invites de langage naturel pour générer, exécuter et expliquer des instructions SQL. Permet également l'extraction de la génération augmentée et des interactions basées sur le langage naturel, y compris le chat avec les LLM.

Prérequis

Une connectivité sortante doit avoir été configurée à l'aide d'une passerelle NAT, par l'administrateur de parc, comme décrit ci-dessous :
  • Créez une passerelle NAT dans le réseau cloud virtuel (VCN) où résident vos ressources Autonomous AI Database en suivant les instructions fournies dans Création d'une passerelle NAT dans la documentation Oracle Cloud Infrastructure.
  • Après avoir créé la passerelle NAT, ajoutez une règle de routage et une règle de sécurité sortante à chaque sous-réseau (dans le VCN) où résident les ressources Autonomous AI Database afin que ces ressources puissent utiliser la passerelle pour obtenir une clé publique à partir de votre instance Azure AD :
    1. Accédez à la page Détails du sous-réseau.
    2. Dans l'onglet Informations sur le sous-réseau, cliquez sur le nom de la table de routage du sous-réseau pour afficher la page Détails de la table de routage correspondante.
    3. Dans la table des règles de routage existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
      • Destination : 0.0.0.0/0
      • Type de cible : passerelle NAT
      • Cible : nom de la passerelle NAT que vous venez de créer dans le VCN

      Si une telle règle n'existe pas, cliquez sur Ajouter des règles de routage et ajoutez une règle possédant ces caractéristiques.

    4. Revenez à la page Détails du sous-réseau.
    5. Dans la table Listes de sécurité du sous-réseau, cliquez sur le nom de la liste de sécurité du sous-réseau pour afficher la page Détails de la liste de sécurité correspondante.
    6. Dans le menu latéral, sous Resources, cliquez sur Egress Rules.
    7. Dans la table des règles sortantes existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
      • Type de destination : CIDR
      • Destination : 0.0.0.0/0
      • Protocole IP : TCP
      • Plage de ports source: 443
      • Plage de ports de destination : Tout

      Si une telle règle n'existe pas, cliquez sur Ajouter des règles sortantes et ajoutez une règle présentant ces caractéristiques.

Les paramètres de proxy HTTP de votre environnement doivent permettre à la base de données d'accéder au fournisseur de services cloud.

Ces paramètres sont définis par l'administrateur de parc lors de la création de l'infrastructure Exadata Cloud@Customer, comme décrit dans Utilisation de la console pour provisionner Exadata Database Service on Cloud@Customer.

Remarques :

La configuration réseau, y compris le proxy HTTP, ne peut être modifiée que jusqu'à ce que l'infrastructure Exadata présente l'état Activation requise. Une fois activé, vous ne pouvez plus modifier ces paramètres.

La configuration d'un proxy HTTP pour une infrastructure Exadata déjà provisionnée nécessite une demande de service (SR) dans My Oracle Support. Pour plus d'informations, reportez-vous à Création d'une demande d'assistance dans My Oracle Support.

Récapitulatif des sous-programmes DBMS_CLOUD_AI

Cette section couvre les sous-programmes DBMS_CLOUD_AI fournis avec Autonomous AI Database.

Sous-programme Description

CREATE_PROFILE Procédure

Cette procédure crée un nouveau profil AI pour traduire les invites en langage naturel en instructions SQL.

Attributs de profil

Fournit des attributs de profil AI que vous pouvez configurer.

DROP_PROFILE Procédure

Cette procédure supprime un profil AI existant.

ENABLE_PROFILE Procédure

Cette procédure permet d'utiliser un profil AI dans la base de données actuelle.

DISABLE_PROFILE Procédure

Cette procédure désactive un profil AI dans la base de données actuelle.

SET_ATTRIBUTE Procédure

Cette procédure définit les attributs de profil AI.

SET_PROFILE Procédure

Cette procédure définit le profil AI pour la base de données actuelle.

Fonction GENERATE

Cette fonction génère une instruction SQL utilisant AI pour traduire.

Fonction GENERATE_SYNTHETIC_DATA

Cette fonction génère des données synthétiques.

Procédure ENABLE_DATA_ACCESS

Cette procédure permet d'activer l'envoi de données à votre LLM.

Procédure DISABLE_DATA_ACCESS

Utilisez cette procédure pour désactiver l'envoi de données à votre LLM.

Procédure CREATE_VECTOR_INDEX

Cette procédure crée un index vectoriel dans la base de données vectorielle spécifiée et l'alimente avec les données d'une banque d'objets à l'aide d'un travail de planificateur asynchrone.

Procédure DROP_VECTOR_INDEX

Cette procédure supprime un index de banque de vecteurs. Il enlève normalement l'objet d'index de banque de vecteurs et supprime la base de données de vecteurs.

Procédure DISABLE_VECTOR_INDEX

Cette procédure désactive un objet d'index vectoriel dans la base de données en cours. Lorsqu'il est désactivé, un profil AI ne peut pas utiliser l'index vectoriel et le système ne charge pas de données dans le magasin de vecteurs.

Procédure ENABLE_VECTOR_INDEX

Cette procédure active ou active un objet d'index vectoriel précédemment désactivé.

Procédure UPDATE_VECTOR_INDEX

Cette procédure met à jour un index de stockage de vecteurs existant avec une valeur spécifiée de l'attribut d'index de vecteurs.

Attributs d'index de vecteur

Fournit des attributs de profil d'index vectoriel que vous pouvez configurer.

Procédure CREATE_CONVERSATION

Cette procédure vous aide à créer une conversation.

Fonction CREATE_CONVERSATION

Cette fonction vous aide à créer une conversation et à utiliser l'ID de conversation dans d'autres procédures.

CREATE_CONVERSATION Attributs

Utilisez les attributs de conversation pour personnaliser vos conversations.

Procédure UPDATE_CONVERSATION

Cette procédure met à jour une procédure existante avec des paramètres spécifiés par l'utilisateur.

Procédure SET_CONVERSATION_ID

Cette procédure définit la prise en charge des conversations dans la session en cours.

Fonction GET_CONVERSATION_ID

Cette procédure vous aide à obtenir le paramètre conversation_id.

Procédure CLEAR_CONVERSATION_ID

Cette procédure vous aide à effacer tous les éléments conversation_id définis dans la session en cours.

Procédure DELETE_CONVERSATION_PROMPT

Cette procédure supprime une invite particulière.

Procédure DROP_CONVERSATION

Cette procédure supprime l'intégralité d'une conversation et ses métadonnées.

Procédure FEEDBACK

Utilisez cette procédure pour améliorer la précision de la génération de requêtes en fournissant un retour à Select AI.

Index de vecteur pour FEEDBACK

Il s'agit d'un index vectoriel par défaut créé lors de la première utilisation de feedback.

CREATE_PROFILE Procédure

La procédure crée un nouveau profil AI pour traduire les invites en langage naturel en instruction SQL.

Syntaxe

DBMS_CLOUD_AI.CREATE_PROFILE
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI. Le nom du profil doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de profil est de 125 caractères.

Ce paramètre est obligatoire.

attributes

Attributs de profil au format JSON. Pour plus d'informations, reportez-vous à Attributs de profil AI.

Valeur par défaut : NULL.

status

Statut du profil.

La valeur par défaut est Activer.

description

Description du profil AI.

Valeur par défaut : NULL.

Exemple

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

Attributs de profil

Les attributs d'un profil AI permettent de gérer et de configurer le comportement du profil AI. Certains attributs sont facultatifs et ont une valeur par défaut.

Attributs

Nom d'attribut Description

azure_deployment_name

Nom du modèle déployé de service OpenAI Azure. Le nom ne peut inclure que des caractères alphanumériques, un trait de soulignement (_) et un tiret (-). Le nom ne peut pas se terminer par un trait de soulignement (_) ou un trait d'union (-). Pour savoir comment obtenir azure_deployment_name, reportez-vous à Création et déploiement d'une ressource de service OpenAI Azure.

azure_resource_name

Nom de la ressource de service OpenAI Azure. Le nom de la ressource peut uniquement inclure des caractères alphanumériques et des tirets, et ne peut pas commencer ni se terminer par un tiret. Pour savoir comment obtenir azure_resource_name, reportez-vous à Création et déploiement d'une ressource de service OpenAI Azure.

comments

Incluez les commentaires de colonne dans les métadonnées utilisées pour traduire les invites en langage naturel à l'aide du programme AI. Le type de données BOOLEAN est pris en charge. Les valeurs valides sont TRUE ou FALSE pour une chaîne avec le type de données VARCHAR2.

Remarques :

Les valeurs booléennes ne sont pas applicables dans la procédure DBMS_CLOUD_AI.SET_ATTRIBUTE lors de la définition d'un attribut unique car le paramètre attribute_value est de type de données CLOB.

conversation

Attribut VARCHAR2 indiquant si l'historique des conversations est activé pour un profil. Seuls OpenAI et le service OpenAI Azure prennent en charge l'historique des conversations. Les valeurs valides sont true et false. Valeur par défaut : false. Les valeurs ne respectent pas la casse.

credential_name

Nom des informations d'identification permettant d'accéder aux API du fournisseur AI.

Vous pouvez créer des informations d'identification à l'aide de jetons de porteur en utilisant le nom de fournisseur comme nom d'utilisateur et le jeton de porteur comme mot de passe.

Il s'agit d'un attribut obligatoire. Reportez-vous à Procédure CREATE_CREDENTIAL.

embedding_model

Modèle d'intégration défini dans le profil AI. Les fournisseurs d'IA pris en charge pour l'intégration de modèles avec leurs valeurs par défaut sont les suivants :

  • OCI GenAI : cohere.embed-english-v3.0
  • OpenAI: text-embedding-ada-002
  • Azure OpenAI : text-embedding-ada-002
  • Cohere : embed-english-v2.0
  • Google : text-embedding-004

Remarques :

Le paramètre embedding_model n'est pas applicable pour Anthropic et Hugging Face.

max_tokens

Indique le nombre de sèmes à prévoir par génération. La valeur par défaut est 1024. Pour plus d'informations, reportez-vous à Jetons et jetons.

model

Nom du modèle AI utilisé pour générer les réponses.

Modèles pris en charge pour :

  • OpenAI : gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo (par défaut), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere : commande (par défaut), commande-nuit (expérimentale), commande-lumière et commande-lumière-nuit (expérimentale). Les modèles plus petits et "légers" sont plus rapides, tandis que les modèles plus grands fonctionnent mieux.Les modèles personnalisés peuvent également être fournis avec leur ID complet.
  • OCI Generative AI : pour OCI Generative AI : cohere.command (par défaut). Les modèles préentraînés pour OCI Generative AI sont tous pris en charge par Select AI. Les modèles personnalisés peuvent également être fournis avec leurs OCID complets.

    Pour en savoir plus sur les modèles pris en charge dans OCI Generative AI, reportez-vous à Modèles de base préentraînés dans Generative AI.

  • AWS : les modèles de fondation Amazon Bedrock nécessitent des autorisations d'accès via la console Amazon Bedrock. Reportez-vous à la documentation AWS pour obtenir le fichier modelID.

Remarques :

Ce paramètre n'est pas utilisé pour Azure car le modèle est déterminé lorsque vous créez votre déploiement dans le portail Service OpenAI Azure.

object_list

Tableau d'objets JSON indiquant le propriétaire et les noms d'objet éligibles pour la traduction en langage naturel en SQL. Pour inclure tous les objets d'un utilisateur donné, omettez le "nom" et indiquez uniquement la clé "propriétaire" dans l'objet JSON.

Pour la traduction du langage naturel en langage SQL, le nom de l'objet, le propriétaire de l'objet, les colonnes d'objet et les commentaires sont envoyés au fournisseur AI à l'aide de demandes HTTPS. Evitez de spécifier des objets avec un nom d'objet sensible, des noms de colonne ou des commentaires dans la liste d'objets.

Les fournisseurs d'IA peuvent avoir une limite sur la taille des métadonnées autorisées dans les demandes de traduction. Envisagez de limiter la liste des objets adaptés aux invites en langage naturel par les utilisateurs de l'application.

Format:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

Indique l'OCID du compartiment auquel vous êtes autorisé à accéder lors de l'appel du service OCI Generative AI. L'ID de compartiment peut contenir des caractères alphanumériques, des tirets et des points.

La valeur par défaut est l'ID de compartiment de la base de données AI autonome.

oci_endpoint_id

Cet attribut indique l'OCID d'adresse du cluster d'hébergement d'IA dédié Oracle. L'ID d'adresse peut contenir des caractères alphanumériques, des tirets et des points. Pour rechercher l'OCID d'adresse, reportez-vous à Obtention des détails d'une adresse dans Generative AI.

Pour utiliser le cluster d'IA dédié Oracle, vous devez fournir l'OCID d'adresse du cluster d'hébergement.

Par défaut, l'ID d'adresse est vide et le modèle est à la demande sur une infrastructure partagée.

oci_runtimetype

Cet attribut indique le type d'exécution du modèle fourni. Cet attribut est requis lorsque l'attribut model est spécifié et est applicable aux modèles de génération OCI.

Toutes les valeurs autorisées sont disponibles dans OCI Generative AI runtimeType. Reportez-vous à Référence LlmInferenceRequest.

Les valeurs prises en charge sont les suivantes :
  • COHERE
  • LLAMA

provider

Fournisseur d'IA pour le profil d'IA.

Fournisseurs pris en charge :

  • openai
  • cohere
  • azur
  • oci
  • Google
  • anthropique
  • visage câlin
  • aws

Il s'agit d'un attribut obligatoire.

region

Cet attribut indique l'emplacement du cluster Generative AI que vous souhaitez utiliser. La région peut contenir des caractères alphanumériques et des tirets.

Remarques :

Le cluster d'IA générative Oracle est disponible dans les régions de Chicago, Francfort et Londres. Reportez-vous à Modèles de base préentraînés dans Generative AI.
La région par défaut est us-chicago-1.

La région par défaut pour AWS est us-east-1.

stop_tokens

Le texte généré se terminera au début de la séquence d'arrêt la plus ancienne. La séquence sera incorporée dans le texte. La valeur d'attribut doit être un tableau valide de valeurs de chaîne au format JSON. stop_tokens prend un tableau JSON en entrée. Pour en savoir plus sur les jetons d'arrêt ou les séquences d'arrêt, reportez-vous à la documentation OpenAI ou Cohere.

temperature

L'échantillonnage à partir des modèles Générer du texte intègre le caractère aléatoire, de sorte que la même invite peut générer des sorties différentes chaque fois que vous cliquez sur "Générer". La température est un nombre flottant non négatif utilisé pour régler le degré d'aléatoire. Des températures plus basses signifient des générations moins aléatoires. Pour plus d'informations, reportez-vous à la section Temperature. Ce paramètre est applicable à tous les fournisseurs de services pris en charge.

L'exemple suivant utilise Cohere comme fournisseur et affiche des attributs de profil personnalisés :
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

L'exemple suivant présente les attributs de profil personnalisés utilisant OCI Generative AI :

BEGIN                                                                        
  DBMS_CLOUD_AI.CREATE_PROFILE(                                              
      profile_name => 'GENAI',                                                             
      attributes => '{"provider": "oci",                                                                   
        "credential_name": "GENAI_CRED",                                     
        "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"            
       }');                                                                  
END;                                                                         
/ 

DROP_PROFILE Procédure

La procédure supprime un profil AI existant. Si le profil n'existe pas, la procédure génère une erreur.

Syntaxe

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

Paramètres

Paramètre Description

profile_name

Nom du profil AI

force

Si TRUE, la procédure ignore les erreurs si le profil AI n'existe pas.

La valeur par défaut de ce paramètre est FALSE.

Exemple

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

Remarques sur l'utilisation

Utilisez force pour supprimer un profil et ignorer les erreurs si le profil AI n'existe pas.

ENABLE_PROFILE Procédure

Cette procédure active le profil AI spécifié par l'utilisateur. La procédure modifie le statut du profil AI en ENABLED.

Syntaxe

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Paramètres

Paramètre Description

profile_name

Nom du profil AI à activer

Ce paramètre est obligatoire.

Exemple d'activation du profil AI

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

DISABLE_PROFILE Procédure

Cette procédure désactive le profil AI dans la base de données actuelle. Le statut du profil AI est remplacé par DISABLED par cette procédure.

Syntaxe

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI.

Ce paramètre est obligatoire.

Exemple

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

SET_ATTRIBUTE Procédure

Cette procédure vous permet de définir des attributs de profil AI.

Syntaxe

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

Paramètres

Seul le propriétaire peut définir ou modifier les attributs du profil AI. Pour obtenir une liste des attributs pris en charge, reportez-vous à la section Profile Attributes.

Paramètre Description

profile_name

Nom du profil AI pour lequel vous voulez définir les attributs.

Ce paramètre est obligatoire.

attribute_name

Nom de l'attribut de profil AI

Ce paramètre est obligatoire.

attribute_value

Valeur de l'attribut de profil.

Valeur par défaut : NULL.

Exemple

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

SET_PROFILE Procédure

Cette procédure définit le profil AI pour la session en cours.

Après avoir défini un profil AI pour la session de base de données, toute instruction SQL avec le préfixe SELECT AI est considérée comme une invite en langage naturel. En fonction de l'action indiquée avec le préfixe AI, une réponse est générée à l'aide du programme d'installation automatisée. Pour utiliser le préfixe AI, reportez-vous à Utilisation du mot-clé AI pour saisir des invites. Vous pouvez éventuellement remplacer les attributs de profil ou les modifier en les spécifiant au format JSON. Pour définir les attributs, reportez-vous à Procédure SET_ATTRIBUTE.

Le profil AI peut uniquement être défini pour la session en cours si le propriétaire du profil AI est l'utilisateur de la session.

Pour définir un profil AI pour toutes les sessions d'un utilisateur de base de données spécifique ou pour toutes les sessions utilisateur de la base de données, envisagez d'utiliser un déclencheur d'événement de base de données pour l'événement AFTER LOGON sur l'utilisateur spécifique ou sur l'ensemble de la base de données. Pour plus d'informations, reportez-vous à Instruction CREATE TRIGGER dans Référence de langage PL/SQL Database Oracle Database 19c ou Référence de langage PL/SQL Oracle Database 26ai Database.

Syntaxe

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI dans la session en cours.

Ce paramètre est obligatoire.

Exemple


   BEGIN
        DBMS_CLOUD_AI.SET_PROFILE(
          profile_name    => 'OPENAI'
        );
   END;
   /

Fonction GENERATE

Cette fonction fournit une traduction AI sans conservation de statut. Avec votre profil AI existant, vous pouvez utiliser cette fonction pour effectuer les actions prises en charge, telles que showsql, narrate ou chat. L'action par défaut est showsql.

Le remplacement de tout ou partie des attributs de profil est également possible à l'aide de cette fonction.

Syntaxe

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Paramètres

Paramètre Description

prompt

Invite de langage naturel à traduire à l'aide de l'IA.

L'invite peut inclure SELECT AI <action> comme préfixe. L'action peut également être fournie séparément en tant que paramètre "action". Le paramètre action fourni dans l'invite remplace le paramètre "action". L'action par défaut est showsql.

Ce paramètre est obligatoire.

profile_name

Nom du profil AI. Ce paramètre est facultatif si un profil AI est déjà défini dans la session à l'aide de DBMS_CLOUD_AI.SET_PROFILE.

Valeur par défaut : NULL.

Les conditions suivantes s'appliquent :
  • Si un profil est défini dans la session en cours, l'utilisateur peut omettre l'argument profile_name dans la fonction DBMS_CLOUD_AI.GENERATE.
  • Si l'argument profile_name est fourni dans la fonction DBMS_CLOUD_AI.GENERATE, il remplace toute valeur définie dans la session à l'aide de la procédure DBMS_CLOUD_AI.SET_PROFILE.
  • Si aucun profil n'est défini dans la session à l'aide de la procédure DBMS_CLOUD_AI.SET_PROFILE, l'argument profile_name doit être fourni dans la fonction DBMS_CLOUD_AI.GENERATE.

Remarques :

Pour Database Actions, vous pouvez indiquer l'argument profile_name dans DBMS_CLOUD_AI.GENERATE ou exécuter deux étapes en tant que script PL/SQL : DBMS_CLOUD_AI.SET_PROFILE et DBMS_CLOUD_AI.GENERATE.
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
Pour plus d'informations, reportez-vous à Exécution d'instructions SQL dans l'éditeur de code.
action

Action permettant de traduire une invite naturelle à l'aide de l'IA. Les actions prises en charge sont showsql (par défaut), narrate et chat. Les descriptions des actions sont incluses dans Utilisation de mots-clés AI pour saisir des invites.

Remarques :

Cette fonction ne prend pas en charge l'action runsql. Si vous fournissez l'action runsql, elle renvoie l'erreur suivante :
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes Remplacer des attributs de profil AI spécifiques en fournissant des attributs au format JSON. Pour plus d'informations, reportez-vous à Attributs de profil.

Exemples 

Les exemples suivants illustrent les actions showsql, narrate et chat qui peuvent être utilisées avec la fonction DBMS_CLOUD_AI.GENERATE.

Voici un exemple avec l'action showsql :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

Voici un exemple avec l'action narrate :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

Voici un exemple avec l'action chat :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

Fonction GENERATE_SYNTHETIC_DATA

Cette procédure permet de générer des données synthétiques pour une seule table, plusieurs tables ou un schéma complet.

La syntaxe suivante permet de générer des données synthétiques pour une seule table.

Syntaxe

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_name         IN  DBMS_ID,
  owner_name          IN  DBMS_ID,
  record_count        IN  NUMBER,
  user_prompt         IN  CLOB DEFAULT NULL,
  params              IN  CLOB DEFAULT NULL
);

La syntaxe suivante permet de générer des données synthétiques pour plusieurs tables.

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_list         IN  CLOB,
  params              IN  CLOB DEFAULT NULL
);

Si vous ne voulez pas que les données de table ou les documents de recherche vectorielle soient envoyés à un LLM, un utilisateur disposant de privilèges d'administrateur peut désactiver cet accès pour tous les utilisateurs de la base de données donnée. Cela désactive en effet l'action narrate.

Paramètres

Paramètre Obligatoire Description

profile_name

Oui

Profil AI contenant les informations de service LLM nécessaires. Cette opération peut être créée par la procédure CREATE_PROFILE.

object_name

Oui Indiquez un nom de table pour alimenter les données synthétiques.
  • Les privilèges SELECT et INSERT sur les objets de table sont nécessaires à l'utilisateur qui les utilise.
  • La table est vide ou contient des enregistrements.
owner_name No

Indiquez l'utilisateur de base de données propriétaire de l'objet référencé. Si aucun propriétaire spécifique n'est fourni, la procédure utilise par défaut le schéma de l'utilisateur qui l'exécute.

record_count No

Nombre d'enregistrements devant être générés de manière synthétique.

user_prompt

No Informations supplémentaires qu'un utilisateur peut mentionner pour générer des données synthétiques. Par exemple, pour générer un enregistrement pour une table appelée MOVIE avec une colonne release_date, user_prompt peut être :

la date de sortie des films devrait être en 2019

params

No

Attributs facultatifs fournis au format de chaîne d'objet JSON pour modifier le comportement d'une API. Reportez-vous à Paramètres facultatifs.

object_list

Oui Utilisez ce paramètre pour générer des données synthétiques sur plusieurs tables. Ce paramètre prend des informations sur les objets de table avec ses arguments et contient les mêmes arguments que ceux fournis dans la table unique. Reportez-vous à Paramètres object_list.

Paramètres facultatifs

Paramètre Type de données de valeur Value Description

sample_rows

Chiffre

0 <= sample_rows <= 100

Indiquez le nombre de lignes de la table à utiliser comme exemple pour guider le LLM dans la génération de données.

La valeur 0 signifie qu'aucune ligne d'exemple ne sera utilisée. La valeur par défaut est 0.

table_statistics

Booléen

  • True
  • False

Activez ou désactivez l'utilisation des informations de statistiques de table.

La valeur par défaut est False.

priority

Chaîne

Valeurs valides :

  • HIGH
  • MEDIUM
  • LOW

Affectez une valeur de priorité qui définit le nombre de demandes parallèles envoyées au LLM pour générer des données synthétiques. Les tâches avec une priorité plus élevée consommeront plus de ressources de base de données et se termineront plus rapidement.

La valeur par défaut est HIGH

  • HIGH : indique le nombre de demandes LLM parallèles en fonction du nombre d'ECPU de la base de données (ou du nombre d'OCPU si votre base de données utilise des OCPU).

  • MEDIUM : définit le nombre de processus simultanés en fonction de la limite de simultanéité pour le service moyen. La valeur par défaut est 4.

  • LOW : exécute le travail de pipeline dans un ordre de série, sans traitement parallèle.

Le nombre maximum de traitements parallèles simultanés utilisés pour la génération de données synthétiques est limité à 64.

comments

Booléen
  • True
  • False

Activer ou désactiver l'envoi de commentaires au LLM pour guider la génération des données.

La valeur par défaut est False.

Paramètres object_list

Paramètre Type de données de valeur Obligatoire Description

owner

Chaîne

Oui

Indique l'utilisateur de base de données propriétaire de l'objet référencé. Si aucun propriétaire spécifique n'est fourni, la procédure utilise par défaut le schéma de l'utilisateur qui l'exécute.

name

Chaîne

No

Indiquez un nom de table pour alimenter les données synthétiques. Les privilèges SELECT et INSERT sur les objets de table sont nécessaires pour que l'utilisateur qui utilise la table it.The soit vide, soit qu'il y ait des enregistrements.

record_count

Chiffre

No

Nombre d'enregistrements devant être générés de manière synthétique. Indiquez un nombre supérieur à 0.

Fournissez record_count ou record_count_percentage.

record_count_percentage

Chiffre

No

Pourcentage du nombre d'enregistrements à générer synthétiquement. Indiquez un nombre supérieur à 0.

Pour une base de données de clone de métadonnées, où les métadonnées de table, y compris les statistiques, sont conservées, le paramètre record_count_percentage est pris en charge.

Fournissez record_count ou record_count_percentage.

Lorsque vous utilisez le paramètre record_count_percentage, le nombre d'enregistrements finaux dans la table est calculé comme suit :
Original_Num_Rows *
      record_count_percentage

user_prompt

Chaîne No Identique à user_prompt dans Paramètres. user_prompt est associé à un objet de table spécifique.

Exemples 

Les exemples suivants illustrent la fonction DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA permettant de générer des données synthétiques pour une seule table et plusieurs tables. Pour obtenir un exemple complet et voir d'autres exemples, reportez-vous à la section .

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_name  => 'Director',
        owner_name   => 'ADB_USER',
        record_count => 5
    );
END;
/
PL/SQL procedure successfully completed.
BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "Director","record_count":5},
                         {"owner": "ADB_USER", "name": "Movie_Actor","record_count":5},
                         {"owner": "ADB_USER", "name": "Actor","record_count":10},
                         {"owner": "ADB_USER", "name": "Movie","record_count":5,"user_prompt":"all movies are released in 2009"}]'
    );
END;
/
PL/SQL procedure successfully completed.

Procédure ENABLE_DATA_ACCESS

Cette procédure permet d'envoyer des données au LLM pour les fonctionnalités Select AI applicables, qui est le comportement par défaut. Seul un administrateur peut exécuter cette procédure.

Cette procédure contrôle l'accès aux données pour les fonctionnalités Select AI suivantes :

  • Action narrate
  • Génération augmentée de récupération (RAG).
  • Génération de données synthétiques

Syntaxe

DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();

Paramètres

Cette procédure ne nécessite aucun paramètre.

Exemple d'activation de l'accès aux données

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

Procédure DISABLE_DATA_ACCESS

Cette procédure désactive l'envoi de données au LLM pour les fonctionnalités Select AI applicables. Seul un administrateur peut exécuter cette procédure.

Cette procédure limite les fonctionnalités Select AI suivantes :

  • Action narrate
  • Génération augmentée de récupération (RAG).
  • Génération de données synthétiques

Syntaxe

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

Paramètres

Cette procédure ne nécessite aucun paramètre.

Exemple de désactivation de l'accès aux données

BEGIN
  DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/

Procédure CREATE_VECTOR_INDEX

Cette procédure crée un index vectoriel dans la base de données vectorielle spécifiée et l'alimente avec les données d'une banque d'objets à l'aide d'un travail de planificateur asynchrone.

Syntaxe

PROCEDURE CREATE_VECTOR_INDEX(                                              
   index_name          IN  VARCHAR2,                                        
   attributes          IN  CLOB      DEFAULT NULL,                          
   status              IN  VARCHAR2  DEFAULT NULL,                          
   description         IN  CLOB      DEFAULT NULL                           
); 

Paramètres

Paramètre Description

index_name

Nom de l'index de vecteur. Le nom de l'index vectoriel doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de banque de vecteurs est de 125 caractères.

Ce paramètre est obligatoire.

attributes

Attributs personnalisés pour l'index vectoriel dans JSON. Pour afficher la liste des paramètres configurables, reportez-vous à la section Vector Index Attributes.

Valeur par défaut : NULL.

status
Statut de l'index vectoriel. Les valeurs possibles sont les suivantes :
  • Enabled
  • Disabled

La valeur par défaut est Désactivé.

description

Description de l'index vectoriel.

Valeur par défaut : NULL.

Exemple

L'exemple suivant montre comment créer un index vectoriel et configurer les attributs en tant que paramètres JSON.

BEGIN                                                                
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                 
            index_name    => 'MY_INDEX'                                   
            attributes    => JSON_OBJECT(                                 
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',              
                       'profile_name'      value 'OCIGENAI',         
                       'location'          value                          
                         'https://objectstorage.us-phoenix-1.' ||         
                         'oraclecloud.com/n/mynamespace/b/mybucket',      
                       'object_store_credential_name'   value 'OS_CRED',              
                       'chunk_size'        value 2048,                    
                       'chunk_overlap'     value 256,                     
                       'refresh_rate'      value 720)                     
       );                                                                 
END;                                                                 
/

Procédure DROP_VECTOR_INDEX

Cette procédure supprime un index de banque de vecteurs. Il supprime normalement l'objet d'index de banque de vecteurs et supprime la banque de vecteurs. Si la valeur est FALSE, l'argument include_data garantit que la procédure supprime uniquement l'objet d'index de banque de vecteurs tout en conservant la banque de vecteurs.

Syntaxe

PROCEDURE DROP_VECTOR_INDEX(                                                
   index_name          IN  VARCHAR2,           
   include_data        IN  BOOLEAN DEFAULT TRUE,                            
   force               IN  BOOLEAN DEFAULT FALSE                           
);

Paramètres

Paramètre Description

index_name

Nom de l'index de vecteur. Le nom de l'index vectoriel doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de banque de vecteurs est de 125 caractères.

Ce paramètre est obligatoire.

include_data

Indique si l'index vectoriel et l'index vectoriel du client doivent être supprimés avec l'objet d'index vectoriel.

Valeurs possibles :

  • TRUE
  • FALSE

La valeur par défaut est TRUE.

force

Indique si les erreurs qui se produisent doivent être ignorées si l'index vectoriel n'existe pas.

Valeurs possibles :

  • TRUE
  • FALSE

Si la valeur est TRUE, ce paramètre ignore les erreurs qui se produisent si l'index de vecteur n'existe pas.

La valeur par défaut est FALSE.

Exemple

BEGIN
DBMS_CLOUD_AI.DROP_VECTOR_INDEX(
        index_name     => 'MY_INDEX',
        include_data   => FALSE,
        force          => TRUE
     );                                                                 
END;                                                                 
/

Procédure DISABLE_VECTOR_INDEX

Cette procédure désactive un objet d'index vectoriel dans la base de données en cours. Lorsqu'il est désactivé, un profil AI ne peut pas utiliser l'index vectoriel et le système ne charge pas de données dans le magasin de vecteurs car de nouvelles données sont ajoutées à la banque d'objets et n'effectue pas d'indexation, de recherche ou d'interrogation en fonction de l'index.

Syntaxe

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Paramètres

Paramètre Description

index_name

Nom de l'index de vecteur. Le nom de l'index vectoriel doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de banque de vecteurs est de 125 caractères.

Ce paramètre est obligatoire.

Exemple

Vous pouvez désactiver un index vectoriel en indiquant le nom de l'index vectoriel.

BEGIN                                                                
   DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

Procédure ENABLE_VECTOR_INDEX

Cette procédure active ou active un objet d'index vectoriel précédemment désactivé. En général, lorsque vous créez un index vectoriel, il est activé par défaut de sorte que le profil AI puisse l'utiliser pour effectuer une indexation et une recherche.

Lorsqu'il est activé, un index vectoriel permet à un profil AI de l'utiliser pour charger de nouvelles données à partir d'une banque d'objets dans une banque de vecteurs à un taux d'actualisation spécifié par l'utilisateur. Vous pouvez indiquer le paramètre refresh_rate via la liste d'objets JSON. Pour configurer les attributs JSON, reportez-vous à Attributs d'index vectoriel.

Syntaxe

DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Paramètres

Paramètre Description

index_name

Nom de l'index de vecteur. Le nom de l'index vectoriel doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de banque de vecteurs est de 125 caractères.

Ce paramètre est obligatoire.

Exemple

Vous pouvez activer ou activer un index vectoriel en indiquant le nom de l'index vectoriel comme suit :

BEGIN                                                                
   DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

Procédure UPDATE_VECTOR_INDEX

Cette procédure met à jour un index de stockage de vecteurs existant avec une valeur spécifiée de l'attribut d'index de vecteurs.
Il est surchargé pour accepter :
  • valeurs d'attribut de différents types.
  • attributs d'index vectoriel en tant que document JSON et met à jour les attributs d'un index de stockage vectoriel existant avec le nom d'attribut et la paire de valeurs indiqués.

Syntaxe

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
   index_name         IN  VARCHAR2,
   attributes         IN  CLOB
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
     index_name         IN  VARCHAR2,
     attribute_name     IN  VARCHAR2,
     attribute_value    IN  VARCHAR2
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                                 
     index_name         IN  VARCHAR2,                                         
     attribute_name     IN  VARCHAR2,                                         
     attribute_value    IN  CLOB     DEFAULT NULL                           
  );

Paramètres

Paramètre Description

index_name

Nom de l'index de vecteur. Le nom de l'index vectoriel doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de banque de vecteurs est de 125 caractères.

Ce paramètre est obligatoire.

attributes

Spécifie les attributs d'index vectoriel au format JSON.

Ce paramètre est obligatoire.

attribute_name

Nom des attributs personnalisés indiqués en tant que paramètres JSON dans la procédure CREATE_VECTOR_INDEX.

Vous ne pouvez pas modifier les attributs suivants :

  • location
  • vector_table_name
  • chunk_size
  • chunk_overlap
  • vector_distance_metric
  • vector_dimension

Ce paramètre est obligatoire.

attribute_value

Valeur indiquée par l'utilisateur pour le fichier attribute_name personnalisé. La valeur peut être de type CLOB, NUMBER ou VARCHAR2.

Valeur par défaut : NULL.

Remarques :

Utilisez le paramètre attributes pour indiquer les paires attribute_name et valeur au format JSON ou les paramètres attribute_name et attribute_value ensemble.

Exemples 

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'object_storage_credential_name',                
      attribute_value  => 'NEW_CRED'                           
   );                                                                 
END;                                                                 
/

L'exemple suivant accepte le type NUMBER en tant que attribute_value.

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'match_limit',                
      attribute_value  => 10                           
   );                                                                 
END;                                                                 
/

L'exemple suivant accepte le type VARCHAR2 en tant que attribute_value.

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'profile_name',                
      attribute_value  => 'AI_PROF2'                           
   );                                                                 
END;                                                                 
/

L'exemple suivant accepte attributes au format JSON.

BEGIN
  DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
    index_name => 'MY_VECTOR_INDEX', 
    attributes => '{"match_limit": 10, 
                    "refresh_rate": 30}'
  );
END;
/

Attributs d'index de vecteur

Les attributs d'un index vectoriel permettent de gérer et de configurer le comportement de l'index vectoriel. Vous pouvez ajouter des attributs d'index personnalisés si nécessaire. Certains attributs sont facultatifs et ont une valeur par défaut.

Attributs

Nom d'attribut Value Obligatoire Description
chunk_size 1024 (valeur par défaut) No

Taille de texte du découpage des données d'entrée.

Pour les données de texte, cela signifie le nombre de caractères.

chunk_overlap 128 (valeur par défaut) No

Indique la quantité de caractères qui se chevauchent entre des blocs de texte adjacents. Cet attribut est utile pour assurer la continuité contextuelle et la précision du traitement du texte en autorisant les chevauchements entre les segments, ce qui permet d'éviter la perte d'informations contextuelles aux limites des blocs.

location

S/O Oui

Ce paramètre spécifie l'URI ou les répertoires du fichier source et les fichiers source.

Les modèles de caractères génériques sont pris en charge pour les URI de fichier source et les répertoires.

URI de fichier source cloud :

Vous pouvez indiquer un URI de fichier source pour le bucket ou le sous-dossier. Vous pouvez utiliser des caractères génériques pour indiquer des sous-dossiers ou des noms de fichier. Le caractère "*" peut être utilisé comme un caractère générique pour plusieurs caractères et le caractère "?" peut être utilisé comme un caractère générique pour un seul caractère.

Exemple avec des caractères génériques :

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

Le format des URI dépend du service Cloud Object Storage que vous utilisez. Pour en savoir plus, reportez-vous àFormats d'URI de stockage d'objet cloud.

Répertoire:

Vous pouvez indiquer un répertoire et un nom de fichier. Le format pour spécifier un répertoire est : MY_DIR:filename.ext. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne tient pas compte de la casse. Ce nom de fichier distingue les majuscules des minuscules.

Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère * peut être utilisé en tant que caractère générique pour plusieurs caractères, et le caractère ? peut être utilisé comme générique pour un seul caractère. Par exemple : MY_DIR:* ou MY_DIR:test?.

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple : "my_dir1":*, "my_dir2":Test?

Pour inclure un guillemet, utilisez deux guillemets. Par exemple : MY_DIR:''filename.ext. Cela indique que le nom du fichier commence par un guillemet (').

Les fichiers de cet emplacement peuvent être des documents dans des formats tels que PDF, DOC, JSON, XML ou HTML. Reportez-vous à Formats de document pris en charge.

match_limit

5 (valeur par défaut) No

Indique le nombre maximal de résultats à renvoyer dans une requête de recherche vectorielle, ce qui permet de contrôler la taille de la sortie et d'améliorer l'efficacité des opérations d'extraction de données.

object_storage_credential_name

S/O Oui

Indique le nom des informations d'identification permettant d'accéder à un stockage d'objet.

pipeline_name

<vector_index_name>$VECPIPELINE No

Indique le nom du pipeline de chargement de données d'index vectoriel. Cet attribut est automatiquement défini pour l'index vectoriel, vous ne pouvez pas le spécifier ni le modifier. Le nom de pipeline peut être utilisé pour surveiller le chargement des données d'index vectoriel à l'aide de Surveiller et dépanner les pipelines.

profile_name

S/O Oui

Nom du profil d'IA utilisé pour le plongement des données source et des invites utilisateur.

refresh_rate

1440 minutes (par défaut) No

Intervalle de mise à jour des données dans la banque de vecteurs. L'unité est en minutes.

similarity_threshold

0 (valeur par défaut) No

Définit le niveau minimal de similarité requis pour que deux éléments soient considérés comme une correspondance. Utile pour filtrer les résultats dans les algorithmes de correspondance afin de garantir leur pertinence.

vector_distance_metric

Chaîne correspondant à l'une des valeurs indiquées dans la description.

No

Indique le type de calcul de distance utilisé pour comparer les vecteurs d'une base de données, en déterminant comment la similarité entre les éléments est quantifiée.

Valeurs valides pour Oracle 23ai :

  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE (par défaut)
  • DOT
  • MANHATTAN
  • HAMMING

vector_db_provider

oracle

Oui

Spécifie le nom du fournisseur qui gère et sert de banque de vecteurs.

vector_dimension

S/O No

Spécifie le nombre d'éléments dans chaque vecteur dans le magasin de vecteurs, définissant la taille et la structure de la représentation de données.

vector_table_name

<vector_index_name>$VECTAB (par défaut)

No

Spécifie le nom de la table ou de la collection pour stocker les incorporations vectorielles et les données découpées en blocs.

Exemple : Indiquer l'emplacement de l'URI Object Storage
L'exemple suivant illustre la création d'un index vectoriel avec la banque de vecteurs OCI Generative AI.
BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
         index_name  => 'MY_INDEX',
         attributes  => '{"vector_db_provider": "oracle",
                          "location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
                          "object_storage_credential_name": "OCI_CRED",
                          "profile_name": "OPENAI_ORACLE",
                          "vector_dimension": 1024,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/                                                                 
/
Exemple : spécification de l'emplacement de l'URI Object Storage avec un modèle de caractère générique

Cet exemple spécifie un modèle de caractère générique (*) dans l'URI Object Storage en tant que paramètre location. Il charge tous les fichiers CSV à partir de l'URI Object Storage.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'https://objectstorage.myregion.oraclecloud.com/n/my$namespace/b/bucketname/o/year=????/month=??/file*.csv)',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Exemple : spécification d'un emplacement d'objet de répertoire avec un modèle avec caractères génériques

Cet exemple spécifie les objets de répertoire dans le paramètre location à l'aide d'un modèle de caractère générique. Il charge tous les fichiers CSV dans le répertoire MY_DIR.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'MY_DIR:*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Exemple : spécification de l'emplacement de l'objet de répertoire sensible à la casse avec un modèle avec caractères génériques

Cet exemple indique un objet de répertoire sensible à la casse dans le paramètre location à l'aide d'un modèle de caractère générique. Il charge tous les fichiers CSV dans le répertoire My_Dir.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value '"My_Dir":*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Exemple : spécification d'un objet de répertoire sensible à la casse avec tous les fichiers en tant que modèle avec caractères génériques

Cet exemple indique un objet de répertoire sensible à la casse dans le paramètre location à l'aide d'un modèle de caractère générique (*). Il charge tous les fichiers situés dans le répertoire My_Dir.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value '"My_Dir":*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
Exemple : spécification d'une correspondance de nom de fichier dans l'objet de répertoire

Cet exemple indique un objet de répertoire et utilise un préfixe de nom de fichier, tel que test, dans le paramètre location. Il charge tous les fichiers du répertoire MY_DIR dont le nom commence par test.

BEGIN                                                               
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                
            index_name    => 'MY_INDEX',                                  
            attributes    => JSON_OBJECT(                                
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',             
                       'profile_name'      value 'OCIGENAI',        
                       'location'          value 'MY_DIR:test*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/

Procédure CREATE_CONVERSATION

Cette procédure vous permet de créer une conversation et de définir automatiquement conversation_id dans la procédure.

Remarques :

Si vous utilisez la procédure DBMS_CLOUD_AI.CREATE_CONVERSATION, vous pouvez ignorer la définition de conversation_id car la procédure la définit automatiquement.

Syntaxe

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
);

Paramètres

Paramètre Description

attributes

Attributs de conversation au format JSON. Pour plus de détails, reportez-vous à Attributs CREATE_CONVERSATION.

Valeur par défaut : NULL.

Exemple

Exemple : création d'une conversation

L'exemple suivant illustre la création d'une conversation sans personnalisation.

EXEC DBMS_CLOUD_AI.CREATE_CONVERSATION;

Résultats :

PL/SQL procedure successfully completed.
Exemple : création d'une conversation avec des attributs personnalisés

L'exemple suivant illustre la création d'une conversation avec des paramètres personnalisés tels que title, description, retention_days et conversation_length.

-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

Fonction CREATE_CONVERSATION

Cette fonction crée une conversation et renvoie son conversation_id qui peut être utilisé dans d'autres procédures ou fonctions telles que DBMS_CLOUD_AI.SET_CONVERSATION_ID et DBMS_CLOUD_AI.GENERATE.

Oracle recommande de définir conversation_id pour activer la conversation. Vous pouvez également définir conversation_id dans la fonction DBMS_CLOUD_AI.GENERATE.

Remarques :

Si vous utilisez la procédure DBMS_CLOUD_AI.CREATE_CONVERSATION, vous pouvez ignorer la définition de conversation_id car la procédure la définit automatiquement.

Syntaxe

DBMS_CLOUD_AI.CREATE_CONVERSATION(
  attributes            IN CLOB DEFAULT NULL
) RETURN VARCHAR2;

Paramètres

Paramètre Description

attributes

Attributs de conversation au format JSON. Pour plus de détails, reportez-vous à Attributs CREATE_CONVERSATION.

Valeur par défaut : NULL.

Exemple

Exemple : création d'une conversation

L'exemple suivant illustre l'utilisation de la fonction DBMS_CLOUD_AI.CREATE_CONVERSATION pour créer une conversation sans aucune personnalisation.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION FROM DUAL;

Résultats :

CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
Exemple : création d'une conversation avec des attributs personnalisés

L'exemple suivant illustre l'utilisation de la fonction DBMS_CLOUD_AI.CREATE_CONVERSATION pour spécifier des attributs tels que title, retention_days et conversation_length.

SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
				attributes => '{"title":"This is a test conversation",
                               "retention_days":7,
                               "conversation_length":20}') 
FROM DUAL;

CREATE_CONVERSATION Attributs

Ces attributs gèrent le contexte de conversation, y compris la durée de conservation, le nombre d'invites avec réponses à stocker ou à afficher et les métadonnées telles que le titre et la description pour référence. Certains attributs sont facultatifs et ont une valeur par défaut.

Attributs

Nom d'attribut Valeur par défaut Description

title

Nouvelle conversation

Nom de la conversation assigné par l'utilisateur. S'il n'est pas fourni, le LLM en générera un lors de la première utilisation de la conversation avec une invite.

description

NULL

Fournit une description définie par l'utilisateur résumant le but ou le contexte de la conversation. S'il n'est pas fourni, le LLM en génère un lors de la première utilisation de la conversation avec une invite et le met à jour à nouveau lors de la 5e utilisation pour inclure des informations plus précises et pertinentes.

retention_days

7

Indiquez le nombre de jours pendant lesquels l'historique des conversations doit être conservé. Elle est stockée dans la base de données à partir de sa date de création. Si vous omettez la valeur, le système la définit sur la valeur par défaut 7. Si vous la définissez sur 0, le système conserve la conversation jusqu'à ce que vous la supprimiez manuellement à l'aide de la procédure DBMS_CLOUD_AI.DROP_CONVERSATION ou DBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION').

conversation_length

NULL

Indiquez le nombre d'invites et de réponses récentes à inclure dans l'invite actuelle. La valeur maximale autorisée est 999. Vous pouvez remplacer cette valeur en spécifiant le paramètre conversation_length dans la fonction DBMS_CLOUD_AI.GENERATE ou en le définissant dans le profil AI à l'aide de SELECT AI <ACTION> <PROMPT>. Appliquez les règles de priorité suivantes pour conversation_length :
  1. Valeur de l'argument d'attributs dans DBMS_CLOUD_AI.GENERATE
  2. Le jeu de valeurs dans la conversation prend la priorité suivante
  3. La valeur définie dans le profil AI prend la dernière priorité

Si aucun d'entre eux n'indique conversation_length, la valeur par défaut est 10.

L'exemple suivant montre comment personnaliser les attributs de conversation dans la procédure DBMS_CLOUD_AI.CREATE_CONVERSATION.
-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

Procédure UPDATE_CONVERSATION

Cette procédure met à jour une conversation existante avec une valeur spécifiée des attributs de conversation.

Syntaxe

DBMS_CLOUD_AI.UPDATE_CONVERSATION(
    conversation_id    IN VARCHAR2,
    attributes         IN CLOB
);

Paramètres

Paramètre Description

conversation_id

Numéro unique affecté à une conversation.

Ce paramètre est obligatoire.

attributes

Attributs de conversation au format JSON. Pour plus de détails, reportez-vous à Attributs CREATE_CONVERSATION.

Exemple

EXEC DBMS_CLOUD_AI.UPDATE_CONVERSATION(
conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92', 
attributes => '{"retention_days":20, 
		"description":"This a sample description", 
		"title":"Sample title", 
		"conversation_length":20}');

Résultats :

PL/SQL procedure successfully completed.

Procédure SET_CONVERSATION_ID

Cette procédure définit la conversation actuelle sur l'ID spécifié. Les invites suivantes incluent des invites de conversation existantes en fonction des attributs configurés de la conversation.

Syntaxe

DBMS_CLOUD_AI.SET_CONVERSATION_ID(
    conversation_id   IN VARCHAR2
);

Paramètres

Paramètre Description

conversation_id

Numéro unique attribué à une conversation dans la session en cours.

Ce paramètre est obligatoire.

Exemple

EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
   

Résultats :

PL/SQL procedure successfully completed.

Fonction GET_CONVERSATION_ID

Cette fonction renvoie l'ID de conversation actuellement défini dans la session à l'aide de la procédure DBMS_CLOUD_AI.SET_CONVERSATION_ID ou DBMS_CLOUS_AI.CREATE_CONVERSATION. Si vous n'avez pas défini de conversation, la fonction renvoie NULL. Si vous supprimez la conversation, le système l'efface également dans la session. Reportez-vous à la section CLEAR_CONVERSATION_ID Procedure.

Syntaxe

DBMS_CLOUD_AI.GET_CONVERSATION_ID
RETURN VARCHAR2;

Exemple

Cet exemple affiche l'ID de conversation défini dans la session en cours.

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;

Résultats :

--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92

Procédure CLEAR_CONVERSATION_ID

Cette procédure efface un ID de conversation défini dans la session pour désactiver la fonctionnalité de conversation pour SELECT AI <ACTION> <PROMPT>. Si vous n'avez pas défini de conversation, le système ne génère aucune erreur.

Syntaxe

DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

Exemple

Cet exemple illustre l'affichage de l'ID de conversation actuel dans la session, l'effacement de l'ID et la vérification de la modification.

-- A conversation id is set in the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------
3A88BFF0-1D7E-B3B8-E063-9C6D46640ECD
 
 
-- Clear the conversation id
EXEC DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;
 
PL/SQL procedure successfully completed.
 
 
-- The conversation id is removed from the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------

Procédure DELETE_CONVERSATION_PROMPT

La procédure supprime une certaine invite de la conversation.

Syntaxe

DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT(
    conversation_prompt_id  IN VARCHAR2,
    force                   IN BOOLEAN DEFAULT FALSE
);

Paramètres

Paramètre Description

conversation_prompt_id

Numéro unique attribué à une invite dans une conversation. Vous pouvez trouver l'ID d'invite en interrogeant la vue DBA/USER_CLOUD_AI_CONVERSATION_PROMPTS. Reportez-vous à la section DBMS_CLOUD_AI Views.

Ce paramètre est obligatoire.

force

Si TRUE, la procédure ignore les erreurs si conversation_prompt_id n'existe pas.

La valeur par défaut de ce paramètre est FALSE.

Exemple

EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');

Résultats :

PL/SQL procedure successfully completed.

Procédure DROP_CONVERSATION

La procédure supprime la conversation et toutes les invites associées ainsi que les réponses associées. Une fois supprimé, conversation_id n'est plus valide. Si une conversation est supprimée alors qu'elle est définie dans la session, elle est effacée automatiquement.

Syntaxe

DBMS_CLOUD_AI.DROP_CONVERSATION(
    conversation_id  IN VARCHAR2,
    force            IN BOOLEAN  DEFAULT FALSE
);

Paramètres

Paramètre Description

conversation_id

Numéro unique affecté à une conversation.

Ce paramètre est obligatoire.

force

Si TRUE, la procédure ignore les erreurs si conversation_id n'existe pas.

La valeur par défaut de ce paramètre est FALSE.

Exemple

EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');

Résultats :

PL/SQL procedure successfully completed.

Procédure FEEDBACK

Cette procédure vous permet de fournir un retour à Select AI afin d'améliorer la précision de la génération des requêtes. Vous avez la possibilité de fournir des commentaires positifs ou négatifs, ainsi que des commentaires textuels ou des requêtes SQL révisées.

Syntaxe

DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_id            IN  DBMS_ID,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,   
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );
 
DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_text          IN  CLOB,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );

Paramètres

Paramètre Description

profile_name

Spécifie le profil AI à utiliser. Si vous n'indiquez pas de valeur profile_name, Select AI utilise le profil par défaut défini dans la session.

Ce paramètre est obligatoire.

sql_id

Identifie l'interrogation SQL. Un élément sql_id ne peut avoir qu'une seule entrée de retour.

Ce paramètre est obligatoire.

sql_text

Contient le texte complet de la requête SQL.

Ce paramètre est obligatoire.

feedback_type

Indique le type d'informations en retour. Les valeurs suivantes sont disponibles :
  • positive : accepte le code SQL généré.
  • negative : fournit les améliorations de requête SQL nécessaires en identifiant les erreurs dans la requête.

Remarques :

La procédure DBMS_CLOUD_AI.FEEDBACK vous permet d'indiquer sql_id ou sql_text. Par conséquent, feedback_type est nécessaire, tandis que si vous utilisez l'action feedback, le LLM détermine ou interprète dynamiquement le type de retour.

Il s'agit d'un paramètre obligatoire lorsque operation est add.

response

Représente le résultat de requête SQL correct attendu par l'utilisateur.

Il s'agit d'un paramètre obligatoire lorsque operation est add et feedback_type est negative.

feedback_content

Capture les commentaires en langage naturel de l'utilisateur. Vous avez la possibilité d'utiliser ce paramètre avec response.

operation

Spécifie l'opération à effectuer. Les valeurs acceptées sont les suivantes :
  • add (par défaut) : ajoutez vos commentaires en indiquant feedback_type.
  • delete : supprimez vos commentaires en fournissant le sql_id

Exemple

Exemple : fournir un retour pour l'instruction SQL générée à l'aide des opérations d'ajout ou de suppression

L'exemple suivant illustre l'utilisation de la procédure DBMS_CLOUD_AI.FEEDBACK pour accepter ou améliorer le code SQL généré en indiquant les paramètres de la procédure.

EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   feedback_type=>'positive',
                                   operation=>'add');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_text=> 'select ai showsql how many movies',
                                   feedback_type=> 'negative',
                                   response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"',
                                   feedback_content=>'Use SUM instead of COUNT');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   operation=>'delete');

Index de vecteur pour FEEDBACK

Sélectionner AI crée un index vectoriel par défaut nommé <profile_name>_FEEDBACK_VECINDEX avec des attributs par défaut lorsque vous utilisez la fonctionnalité de retour pour la première fois.

Vous pouvez modifier ses attributs tels que similarity_threshold et match_limit à l'aide de la procédure DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX. Cet index permet d'affiner les instructions SQL générées ultérieurement en fonction des commentaires fournis. Cette table est supprimée lorsque le profil AI associé est supprimé. Vous pouvez également supprimer <profile_name>_FEEDBACK_VECINDEX. Dans ce cas, Select AI n'utilise plus les commentaires en tant que conseils pour les actions runsql, showsql et explainsql. Toutefois, si vous soumettez un nouveau retour à l'aide de la fonctionnalité Sélectionner un retour d'IA, Select AI crée automatiquement un nouvel index vectoriel de retour

Remarques :

La valeur par défaut de match_limit pour feedback est 3.

Nom de la table de vecteurs

La table <profile_name>_FEEDBACK_VECINDEX$VECTAB contient des représentations vectorielles (comparaisons) des commentaires des utilisateurs, ainsi que d'autres paramètres, que Select AI utilise pour améliorer la génération SQL au fil du temps.

Paramètres

Colonne Description

attributes

Inclut les attributs d'objet JSON conformément à la procédure FEEDBACK.

content

Contient l'invite utilisateur.

embedding

Contient des représentations vectorielles (embeddings) de l'invite utilisateur.

Exemple

L'exemple suivant illustre l'utilisation de la table d'index vectoriel générée automatiquement pour interroger et fournir des commentaires.

SQL> select content, attributes from OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB where JSON_VALUE(attributes, '$.sql_text') = 'select ai showsql how many movies';
 
CONTENT                                                
----------------------------------------------------------------------------------------------------
how many movies                                             
ATTRIBUTES
----------------------------------------------------------------------------------------------------
 
{"response":"SELECT SUM(1) FROM \"ADB_USER\".\"MOVIES\"","feedback_type":"negative","sql_id":null,"sql_text":"select ai showsql how many movies","feedback_content":null}
DBMS_CLOUD_AI.feedback Procedure(Positive Feedback)