Générer du code SQL à partir d'invites en langage naturel à l'aide de l'intelligence artificielle sélectionnée
La fonction Sélectionner l'IA permet à Autonomous AI Database d'utiliser l'IA générative avec de grands modèles de langage (LLM) pour convertir le texte d'entrée de l'utilisateur en Oracle SQL. Sélectionnez AI pour traiter l'invite en langage naturel, ajouter les métadonnées à l'invite, puis générer et exécuter une interrogation SQL.
À propos de Select AI
Utilisez le langage naturel pour interagir avec votre base de données et vos LLM au moyen de SQL afin d'améliorer la productivité des utilisateurs et de développer des applications basées sur l'IA. Select AI simplifie et automatise l'utilisation de l'IA générative, que ce soit pour générer, exécuter et expliquer du SQL à partir d'une invite de langage naturel, à l'aide de la génération augmentée d'extraction avec des magasins vectoriels, la génération de données synthétiques ou le clavardage avec le LLM.
Lorsque vous utilisez Select AI, Autonomous AI Database gère le processus de conversion du langage naturel en SQL. Cela signifie que vous pouvez fournir une invite en langage naturel plutôt qu'un code SQL pour interagir avec vos données. Select AI sert d'outil de productivité pour les utilisateurs et les développeurs SQL et permet aux utilisateurs SQL non experts de tirer des informations utiles de leurs données, sans avoir à comprendre les structures de données ou les langages techniques.
Select AI automatise également le processus d'extraction de génération augmentée (RAG), de la génération d'intégrations vectorielles à l'extraction de contenu pertinent en fonction de votre invite au moyen d'une recherche de similarité sémantique à l'aide de votre magasin de vecteurs. D'autres fonctionnalités incluent la génération de données synthétiques, la prise en charge de l'historique de clavardage pour les conversations et d'autres fonctionnalités, le tout à partir d'une interface SQL.
DBMS_CLOUD_AI permet l'intégration à un LLM spécifié par l'utilisateur pour générer du code SQL à l'aide d'invites en langage naturel. Pour la génération du langage naturel vers SQL, ce package fournit une invite augmentée au LLM contenant les métadonnées de schéma de base de données pertinentes. Cela permet de générer, d'exécuter et d'expliquer des interrogations SQL en fonction des invites de langage naturel. Il facilite également la génération augmentée d'extraction à l'aide de magasins vectoriels, la génération de données synthétiques et permet le clavardage avec le LLM. L'ensemble DBMS_CLOUD_AI fonctionne avec les fournisseurs d'IA répertoriés dans Sélectionnez votre fournisseur d'IA et vos LLM.
Note :
-
Vous devez avoir un compte auprès du fournisseur d'intelligence artificielle et fournir les données d'identification au moyen des objets
DBMS_CLOUD_AIutilisés par la base de données autonome d'intelligence artificielle. -
Vous pouvez soumettre des invites dans plusieurs langues. La qualité du résultat dépend des capacités du LLM spécifique ou du modèle d'intégration (transformateur) utilisé. Vérifiez votre LLM ou la documentation du modèle d'intégration pour la prise en charge multilingue.
Plates-formes prises en charge
La sélection de l'intelligence artificielle est prise en charge pour les services Autonomous AI Database sans serveur et Autonomous AI Database sur une infrastructure Exadata dédiée et le nuage chez les clients.
- Base de données Autonomous AI Serverless
- Base de données d'IA autonome sur une infrastructure Exadata dédiée
- Région Base de données d'IA autonome sur une infrastructure Exadata dédiée
- Base de données Autonomous AI Database Cloud@Customer
Terminologie connexe
Il est important de comprendre les différents termes utilisés avec Select AI avant de l'utiliser.
Les termes suivants sont liés à la fonction Sélectionner l'IA :
| Terme | Définition |
|---|---|
| Conversations |
Les conversations dans Select AI représentent un échange interactif entre l'utilisateur et le système, permettant aux utilisateurs d'interroger ou d'interagir avec la base de données au moyen d'une série d'invites en langage naturel. Select AI intègre des conversations à court terme basées sur la session pour générer des réponses contextuelles pour l'invite courante en fonction des interactions précédentes. Jusqu'à 10 invites précédentes sont intégrées à la demande courante avec des conversations à court terme, ce qui crée une invite augmentée envoyée au LLM. Select AI prend en charge l'utilisation de conversations personnalisables à long terme, ce qui vous permet d'utiliser Select AI avec différents sujets sans mélanger le contexte, qui peut être configuré au moyen des API de conversation de l'ensemble DBMS_CLOUD_AI. Pour plus de détails, voir Utiliser et personnaliser les conversations. |
|
Données d'identification de la base de données |
Les données d'identification de base de données sont des données d'identification d'authentification utilisées pour accéder aux bases de données et interagir avec elles. Ils se composent généralement d'un nom d'utilisateur et d'un mot de passe, parfois complétés par des facteurs d'authentification supplémentaires tels que des jetons de sécurité. Ces informations d'identification sont utilisées pour établir une connexion sécurisée entre une application ou un utilisateur et une base de données, garantissant que seules les personnes ou les systèmes autorisés peuvent accéder aux données stockées dans la base et les manipuler. |
|
Hallucination en LLM |
L'hallucination dans le contexte des grands modèles linguistiques fait référence à un phénomène où le modèle génère un texte incorrect, non significatif ou sans rapport avec l'invite d'entrée. Bien qu'ils résultent de la tentative du modèle de générer du texte cohérent, ces instances peuvent contenir des informations fabriquées, trompeuses ou purement imaginatives. L'hallucination peut survenir en raison de biais dans les données d'entraînement, d'un manque de compréhension du contexte approprié ou de limites dans le processus d'entraînement du modèle. |
| GIA | Le service de gestion des identités et des accès (GIA) pour Oracle Cloud Infrastructure vous permet de configurer les droits d'accès aux ressources en nuage. Vous pouvez contrôler le type d'accès affecté à un groupe d'utilisateurs et les ressources concernées. Pour en savoir plus, voir Aperçu du service de gestion des identités et des accès. |
| Métadonnées |
Les métadonnées sont des données qui décrivent les données. Dans le cas de Select AI, les métadonnées sont des métadonnées de base de données, qui font référence aux données qui décrivent la structure, l'organisation et les propriétés des tables et des vues de base de données. Pour les tables et les vues de base de données, les métadonnées comprennent les noms et les types de colonne, les contraintes et les clés, les définitions de vue, les relations, le lignage, les indicateurs de qualité et de fraîcheur, les classifications de sécurité et les politiques d'accès. Des métadonnées bien gérées permettent la détection, l'utilisation correcte, le réglage des performances et la conformité. Sélectionnez AI augmente les invites NL2SQL avec les métadonnées de table qui incluent la définition de table (nom de table, noms de colonne et leurs types de données), et facultativement les commentaires de table et de colonne, les annotations et les contraintes. |
| Enrichissement des métadonnées |
La pratique consistant à augmenter les schémas de base de données avec des descriptions, des commentaires et des annotations de haute qualité afin qu'un LLM puisse mieux comprendre l'intention des tables et des colonnes, clarifier la signification métier et générer des instructions SQL plus précises. Il transforme les noms de table ou de colonne nus en ressources bien documentées avec une intention, des relations et des contraintes claires. Informations sur le candidat à inclure :
Voir Aperçu de l'enrichissement de l'IA pour en savoir plus sur l'ajout de telles métadonnées à l'aide d'Oracle SQL Developer for VS Code au moyen de Visual Studio Code. |
|
Invites du langage naturel |
Les invites en langage naturel sont des instructions lisibles par l'homme ou des demandes fournies pour guider les modèles d'IA générative, tels que les modèles de langage volumineux. Au lieu d'utiliser des langages de programmation ou des commandes spécifiques, les utilisateurs peuvent interagir avec ces modèles en entrant des invites dans un format plus conversationnel ou en langage naturel. Les modèles génèrent ensuite la sortie en fonction de l'invite fournie. |
|
Liste de contrôle d'accès au réseau |
Une liste de contrôle d'accès au réseau est un ensemble de règles ou d'autorisations qui définissent le trafic réseau autorisé à passer par un périphérique réseau, tel qu'un routeur, un pare-feu ou une passerelle. Les listes de contrôle d'accès sont utilisées pour contrôler et filtrer le trafic entrant et sortant en fonction de divers critères tels que les adresses IP, les numéros de port et les protocoles. Ils jouent un rôle crucial dans la sécurité du réseau en permettant aux administrateurs de gérer et de restreindre le trafic réseau pour empêcher l'accès non autorisé, les attaques potentielles et les violations de données. |
|
Recherche de similarité |
La recherche de similarité identifie et extrait les points de données qui correspondent étroitement à une interrogation donnée en comparant les vecteurs de fonction dans un magasin de vecteurs. |
|
Distances vectorielles |
Les distances vectorielles mesurent la similarité ou la dissimilarité entre les vecteurs caractéristiques en calculant la distance entre eux dans un espace multidimensionnel. |
|
Index vectoriel |
Un index vectoriel organise et stocke les vecteurs de fonction pour permettre une recherche et une extraction efficaces des données connexes. |
|
Magasin de vecteurs |
Un magasin de vecteurs comprend des systèmes qui stockent, gèrent et activent la recherche de similarité sémantique impliquant des intégrations de vecteurs. Cela inclut les bases de données vectorielles autonomes et la recherche de vecteurs IA dans Oracle Database 23ai. |
Sélectionner des cas d'utilisation d'IA
Select AI améliore l'interaction des données et permet aux développeurs de créer des applications guidées par IA directement à partir de SQL, en transformant les invites de langage naturel en interrogations SQL et en réponses textuelles, en prenant en charge l'interaction par clavardage avec les LLM, en améliorant l'exactitude des réponses avec les données actuelles à l'aide de la RAG et en générant des données synthétiques.
Les cas d'utilisation sont les suivants :
-
Générer des instructions SQL à partir d'invites de langage naturel
Productivité des développeurs : Select AI améliore considérablement la productivité des développeurs en fournissant rapidement des requêtes SQL " plus rapides ". Les développeurs peuvent entrer des invites en langage naturel et Select AI génère du code SQL en fonction des tables et des vues de schéma de base de données. Cela réduit le temps et les efforts nécessaires pour écrire des requêtes complexes à partir de zéro, ce qui permet aux développeurs de se concentrer sur l'amélioration et l'optimisation des requêtes générées pour leurs besoins spécifiques.
Interrogations en langage naturel pour les utilisateurs finaux : Select AI permet aux utilisateurs finaux d'interagir avec les tables et les vues de données sous-jacentes de votre application à l'aide d'interrogations en langage naturel. Cette fonctionnalité permet aux utilisateurs sans expertise SQL de poser des questions et d'extraire des données directement, ce qui rend l'accès aux données plus intuitif et plus convivial par rapport aux capacités du LLM utilisé et à la qualité des métadonnées de schéma disponibles.
Autres fonctionnalités pour la génération SQL : Les fonctionnalités mises en évidence suivantes sont également prises en charge pour la génération du langage naturel vers le langage SQL :
-
Spécifier un schéma ou des tables ou des vues : Select AI vous permet de spécifier une liste d'objets composée de schémas et, facultativement, de tables ou de vues dans ce schéma.
-
Détecter automatiquement les métadonnées de table pertinentes : Sélectionnez AI pour détecter automatiquement les tables pertinentes et envoyer les métadonnées uniquement pour ces tables spécifiques, pertinentes pour l'interrogation, dans Oracle Database 26ai.
- Restreindre l'accès aux tables : Sélectionnez AI pour limiter l'accès aux tables en ne prenant en compte que les tables répertoriées dans les attributs de profil AI pour la génération SQL.
- Spécifier la sensibilité à la casse pour les colonnes : Select AI permet à l'utilisateur de spécifier la sensibilité à la casse afin que le LLM produise des réponses non sensibles à la casse à partir de la base de données et du LLM.
-
-
Conversations
Activez les fonctions de type agent conversationnel avec Select AI, ce qui permet aux utilisateurs d'avoir des conversations naturelles pour interroger les données et effectuer des actions. Ces discussions peuvent garder une trace du contexte, donnant des réponses de suivi qui clarifient ou étendent sur les questions originales. Ce scénario améliore l'engagement et facilite les requêtes complexes grâce à la conversation.
-
Flux de travail agéntiques avec Select AI Agent
Utilisez Select AI Agent pour coordonner les agents, les outils (SQL, RAG, Websearch, Notifications) et les tâches pour des scénarios en plusieurs étapes tels que l'extraction de données et les notifications. Pour en savoir plus, voir Créer des agents autonomes à l'aide de la sélection d'un agent d'intelligence artificielle.
-
Génération multimédia personnalisée
Select AI peut être utilisé pour générer du contenu multimédia personnalisé tel que des courriels adaptés aux détails individuels des clients. Par exemple, dans votre invite, vous pouvez demander au LLM de créer un courriel convivial et optimiste encourageant un client à essayer un jeu de produits recommandés. Ces recommandations peuvent être basées sur les données démographiques des clients ou d'autres informations spécifiques disponibles dans votre base de données. Ce niveau de personnalisation améliore l'engagement des clients en leur fournissant directement du contenu pertinent et attrayant.
-
Génération de codes
Avec l'action Select AI
chat, vous pouvez utiliser Select AI pour demander à votre LLM spécifié de générer du code à partir d'invites en langage naturel. Cette fonctionnalité prend en charge divers langages de programmation tels que SQL, Python, R et Java. Exemples :- Code Python : "Écrivez le code Python pour calculer une matrice de confusion sur un DataFrame avec les colonnes ACTUAL et PREDICTED."
- DL SQL : "Écrivez le LDD pour une table SQL avec le nom, l'âge, les revenus et le pays des colonnes."
- Interrogation SQL : "Écrivez l'interrogation SQL qui utilisera le modèle Oracle Machine Learning dans la base de données nommé CHURN_DT_MODEL pour prédire quels clients seront perdus et avec quelle probabilité."
-
Génération augmentée par extraction (RAG)
Utiliser le contenu du magasin de vecteurs pour la recherche de similarité sémantique afin d'améliorer la précision et la pertinence des invites dans les réponses LLM.
-
Génération de données synthétiques
Générer des données synthétiques à l'aide de LLM qui sont conformes à votre schéma pour les tests de solution, les validations de concept et d'autres utilisations. Les données synthétiques peuvent prendre en charge un meilleur test de vos applications en l'absence de données réelles, ce qui entraîne une qualité globale de votre application.
Directives d'utilisation
Fournit des directives d'utilisation qui garantissent l'utilisation efficace et appropriée des invites de langage naturel pour la génération SQL afin d'améliorer l'expérience utilisateur.
Utilisation projetée
Cette fonction est destinée à la génération et à l'exécution d'interrogations SQL résultant d'invites en langage naturel fournies par l'utilisateur. Il automatise ce qu'un utilisateur peut faire manuellement en fonction de ses métadonnées de schéma en combinaison avec un modèle de langage volumineux (LLM) de son choix.
Bien que toute invite puisse être fournie, y compris celles qui ne sont pas liées à la production de résultats d'interrogation SQL, Select AI se concentre sur la génération d'interrogation SQL. La sélection de l'intelligence artificielle permet de soumettre des demandes générales avec l'action chat.
Invite - Données d'augmentation
La base de données augmente l'invite spécifiée par l'utilisateur avec les métadonnées de la base de données pour atténuer les hallucinations du LLM. L'invite augmentée est ensuite envoyée au LLM spécifié par l'utilisateur pour produire la requête.
La base de données augmente l'invite uniquement avec les métadonnées de schéma. Ces métadonnées peuvent inclure des définitions de schéma, des commentaires de table et de colonne et du contenu disponible à partir du dictionnaire de données et du catalogue. Aux fins de génération SQL, la base de données ne fournit pas de contenu de table ou de vue (valeurs réelles de ligne ou de colonne) lors de l'augmentation de l'invite.
L'action narrate, cependant, fournit le résultat de l'interrogation, qui peut contenir des données de base de données, au LLM spécifié par l'utilisateur à partir duquel générer un texte en langage naturel décrivant les résultats de l'interrogation.
AVERTISSEMENT :
Les grands modèles linguistiques (LLM) ont été formés sur un large éventail de documents et de contenus textuels, généralement à partir d'Internet. Par conséquent, les LLM peuvent avoir incorporé des modèles de contenu non valide ou malveillant, y compris l'injection SQL. Ainsi, alors que les LLM sont capables de générer du contenu utile et pertinent, ils peuvent également générer des informations incorrectes et fausses, y compris des requêtes SQL qui produisent des résultats inexacts et / ou compromettent la sécurité de vos données.
Les interrogations générées en votre nom par le fournisseur LLM spécifié par l'utilisateur seront exécutées dans votre base de données. Votre utilisation de cette fonction est uniquement à vos propres risques et, nonobstant toute autre condition relative aux services fournis par Oracle, constitue votre acceptation de ce risque et votre exclusion expresse de la responsabilité ou de la responsabilité d'Oracle pour tout dommage résultant de cette utilisation.
Sélectionnez votre fournisseur d'IA et vos LLM
Choisissez un fournisseur d'IA et un LLM qui répond à vos normes de sécurité et qui s'aligne sur vos besoins spécifiques, tels que la génération de texte ou de code.
Les différents LLM excellent dans diverses tâches en fonction de leurs données d'entraînement et de l'objectif prévu. Certains modèles sont excellents pour la génération de texte, mais peuvent ne pas fonctionner correctement dans la génération de code, tandis que d'autres sont spécifiquement optimisés pour les tâches de codage. Choisissez un LLM qui convient le mieux à vos besoins.
| Fournisseur d'intelligence artificielle | GML | Modèle d'intégration pour la RAG | Objet |
|---|---|---|---|
|
Service d'intelligence artificielle générative pour OCI |
|
Voir À propos de l'intégration de modèles dans le service d'intelligence artificielle générative. |
Les modèles de clavardage du service d'intelligence artificielle générative pour OCI sont pris en charge pour toutes les actions Les modèles de génération de texte OCI ne sont pris en charge que pour l'action Pour configurer vos attributs de profil, voir Attributs de profil. |
|
Service Azure OpenAI |
|
text-embedding-ada-002 |
Idéal pour générer du code SQL à partir des invites de langage naturel, de l'action |
|
OpenAI |
|
text-embedding-ada-002 |
Idéal pour générer du code SQL à partir des invites de langage naturel, de l'action |
|
Compatible avec OpenAI |
Modèles de fournisseurs compatibles OpenAI, tels que :
|
Intégration de modèles à partir de fournisseurs de type OpenAI. Par exemple, voir Modèles d'intégration de Fireworks AI. |
Prend en charge un large éventail de cas d'utilisation. |
|
Cohere |
|
embarquer-english-v2.0 |
Idéal pour l'action |
|
|
|
text-embedding-004 (par défaut) |
Idéal pour générer du code SQL à partir des invites de langage naturel, de l'action |
|
Anthropique |
|
S.O. |
Idéal pour générer du code SQL à partir des invites de langage naturel, de l'action |
|
S'étreindre le visage |
|
S.O. |
Idéal pour générer du code SQL à partir des invites de langage naturel, de l'action |
|
AWS |
|
Prend en charge un large éventail de cas d'utilisation. |
Note :
-
Spécifiez un fournisseur compatible OpenAI au moyen de
provider_endpointau lieu du paramètreprovider. Voir Attributs de profil. -
Pour les modèles qui acceptent des images, utilisez
meta.llama-3.2-90b-vision-instruct. Ce modèle est spécifiquement entraîné pour la vision et les images. Bien qu'il puisse être utilisé pour la génération de texte et SQL, le modèle convient mieux aux images. Pour en savoir plus, voir Clavarder avec le service d'intelligence artificielle générative pour OCI.Le modèle
meta.llama-3.2-11b-vision-instructoffre des capacités multimodales robustes. -
Les modèles d'intégration sont également appelés modèles de transformateurs.
Configurer les profils d'intelligence artificielle à l'aide de DBMS_CLOUD_AI
Autonomous AI Database utilise des profils d'IA pour faciliter et configurer l'accès à un LLM et pour configurer la génération, l'exécution et l'explication des énoncés SQL en fonction des invites de langage naturel. Il facilite également la génération augmentée d'extraction à l'aide de modèles d'intégration et d'index vectoriels et permet de clavarder avec le LLM.
Les profils d'IA comprennent des objets de base de données qui sont la cible pour les interrogations en langage naturel. Les métadonnées utilisées à partir de ces cibles peuvent inclure des noms de table de base de données, des noms de colonne, des types de données de colonne et des commentaires. Vous créez et configurez des profils d'IA à l'aide des procédures DBMS_CLOUD_AI.CREATE_PROFILE et DBMS_CLOUD_AI.SET_PROFILE.
Exigences pour DBMS_CLOUD_AI
Les conditions suivantes sont requises pour exécuter DBMS_CLOUD_AI :
- Accès à un compte en nuage Oracle Cloud Infrastructure et à une instance Autonomous AI Database.
- Un compte d'API payant pour un fournisseur d'IA pris en charge, l'un des suivants :
-
OpenAI : Pour activer OpenAI pour générer du SQL à partir d'invites en langage naturel, obtenez des clés d'API à partir de votre compte payant OpenAI.
Vous pouvez trouver votre clé d'API secrète dans vos paramètres d'utilisateur.
-
Cohère : Pour permettre à Cohere de générer des énoncés SQL à partir d'invites en langage naturel, obtenez des clés d'API à partir de votre compte payant Cohere.
Cliquez sur Tableau de bord, puis sur Clés d'API dans la barre de navigation de gauche. Copiez la clé d'API par défaut ou créez-en une autre. Pour plus d'informations, voir Clés d'API.
-
Service Azure OpenAI : Pour activer le service OpenAI Azure pour générer du SQL à partir d'invites en langage naturel, configurez le fournisseur d'intelligence artificielle et donnez-lui accès.
Pour utiliser le service OpenAI pour Azure, procédez comme suit :
- Obtenez vos clés d'API secrètes. Vous pouvez trouver vos clés d'API dans la section Resource Management de votre portail Azure. Dans la page Ressource du service OpenAI Azure, cliquez sur Clés et point d'extrémité. Vous pouvez copier KEY1 ou KEY2.
- Créez une ressource de service OpenAI pour Azure et déployez un modèle : Créez et déployez une ressource de service Azure OpenAI.
Conseil :
- Notez le nom de la ressource et le nom du déploiement, car ces paramètres sont utilisés pour fournir l'autorisation d'accès au réseau et créer votre profil de service OpenAI Azure à l'aide de la procédure
DBMS_CLOUD_AI.CREATE_PROFILE. - Pour en savoir plus sur les limites de débit pour le jeton par minute sur un modèle, voir Quotas et limites du service Azure OpenAI.
- Notez le nom de la ressource et le nom du déploiement, car ces paramètres sont utilisés pour fournir l'autorisation d'accès au réseau et créer votre profil de service OpenAI Azure à l'aide de la procédure
- Autoriser l'accès au service Azure OpenAI :
- Vous pouvez utiliser votre clé d'API secrète pour autoriser l'accès au service Azure OpenAI. Pour en savoir plus, voir l'exemple sous Exemples d'utilisation de Select AI.
- Service d'intelligence artificielle générative pour OCI : Voir Comment générer la clé de signature d'API.
- Google : Pour permettre à Google AI Studio de générer des réponses SQL et textuelles à vos invites en langage naturel, obtenez des clés d'API à partir de votre compte payant Google AI Studio.
- Allez à Google AI Studio.
- Cliquez sur Se connecter à Google AI Studio.
- Cliquez sur Get API key dans l'écran d'invite.
- Sélectionnez toutes les options applicables dans la page suivante.
- Cliquez sur Create API key.
-
Cliquez sur Create API key in new project.
L'écran affiche la progression et génère une clé d'API. Copiez la clé et enregistrez-la.
- Anthropic : Pour permettre à Anthropic Developer Console de générer des réponses SQL et textuelles à vos invites en langage naturel, obtenez des clés d'API à partir de votre compte payant Anthropic Developer Console.
- Allez à Anthropic Developer Console.
- Inscrivez-vous pour un compte si vous n'en avez pas déjà un.
- Une fois connecté, naviguez jusqu'à la section API ou au tableau de bord.
- Recherchez une option pour générer ou voir des clés d'API.
- Cliquer pour créer une clé d'API.
-
Copiez la clé d'API générée et enregistrez-la.
L'API Claude est un service payant. Vous devrez ajouter des crédits à votre compte avant de pouvoir utiliser la clé d'API.
- Hugging Face : Pour permettre à Hugging Face en tant que fournisseur d'intelligence artificielle de générer des réponses SQL et textuelles à vos invites de langage naturel, obtenez des clés d'API à partir de votre compte payant Hugging Face.
- Allez à Hugging Face.
- Inscrivez-vous pour un compte si vous n'en avez pas déjà un.
- Naviguez jusqu'aux paramètres de votre compte.
- Dans le menu de navigation, localisez les jetons d'accès.
- Cliquer pour créer une clé d'API.
- Copiez la clé d'API générée et enregistrez-la.
-
AWS : Pour activer AWS, obtenez votre clé d'API et votre ID modèle.
Obtenez votre clé d'API et utilisez-la pour créer des données d'identification au moyen de
DBMS_CLOUD.CREATE_CREDENTIAL.Procédez de la façon suivante pour obtenir votre clé d'API et le nom du modèle :
- Inscrivez-vous à un compte AWS si vous n'en avez pas déjà un.
- Créez vos clés d'accès et clés secrètes à partir de la console AWS Bedrock.
- Copiez les clés générées et enregistrez-les.
- Demander l'accès à leurs modèles de base. Voir Accéder aux modèles de fondation Amazon Bedrock.
- Obtenez l'ID modèle. Vous avez besoin de l'ID modèle dans la procédure
DBMS_CLOUD_AI.CREATE_PROFILE. Le code de modèle dépend des ressources que vous utilisez. Si vous utilisez :- un modèle de base, spécifiez l'ID modèle ou son ARN (Amazon Resource Names). Pour obtenir la liste des ID modèles pour les modèles de base, voir ID modèles de base Amazon Bedrock.
- un profil d'inférence, indiquez le profil d'inférence ou son numéro ARN. Pour obtenir la liste des ID de profil d'inférence, voir Régions et modèles pris en charge pour l'inférence inter-région.
- un modèle provisionné, spécifiez l'ARN du débit provisionné. Pour plus d'informations, voir Exécuter l'inférence à l'aide d'un débit provisionné.
- un modèle personnalisé, achetez le débit provisionné pour celui-ci. Spécifiez ensuite l'ARN du modèle provisionné résultant. Pour plus d'informations, voir Utiliser un modèle personnalisé dans Amazon Bedrock.
- un modèle Amazon Bedrock Marketplace, spécifiez l'ID ou l'ARN du point d'extrémité du marché des applications que vous avez créé, voir Amazon Bedrock Marketplace.
Note :
Le modèle importé n'est pas pris en charge par l'API Bedrock Converse.
Pour utiliser AWS comme fournisseur, voir Exemple : Sélectionner l'IA avec AWS.
-
- Privilèges de liste de contrôle d'accès réseau pour accéder à votre fournisseur d'intelligence artificielle externe.
Note :
La liste de contrôle d'accès réseau ne s'applique pas à l'intelligence artificielle générative OCI. - Données d'identification qui donnent accès au fournisseur d'intelligence artificielle.
DBMS_CLOUD_AI :
-
Accordez le privilège
EXECUTEsur l'ensembleDBMS_CLOUD_AIà l'utilisateur qui souhaite utiliser Select AI.Par défaut, seul l'utilisateur ADMIN dispose du privilège
EXECUTE. L'utilisateur ADMIN peut accorder le privilègeEXECUTEà d'autres utilisateurs.L'exemple suivant accorde le privilègeEXECUTEàADB_USER:grant execute on DBMS_CLOUD_AI to ADB_USER;L'exemple suivant accorde à
ADB_USERle privilège d'utiliser le point d'extrémité api.openai.com.BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'api.openai.com', ace => xs$ace_type(privilege_list => xs$name_list('http'), principal_name => 'ADB_USER', principal_type => xs_acl.ptype_db) ); END; / -
Accorder l'accès à la liste de contrôle d'accès du réseau à l'utilisateur qui souhaite utiliser Select AI et pour le point d'extrémité du fournisseur d'intelligence artificielle.
L'utilisateur ADMIN peut accorder l'accès à la liste de contrôle d'accès réseau. Pour plus d'informations, voir Procédure APPEND_HOST_ACE dans Informations de référence sur les ensembles et types PL/SQL pour Oracle Database 19c ou Informations de référence sur les ensembles et types PL/SQL pour Oracle Database 26ai.
- Créez des données d'identification pour permettre l'accès à votre fournisseur d'intelligence artificielle.
Pour plus d'informations, voir Procédure CREATE_CREDENTIAL.
Voici un exemple de création de données d'identification pour permettre l'accès à OpenAI.
EXECDBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');
APPEND_HOST_ACE Paramètres de fonction
| Paramètre | Description |
|---|---|
|
|
L'hôte, qui peut être le nom ou l'adresse IP de l'hôte. Vous pouvez utiliser un caractère générique pour spécifier un domaine ou un sous-réseau IP. L'hôte ou le nom de domaine n'est pas sensible à la casse. Pour OpenAI, utilisez api.openai.com. Pour Cohere, utilisez api.cohere.ai. Pour Azure OpenAI Service, utilisez <azure_resource_name>.openai.azure.com. Voir Attributs de profil pour en savoir plus sur Pour Google, utilisez generativelanguage.googleapis.com. Pour Anthropic, utilisez api.anthropic.com. Pour Hugging Face, utilisez api-inference.huggingface.co. |
|
|
Les entrées de contrôle d'accès (ACE). Le type |
Paramètres DBMS_CLOUD.CREATE_CREDENTIAL
Créer et définir un profil d'IA
Décrit les étapes de création et d'activation d'un profil d'IA.
Utilisez DBMS_CLOUD_AI.CREATE_PROFILE pour créer un profil d'IA. Démarrez ensuite DBMS_CLOUD_AI.SET_PROFILE pour activer le profil d'intelligence artificielle afin de pouvoir utiliser SELECT AI avec une invite en langage naturel.
Note :
Vous devez exécuter DBMS_CLOUD_AI.SET_PROFILE dans chaque nouvelle session de base de données (connexion) avant d'utiliser SELECT AI.
L'exemple suivant avec le fournisseur OpenAI crée un profil AI nommé OPENAI et définit le profil OPENAI pour la session d'utilisateur courante.
-- Create AI profile
--
SQL> BEGIN
DBMS_CLOUD_AI.create_profile(
'OPENAI',
'{"provider": "openai",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"}]
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
PL/SQL procedure successfully completed.
Utiliser le mot clé d'intelligence artificielle pour entrer des invites
Utilisez AI comme mot clé dans un énoncé SELECT pour interagir avec la base de données à l'aide d'invites en langage naturel.
Le mot clé AI dans un énoncé SELECT indique au moteur d'exécution SQL d'utiliser le LLM identifié dans le profil d'intelligence artificielle actif pour traiter le langage naturel et générer du SQL.
Vous pouvez utiliser le mot clé AI dans une interrogation avec des clients Oracle tels que SQL Developer, des carnets OML et des outils de tierce partie pour interagir avec la base de données en langage naturel.
Note :
Vous ne pouvez pas exécuter d'énoncés PL/SQL, d'énoncés LDD ou d'énoncés LMD à l'aide du mot cléAI.
Syntaxe
SELECT AI action natural_language_promptParamètres
| Paramètre | Description |
|---|---|
|
|
Exécutez la commande SQL fournie à l'aide d'une invite en langage naturel. Il s'agit de l'action par défaut et il est facultatif de spécifier ce paramètre. |
|
|
Affiche l'instruction SQL pour une invite en langage naturel. |
|
|
Le résultat de l'invite est expliqué en langage naturel. Cette option envoie le résultat SQL au fournisseur d'intelligence artificielle pour produire un sommaire en langage naturel. |
|
|
Génère une réponse directement à partir du LLM en fonction de l'invite. Si |
|
|
Le code SQL généré à partir de l'invite est expliqué en langage naturel. Cette option envoie le code SQL généré au fournisseur d'intelligence artificielle pour produire une explication en langage naturel. |
Notes d'utilisation
-
La sélection de
AIn'est pas prise en charge dans Database Actions ou le service APEX. Vous ne pouvez utiliser que la fonctionDBMS_CLOUD_AI.GENERATE. -
Le mot clé
AIn'est pris en charge que dans un énoncéSELECT. -
Vous ne pouvez pas exécuter d'énoncés PL/SQL, d'énoncés LDD ou d'énoncés LMD à l'aide du mot clé
AI. -
La séquence est
SELECTsuivie deAI. Ces mots-clés ne sont pas sensibles à la casse. Une foisDBMS_CLOUD_AI.SET_PROFILEconfiguré, le texte aprèsSELECT AIest une invite en langage naturel. Si aucun profil d'IA n'est défini,SELECTAIsignale l'erreur suivante :ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected" -
Les règles d'utilisation des caractères spéciaux s'appliquent conformément aux directives d'Oracle. Par exemple, utilisez deux guillemets simples si vous utilisez une apostrophe dans une phrase.
select ai how many customers in SF don''t own their own home -
Les LLM sont sujettes à des hallucinations et les résultats ne sont pas toujours corrects :
-
Il est possible que
SELECT AIne puisse pas exécuter le SQL généré pour une invite de langage naturel spécifique. -
Il est possible que
SELECT AIne puisse pas générer SQL pour une invite de langage naturel spécifique.
Dans un tel scénario,
SELECT AIrépond avec des informations pour vous aider à générer un énoncé SQL valide. -
-
Utilisez l'action
chat, avecSELECT AI chat, pour en savoir plus sur les structures SQL. Pour obtenir de meilleurs résultats avec l'actionchat, utilisez des vues de base de données ou des tables avec des noms de colonne contextuels ou envisagez d'ajouter des commentaires de colonne expliquant les valeurs stockées dans les colonnes. -
Pour accéder aux vues DBA ou USER, voir Vues DBMS_CLOUD_AI.
Utiliser et personnaliser les conversations
Select AI prend en charge les conversations à court terme basées sur une session, qui sont activées dans le profil AI, ainsi que les conversations nommées à long terme, qui sont activées à l'aide de procédures ou de fonctions spécifiques et d'ID conversation.
Note :
La prise en charge de Select AI Conversations est disponible dans Oracle Database 19c à partir de la version 19.30 et dans Oracle Database 26ai à partir de la version 23.26.1.Types de conversation
Select AI prend en charge les conversations à court terme basées sur la session et les conversations personnalisables.
Conversations à court terme basées sur la session : Sélectionnez l'intelligence artificielle pour inclure des conversations à court terme basées sur une session afin de générer des réponses contextuelles pour l'invite courante en fonction des interactions précédentes.
Vous pouvez l'activer en réglant l'attribut conversation à true|false dans votre profil d'intelligence artificielle. Contrairement à la fonction de conversation multiple, les conversations basées sur une session stockent les invites uniquement pour la durée de la session. Les invites sont stockées dans une table temporaire, supprimées automatiquement à la fin de la session et ne peuvent pas être réutilisées ni permutées entre les conversations.
Conversations à long terme personnalisables : Sélectionnez l'intelligence artificielle pour la création et l'utilisation de conversations personnalisables, ce qui vous permet d'utiliser l'intelligence artificielle sélectionnée avec différents sujets sans mélanger de contexte, ce qui améliore à la fois la flexibilité et l'efficacité. Vous pouvez créer, définir, supprimer et mettre à jour des conversations au moyen des procédures et fonctions de conversation DBMS_CLOUD_AI. Lorsque vous activez les conversations, Select AI extrait l'historique des invites et les envoie au LLM pour générer une réponse pour l'invite courante. Ces réponses sont stockées dans une table persistante pour une utilisation ultérieure.
Note :
Select AI Conversations prend en charge les actions suivantes :runsql, showsql, explainsql, narrate et chat.
Comment utiliser des conversations personnalisables
Vous pouvez utiliser Select AI pour des conversations personnalisables de l'une des façons suivantes :
-
Définissez l'ID conversation dans la session à l'aide de la procédure
DBMS_CLOUD_AI.SET_CONVERSATION_IDet exécutezSELECT AI <ACTION> <PROMPT>. -
Transmettez
conversation_iddans l'argumentparamsde la fonctionDBMS_CLOUD_AI.GENERATE.
Note :
Si vous utilisez à la fois plusieurs conversations et le paramètreconversation: [true|false], le système ignore le paramètre conversation.
Dans le contexte de la génération d'interrogations SQL (NL2SQL), les conversations permettent d'utiliser vos données de manière plus intuitive et plus accessible, ce qui permet aux utilisateurs d'extraire plus facilement des informations et d'effectuer des tâches sans avoir besoin d'une connaissance technique approfondie de SQL. Les conversations peuvent également être utilisées avec les fonctionnalités de clavardage et de RAG de Select AI.
- Poser une question comme "Quel est le nombre total de clients"
- Effectuez un suivi avec des questions contextuelles telles que :
- "déclencher le nombre de clients par pays"
- " Quel groupe d'âge est le plus fréquent "
- "Conserver les 5 meilleurs clients et leur pays par leurs achats et inclure un rang dans le résultat"
Pour activer les conversations, voir Exemple : Activer les conversations dans Sélectionner l'intelligence artificielle pour un exemple complet.
Conversations basées sur une session par rapport aux conversations personnalisables
Le tableau suivant compare la conversation basée sur une session et les conversations personnalisables dans Select AI :
| Questions | Conversations à court terme basées sur une session | Conversations à long terme personnalisables |
|---|---|---|
|
Quand dois-je utiliser? |
Idéal pour les clavardages temporaires rapides où vous voulez que le modèle se souvienne des questions et réponses récentes au cours d'une seule session. C'est utile lorsque vous n'avez pas besoin d'enregistrer ou de réutiliser la conversation plus tard. |
Conçu pour des conversations plus longues ou continues pouvant couvrir plusieurs sessions. Elle est utile lorsque vous souhaitez suivre, réviser ou gérer l'historique de conversation, ou lorsque différentes parties d'une application doivent accéder au même contexte de conversation au fil du temps. |
|
Comment puis-je l'activer? |
Définissez |
Utilisez la procédure |
|
Combien de conversations sont autorisées? |
Une. |
Vous pouvez créer plusieurs conversations. Si vous précisez explicitement des codes de conversation, vous pouvez les remplacer pour associer des invites aux conversations appropriées, au besoin. |
|
Où sont stockées les invites et pour combien de temps? |
Les invites sont stockées dans une table temporaire et supprimées à la fin de la session. |
Les invites sont stockées dans une table permanente. Les invites sont conservées dans la base de données pendant le nombre de jours spécifié par le paramètre |
|
Combien d'invites sont stockées et combien d'invites sont envoyées au GML? |
Un maximum de 10 invites sont stockées et envoyées au GML. Vous ne pouvez pas personnaliser cette limite. |
Toutes les invites sont stockées. Par défaut, le système envoie les 10 invites les plus récentes au LLM. Vous pouvez personnaliser cela à l'aide du paramètre |
|
Puis-je supprimer des invites individuelles? |
Non, vous ne pouvez pas supprimer manuellement des valeurs valides individuelles. |
Vous pouvez supprimer des invites individuelles spécifiques à l'aide de l'ID invite spécifié dans la vue USER_CLOUD_AI_CONVERSATION_PROMPTS et à l'aide de la procédure |
|
Les profils d'IA sont-ils utilisés pour extraire des conversations? |
Oui, Select AI extrait les invites et les réponses précédemment générées à l'aide du même profil IA. |
Non, Select AI assure le suivi du profil d'IA utilisé lors du stockage des invites et des réponses, mais ne limite pas leur extraction en fonction de ce profil. Il envoie tous les historiques de conversation au LLM pour guider la génération de réponses, quel que soit le profil utilisé pour les générer. |
|
Où puis-je vérifier l'historique des invites? |
Les invites sont enregistrées dans une table temporaire sous CLOUD USER mais ne sont pas accessibles pour l'interrogation. |
Vous pouvez interroger et consulter des conversations et des invites au moyen des vues de conversation |
Fournir des commentaires pour améliorer les LLM
Select AI vous permet de fournir une rétroaction pour aider à améliorer la capacité de votre LLM sélectionné à générer des interrogations SQL plus précises.
Note :
Cette fonction n'est disponible que sur Oracle Database 23ai. Vous pouvez l'utiliser avec les actions Select AI existantes : runsql, showsql et explainsql. Assurez-vous que votre profil d'intelligence artificielle est configuré pour la génération NL2SQL et non pour la RAG.
Vous pouvez fournir une rétroaction pour améliorer la précision de l'énoncé SQL généré au moyen de l'action feedback ou de la procédure DBMS_CLOUD_AI.FEEDBACK. Sélectionnez AI pour créer un index vectoriel par défaut nommé <profile_name>_FEEDBACK_VECINDEX avec les attributs par défaut lorsque vous utilisez la fonction de rétroaction pour la première fois. Cet index permet d'affiner les énoncés SQL générés ultérieurement en fonction de la rétroaction fournie. Pour plus d'informations, voir Index vectoriel pour FEEDBACK.
Conseil :
Utilisez la procédure DBMS_CLOUD_AI.FEEDBACK lorsque le GML spécifié ne parvient pas à générer l'interrogation SQL correcte ou ne retourne pas le résultat attendu de l'une des actions NL2SQL SELECT AI. Vous pouvez également utiliser la procédure DBMS_CLOUD_AI.FEEDBACK pour ajouter le code SQL correct directement à la table vectorielle. Cela aide à guider la génération future d'instructions SQL en servant de référence pour des invites similaires.
-
Rétroaction positive : Vous approuvez et confirmez l'exactitude du code SQL généré. Le système stocke l'interrogation confirmée pour référence ultérieure.
-
Rétroaction négative : Si les résultats de votre action NL2SQL
SELECT AIne parviennent pas à générer le bon énoncé SQL, vous pouvez fournir les améliorations d'interrogation SQL nécessaires à l'aide deSELECT AI feedback <feedback>ou à l'aide de la procédureDBMS_CLOUD_AI.FEEDBACKen identifiant les erreurs dans l'interrogation ou en fournissant des conseils sur ce qui était attendu dans la prose. Le système affine l'interrogation à l'aide d'un LLM et stocke la version affinée pour la génération future d'interrogation Select AI. Les interrogations raffinées stockées sont ensuite utilisées comme conseils et envoyées au LLM dans le cadre de l'invite augmentée.
Avantages de l'utilisation de la rétroaction
L'action et la procédure de rétroaction de Select AI introduisent un mécanisme de réglage rapide qui améliore la précision de la génération des requêtes SQL.
- Permet d'améliorer la précision des interrogations SQL.
- Permet au responsable du profil d'intelligence artificielle de fournir une rétroaction en confirmant les interrogations correctes ou en suggérant des corrections en fournissant l'intention sémantique ou les définitions d'affaires pour produire une interrogation correcte.
- Utilise la rétroaction historique comme conseil pour la génération d'interrogations futures, ce qui vous permet de vous adapter à vos besoins.
Comment fournir des commentaires
Sélectionnez AI pour fournir une rétroaction à l'aide de l'action feedback ou en appelant la procédure DBMS_CLOUD_AI.FEEDBACK.
Attention :
N'utilisez pas l'action de rétroaction dans les applications où plusieurs utilisateurs partagent des sessions de base de données avec un seul utilisateur de base de données propriétaire du profil IA. Le responsable du profil IA ne doit fournir une rétroaction qu'après avoir confirmé que l'interrogation corrigée est appropriée pour tous les utilisateurs de ce profil.
-
SQL_TEXT: Incluez la rétroaction entre guillemets pour votre interrogation SQL courante ou vous pouvez obtenirSQL_TEXTpour une interrogation particulière en interrogeant la vueV$MAPPED_SQL. -
SQL_ID: Vous pouvez obtenirSQL_IDen interrogeant la vueV$MAPPED_SQL. -
Utiliser le dernier SQL généré : Fournissez vos commentaires en langage naturel.
Note :
Pour utiliser le dernier SQL, veillez à désactiver la sortie du serveur dans Oracle SQL*Plus ou Oracle SQLcl. Vous devez disposer du privilègeREADsur les tablessys.v_$sessionetv_$mapped_sql.GRANT READ ON SYS.V_$MAPPED_SQL TO ADB_USER; GRANT READ ON SYS.V_$SESSION TO ADB_USER;
Voir Procédure FEEDBACK et Exemple : Sélectionner une rétroaction par intelligence artificielle pour en savoir plus.
Interroger des données de graphique avec des graphiques de propriétés
Sélectionnez AI pour générer une interrogation de graphique de propriétés (PGQ) dans les graphiques de propriétés Oracle en utilisant le langage naturel. Il permet aux utilisateurs d'interroger les données de graphique au moyen de l'opérateur GRAPH_TABLE avec une connaissance SQL minimale.
Select AI étend son langage naturel à la fonction SQL (NL2SQL) pour créer des graphiques vous permettant d'interroger des graphiques de propriétés SQL à l'aide du langage naturel. Sélectionnez AI pour appliquer l'opérateur GRAPH_TABLE afin d'interpréter les relations et les attributs dans les données structurées en graphique. Il génère des interrogations de graphique SQL ou PGQ en fonction des objets de données définis dans le profil IA. Lorsqu'un graphique de propriétés est inclus dans le profil d'IA, Select AI utilise l'IA générative pour créer une interrogation PGQ qui référence le graphique au moyen de l'opérateur GRAPH_TABLE. Le GML reçoit automatiquement les métadonnées de l'objet de graphique telles que les énoncés CREATE PROPERTY GRAPH pour générer des interrogations précises. Lorsqu'une table, une vue ou un objet relationnel est spécifié, Select AI génère une interrogation SQL. Cette fonction simplifie les interrogations de correspondance de modèles sur les données de graphique stockées dans Oracle AI Database et réduit la dépendance à la création manuelle d'interrogations SQL.
object_list, le GML défini dans le profil d'IA interprète les invites à l'aide du contexte des graphiques de propriété spécifiés. Select AI crée une invite augmentée qui inclut :
-
Instructions pour construire des requêtes PGQ.
-
Métadonnées décrivant les graphiques de propriétés fournis (à partir de leurs énoncés
CREATE PROPERTY GRAPH).
Cette invite augmentée est envoyée au LLM. Sélectionnez AI pour exécuter l'interrogation et retourner les résultats. Si un graphique de propriétés est spécifié avec d'autres types d'objet tels que des tables, des schémas ou des vues dans le profil IA, Select AI génère une erreur.
SQL vs PGQ
object_list de votre profil d'intelligence artificielle.
-
Interrogation SQL : utilise des données relationnelles telles que des schémas, des tables ou des vues.
-
Interrogation PGQ : utilise des graphiques de propriétés et applique l'opérateur
GRAPH_TABLEpour la mise en correspondance de modèle.
Pour plus de détails, voir Graphique de propriétés SQL et Interrogations SQL GRAPH.
Avantages de l'utilisation de Select AI sur les graphiques de propriétés
Les utilisateurs de base de données peuvent interroger les graphiques de propriétés à l'aide de Select AI pour générer des interrogations de graphique à partir du langage naturel, ce qui réduit le travail manuel et améliore la compréhension des relations entre les graphiques.
-
NL2SQL : La fonction NL2SQL de l'intelligence artificielle s'étend désormais aux interrogations de graphique permettant aux utilisateurs d'écrire des invites en langage naturel telles que "Rechercher les clients qui ont acheté une robe".
-
SQL ou PGQ : Selon l'objet de données, Select AI génère automatiquement une interrogation SQL ou PGQ.
-
Productivité : Réduit le temps et les efforts nécessaires pour créer des interrogations de graphique à l'aide de l'opérateur
GRAPH_TABLE. -
Conversations : Conserve le contexte de conversation et interroge un graphique de propriétés.
Limitations
Select AI for Property Graphs ne prend pas en charge les fonctions suivantes :
-
Génération de données synthétiques
-
Combinaison de graphiques de propriétés avec d'autres types d'objet dans le profil IA
-
Interrogations non prises en charge et intermittentes. Pour plus de détails, voir Exemple : Exemples d'invites pour les graphiques de propriétés.
Comment utiliser Select AI sur les graphiques de propriétés
Sélectionnez IA pour explorer les données de graphique à l'aide de la fonction DBMS_CLOUD_AI.GENERATE ou à l'aide de Select AI <action> <prompt>.
object_list de votre profil d'intelligence artificielle, vous pouvez utiliser :
-
SELECT AI <ACTION> <PROMPT>dans la ligne de commande SQL pour générer une sortie. -
DBMS_CLOUD_AI.GENERATEfonction et fournissez votre invite dans la fonction.
Les actions prises en charge sont les suivantes : runsql, showsql, explainsql, narrate et showpropmt. Select AI for Property Graph prend également en charge les conversations à court terme basées sur la session et les conversations à long terme personnalisables.
Pour en savoir plus, voir Exemple : Sélectionner l'intelligence artificielle pour les graphiques de propriétés et Exemple : Exemples d'invites pour les graphiques de propriétés.
Exemples d'utilisation de Select AI
Explorez l'intégration de Select AI d'Oracle avec divers fournisseurs d'IA pris en charge pour générer, exécuter et expliquer les énoncés SQL à partir des invites de langage naturel ou clavarder avec le LLM.
Exemple : Sélectionner des actions d'IA
L'exemple suivant illustre des actions telles que runsql (valeur par défaut), showsql, narrate, chat, explainsql, feedback et summarize que vous pouvez effectuer avec SELECT AI. Ces exemples utilisent le schéma sh avec le fournisseur d'intelligence artificielle et les attributs de profil spécifiés dans la fonction DBMS_CLOUD_AI.CREATE_PROFILE. Utilisez les actions Sélectionner l'IA après avoir défini votre profil d'IA à l'aide de la procédure DBMS_CLOUD_AI.SET_PROFILE dans la session courante.
Pour générer un sommaire de votre texte, utilisez SELECT AI SUMMARIZE <TEXT>.
SQL> select ai how many customers exist;
CUSTOMER_COUNT
--------------
55500
SQL> select ai showsql how many customers exist;
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
SQL> select ai narrate how many customers exist;
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
SQL> select ai chat how many customers exist;
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.
SQL> select ai explainsql how many customers in San Francisco are married;
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
- 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
- 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
Remember to adjust the table and column names based on your actual schema if they differ from the example.
Feel free to ask if you have more questions related to SQL or database in general.
-- Feedback on SQL Text
-- Negative feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", the sql query generated is correct;
-- Feedback on SQL ID
-- Negative feedback example:
SQL > select ai feedback please use sum instead of count for sql_id 1v1z68ra6r9zf;
-- Positive feedback example:
SQL > select ai feedback sql query result is correct for sql_id 1v1z68ra6r9zf;
-- If not specified, use default LASTAI SQL
-- To use default LASTAI sql, make sure that set server output off;
-- Negative feedback example:
SQL > select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
SQL > select ai feedback the result is correct;
SQL> SELECT AI SUMMARIZE
Like countless other people around the globe, I stream music, and like more
than six hundred million of them I mainly use Spotify. Streaming currently
accounts for about eighty per cent of the American recording industry’s
revenue, and in recent years Spotify’s health is often consulted as a measure
for the health of the music business over all. Last spring, the International
Federation of the Phonographic Industry reported global revenues of $28.6
billion, making for the ninth straight year of growth. All of this was
unimaginable in the two-thousands, when the major record labels appeared
poorly equipped to deal with piracy and the so-called death of physical media.
On the consumer side, the story looks even rosier. Adjusted for inflation, a
... (skipped 1000 rows in the middle)
Pelly writes of some artists, in search of viral fame, who surreptitiously use
social media to effectively beta test melodies and motifs, basically putting
together songs via crowdsourcing. Artists have always fretted about the
pressure to conform, but the data-driven, music-as-content era feels
different. “You are a Spotify employee at that point,” Daniel Lopatin, who
makes abstract electronic music as Oneohtrix Point Never, told Pelly. “If your
art practice is so ingrained in the brutal reality that Spotify has outlined
for all of us, then what is the music that you’re not making? What does the
music you’re not making sound like?” Listeners might wonder something similar.
What does the music we’re not hearing sound like?;
RESPONSE
------------------------------------------------------------------------------
The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists, who struggle to survive in a hyper-abundant present where
music is often valued for its convenience rather than its artistic merit.
Spotify's algorithms prioritize popularity and profitability over artistic
diversity, leading to a homogenization of music and a devaluation of the
labor that goes into creating it. Meanwhile, the company's executives reap
enormous profits, with CEO Daniel Ek's net worth rivaling that of the
wealthiest musicians. As music critic Liz Pelly argues, the streaming economy
raises important questions about autonomy, creativity, and the value of art
in a world where everything is readily available and easily accessible.Exemple : Sélectionnez AI avec AWS
Cet exemple montre comment utiliser AWS pour générer, exécuter et expliquer des instructions SQL à partir d'invites de langage naturel ou de clavardage à l'aide des modèles disponibles avec AWS.
L'exemple suivant montre comment utiliser AWS comme fournisseur d'IA avec Amazon Bedrock et ses modèles de base. L'exemple montre comment créer des informations d'identification AWS, fournir un accès réseau, créer un profil d'IA et utiliser des actions Select AI pour générer des requêtes SQL à partir d'invites en langage naturel et clavarder à l'aide des modèles AWS Foundation.
Pour utiliser AWS, obtenez la clé d'accès, les clés secrètes et l'ID modèle. Voir . Utilisez l'ID modèle comme attribut model dans la procédure DBMS_CLOUD_AI.CREATE_PROFILE. Vous devez spécifier l'attribut model explicitement, car aucun modèle par défaut n'est fourni.
--Grant EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER;
--
-- Create Credential for AI provider
--
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'AWS_CRED',
username => '<your_AWS_access_key>',
password => '<your_AWS_secret_key>'
);
END;
/
PL/SQL procedure successfully completed.
--
-- Grant Network ACL for AWS
--
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'bedrock-runtime.us-east-1.amazonaws.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
PL/SQL procedure successfully completed.
--
-- Create AI profile
--
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'AWS',
attributes =>'{"provider": "aws",
"credential_name": "AWS_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"}],
"model" : "anthropic.claude-v2",
"conversation" : "true"
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');
PL/SQL procedure successfully completed.
--
-- Use AI
--
SELECT AI how many customers exist;
"RESPONSE"
"COUNT(*)"
55500
SELECT AI how many customers in San Francisco are married;
"RESPONSE"
"COUNT(*)"
46
SELECT AI showsql how many customers in San Francisco are married;
"RESPONSE"
"SELECT COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE UPPER(C."CUST_CITY") = UPPER('San Francisco')
AND UPPER(C."CUST_MARITAL_STATUS") = UPPER('Married')"
SELECT AI explainsql how many customers in San Francisco are married;
"RESPONSE""SELECT
COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE C."CUST_CITY" = 'San Francisco'
AND C."CUST_MARITAL_STATUS" = 'Married'
Explanation:
- Used table alias C for CUSTOMERS table
- Used easy to read column names like CUST_CITY, CUST_MARITAL_STATUS
- Enclosed table name, schema name and column names in double quotes
- Compared string values in WHERE clause without UPPER() since the values are not in double quotes
- Counted number of rows satisfying the condition and aliased the count as "Number of Married Customers in San Francisco""
SELECT AI narrate what are the top 3 customers in San Francisco;
"RESPONSE"
The top 3 customers in San Francisco ordered by credit limit in descending order are:
1. Bert Katz
2. Madallyn Ladd
3. Henrietta Snodgrass
SELECT AI chat what is Autonomous AI Database;
"RESPONSE"
"An Autonomous AI Database is a cloud database service provided by Oracle Corporation. Some key features of Oracle Autonomous AI Database include:
- Fully automated and self-driving - The database automatically upgrades, patches, tunes, and backs itself up without any human intervention required.
- Self-securing - The database uses machine learning to detect threats and automatically apply security updates.
- Self-repairing - The database monitors itself and automatically recovers from failures and errors without downtime.
- Self-scaling - The database automatically scales compute and storage resources up and down as needed to meet workload demands.
- Serverless - The database is accessed as a cloud service without having to manually provision any servers or infrastructure.
- High performance - The database uses Oracle's advanced automation and machine learning to continuously tune itself for high performance.
- Multiple workload support - Supports transaction processing, analytics, graph processing, etc in a single converged database.
- Fully managed - Oracle handles all the management and administration of the database. Users just load and access their data.
- Compatible - Supports common SQL and Oracle PL/SQL for easy migration from on-prem Oracle databases.
So in summary, an Oracle Autonomous AI Database is a fully automated, self-driving, self-securing, and self-repairing database provided as a simple cloud service. The automation provides high performance, elasticity, and availability with minimal human labor required."
--
--Clear the profile
--
BEGIN
DBMS_CLOUD_AI.CLEAR_PROFILE;
END;
/
PL/SQL procedure successfully completed.
--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
PL/SQL procedure successfully completed.Exemple : Activer les conversations dans Select AI
Ces exemples illustrent l'activation des conversations dans Select AI.
Note :
Un utilisateur doté des privilèges d'administrateur (ADMIN) doit accorder EXECUTE et activer la liste de contrôle d'accès au réseau.
Conversations basées sur une session
Créez votre profil IA. Réglez l'attribut conversation à true dans le profil, cette action inclut le contenu des interactions ou invites précédentes, y compris éventuellement les métadonnées de schéma, et définissez votre profil. Une fois le profil activé, vous pouvez commencer à avoir des conversations avec vos données. Utilisez le langage naturel pour poser des questions et effectuer un suivi au besoin.
--Grants EXECUTE privilege to ADB_USER
--
SQL> grant execute on DBMS_CLOUD_AI to ADB_USER;
-- Grant Network ACL for OpenAI endpoint
--
SQL> BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
PL/SQL procedure successfully completed.
--
-- Create Credential for AI provider
--
EXEC
DBMS_CLOUD.CREATE_CREDENTIAL(
CREDENTIAL_NAME => 'OPENAI_CRED',
username => 'OPENAI',
password => '<your_api_token>');
PL/SQL procedure successfully completed.
--
-- Create AI profile
--
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OPENAI',
attributes =>'{"provider": "openai",
"credential_name": "OPENAI_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"}],
"conversation": "true"
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI');
PL/SQL procedure successfully completed.
--
-- Get Profile in current session
--
SQL> SELECT DBMS_CLOUD_AI.get_profile() from dual;
DBMS_CLOUD_AI.GET_PROFILE()
--------------------------------------------------------------------------------
"OPENAI"
--
-- Use AI
--
what are the total number of customers;
CUSTOMER_COUNT
--------------
55500
break out count of customers by country;
RESPONSE
-----------------
COUNTRY_NAME CUSTOMER_COUNT
Italy 7780
Brazil 832
Japan 624
United Kingdom 7557
Germany 8173
United States of America 18520
France 3833
Canada 2010
Spain 2039
China 712
Singapore 597
New Zealand 244
Poland 708
Australia 831
Argentina 403
Denmark 383
South Africa 88
Saudi Arabia 75
Turkey 91
what age group is most common;
RESPONSE
--------------------------------------------------------------------------------
AGE_GROUP CUSTOMER_COUNT
65+ 28226
select ai keep the top 5 customers and their country by their purchases and include a rank in the result;
RESPONSE
--------------------------------------------------------------------------------
RANK CUSTOMER_NAME COUNTRY PURCHASES
1 Abigail Ruddy Japan 276
2 Abigail Ruddy Italy 168
3 Abigail Ruddy Japan 74
3 Abner Robbinette Germany 74
5 Abner Everett France 68
SQL> EXEC DBMS_CLOUD_AI.DROP_PROFILE('OPENAI');
PL/SQL procedure successfully completed.Conversations personnalisables
- Créer une conversation
- Définir la conversation dans la session utilisateur courante
- Utiliser
Select AI <action> <prompt>
- Utilisez la fonction
DBMS_CLOUD_AI.CREATE_CONVERSATION, puis définissez la conversation à l'aide deDBMS_CLOUD_AI.SET_CONVERSATION_ID. - Appelez la procédure
DBMS_CLOUD_AI.CREATE_CONVERSATIONdirectement pour créer et définir la conversation en une seule étape.
L'exemple suivant montre comment créer une conversation à l'aide de la fonction DBMS_CLOUD_AI.CREATE_CONVERSATION et la définir à l'aide de la procédure DBMS_CLOUD_AI.SET_CONVERSATION_ID.
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION; -- in 19c, run SELECT DBMS_CLOUD_AI.create_conversation FROM dual;
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
PL/SQL procedure successfully completedL'exemple suivant illustre l'exécution de la procédure DBMS_CLOUD_AI.CREATE_CONVERSATION pour créer et définir directement conversation_id.
EXEC DBMS_CLOUD_AI.create_conversation;
PL/SQL procedure successfully completed.Vous pouvez également personnaliser les attributs de conversation tels que les attributs title, description, retention_days et conversation_length.
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes => '{"title":"My first conversation",
"description":"this is my first conversation",
"retention_days":5,
"conversation_length":5}');
CREATE_CONVERSATION
------------------------------------
38F8B874-7687-2A3F-E063-9C6D4664EC3AVous pouvez voir si une conversation existe en interrogeant la vue DBA/USER_CLOUD_AI_CONVERSATIONS.
-- Verify the setup
SELECT conversation_id, conversation_title, description, retention_days,
conversation_length FROM DBA_CLOUD_AI_CONVERSATIONS WHERE
conversation_id = '38F8B874-7687-2A3F-E063-9C6D4664EC3A';
CONVERSATION_ID CONVERSATION_TITLE DESCRIPTION RETENTION_DAYS CONVERSATION_LENGTH
------------------------------------ ----------------------------------------------- ---------------------------------- ------------------------------ -------------------
38F8B874-7687-2A3F-E063-9C6D4664EC3A My first conversation this is my first conversation +00005 00:00:00.000000 5
Vous pouvez également vérifier si une conversation est définie en appelant la fonction DBMS_CLOUD_AI.GET_CONVERSATION_ID.
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;
--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92Après avoir créé et défini la conversation et activé votre profil d'intelligence artificielle, vous pouvez commencer à interagir avec vos données. Utilisez le langage naturel pour poser des questions et effectuer un suivi au besoin.
Utilisez SELECT AI <ACTION> <PROMPT>.
SELECT AI CHAT What is the difference in weather between Seattle and San Francisco?;
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco are both located on the West Coast of the United State
s, but they have distinct weather patterns due to their unique geography and cli
mate conditions. Here are the main differences:
1. **Rainfall**: Seattle is known for its rainy reputation, with an average annu
al rainfall of around 37 inches (94 cm). San Francisco, on the other hand, recei
ves significantly less rainfall, with an average of around 20 inches (51 cm) per
year.
2. **Cloud Cover**: Seattle is often cloudy, with an average of 226 cloudy days
per year. San Francisco is also cloudy, but to a lesser extent, with an average
of 165 cloudy days per year.
......
SELECT AI CHAT Explain the difference again in one paragraph only.;
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco have different weather patterns despite both experienc
ing a mild oceanic climate. San Francisco tends to be slightly warmer, with aver
age temperatures ranging from 45?F to 67?F, and receives less rainfall, around 2
0 inches per year, mostly during winter. In contrast, Seattle is cooler, with te
mperatures ranging from 38?F to 64?F, and rainier, with around 37 inches of rain
fall per year, distributed throughout the year. San Francisco is also known for
its fog, particularly during summer, and receives more sunshine, around 160 sunn
y days per year, although it's often filtered through the fog. Overall, San Fran
cisco's weather is warmer and sunnier, with more pronounced seasonal variations,
while Seattle's is cooler and rainier, with more consistent temperatures throug
hout the year.L'exemple suivant montre comment deux conversations sont utilisées de manière interchangeable pour poser des questions et vérifier l'exactitude des réponses. Chaque conversation commence par une question différente axée sur la comparaison. Plus tard, lorsque vous posez la même question de suivi dans les deux conversations, chacune retourne une réponse différente en fonction de son contexte précédent.
-- First conversation
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION;
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
-- Second conversation
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION;
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
-- Call generate using the first conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
prompt => 'What is the difference in weather between Seattle and San Francisco?',
profile_name => 'GENAI',
action => 'CHAT',
params => '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco, both located in the Pacific Northwest and Northern Ca
lifornia respectively, experience a mild oceanic climate. However, there are som
e notable differences in their weather patterns:
1. **Temperature**: San Francisco tends to be slightly warmer than Seattle, espe
cially during the summer months. San Francisco's average temperature ranges from
45?F (7?C) in winter to 67?F (19?C) in summer, while Seattle's average temperat
ure ranges from 38?F (3?C) in winter to 64?F (18?C) in summer.
2. **Rainfall**: Seattle is known for its rainy reputation, with an average annu
al rainfall of around 37 inches (94 cm). San Francisco receives less rainfall, w
ith an average of around 20 inches (51 cm) per year. However, San Francisco's ra
infall is more concentrated during the winter months, while Seattle's rainfall i
s more evenly distributed throughout the year.
......
-- Call generate using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
prompt => 'How does the cost of living compare between New York and Los Angeles?',
profile_name => 'GENAI',
action => 'CHAT',
params => '{"conversation_id":"30C9DB6E-EA4E-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
RESPONSE
--------------------------------------------------------------------------------
The cost of living in New York and Los Angeles is relatively high compared to ot
her cities in the United States. However, there are some differences in the cost
of living between the two cities. Here's a comparison of the cost of living in
New York and Los Angeles:
1. Housing: The cost of housing is significantly higher in New York than in Los
Angeles. The median home price in New York is around $999,000, while in Los Ange
les it's around $849,000. Rent is also higher in New York, with the average rent
for a one-bedroom apartment being around $3,000 per month, compared to around $
2,400 per month in Los Angeles.
2. Food: The cost of food is relatively similar in both cities, with some variat
ion in the cost of certain types of cuisine. However, eating out in New York can
be more expensive, with the average cost of a meal at a mid-range restaurant be
ing around $15-20 per person, compared to around $12-18 per person in Los Angele
s.
......
-- Call generate using the first conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
prompt => 'Explain the difference again in one paragraph only.',
profile_name => 'GENAI',
action => 'CHAT',
params => '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco have different weather patterns despite both experienc
ing a mild oceanic climate. San Francisco tends to be slightly warmer, with aver
age temperatures ranging from 45?F to 67?F, and receives less rainfall, around 2
0 inches per year, mostly during winter. In contrast, Seattle is cooler, with te
mperatures ranging from 38?F to 64?F, and rainier, with around 37 inches of rain
fall per year, distributed throughout the year. San Francisco is also known for
its fog, particularly during summer, and receives more sunshine, around 160 sunn
y days per year, although it's often filtered through the fog. Overall, San Fran
cisco's weather is warmer and sunnier, with more pronounced seasonal variations,
while Seattle's is cooler and rainier, with more consistent temperatures throug
hout the year.
-- Call generate using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
prompt => 'Explain the difference again in one paragraph only.',
profile_name => 'GENAI',
action => 'CHAT',
params => '{"conversation_id":"30C9DB6E-EA4E-AFBA-E063-9C6D46644B92"}') AS RESPONSE;
RESPONSE
--------------------------------------------------------------------------------
The cost of living in New York is approximately 20-30% higher than in Los Angele
s, mainly due to the higher cost of housing and transportation. New York has a m
edian home price of around $999,000 and average rent of $3,000 per month for a o
ne-bedroom apartment, compared to Los Angeles' median home price of $849,000 and
average rent of $2,400 per month. While the cost of food and utilities is relat
ively similar in both cities, the cost of transportation is higher in Los Angele
s due to its car-centric culture, but the cost of public transportation is highe
r in New York. Overall, the total monthly expenses for a single person in New Yo
rk can range from $4,600, compared to around $4,050 in Los Angeles, making New Y
ork the more expensive city to live in.
Vous pouvez appeler la fonction DBMS_CLOUD_AI.GENERATE sans spécifier de conversation. Toutefois, dans de tels cas, une réponse significative ne doit pas être attendue.
-- Ask SELECT AI using the second conversation.
SELECT DBMS_CLOUD_AI.GENERATE(
prompt => 'Explain the difference again in one paragraph only.',
profile_name => 'GENAI',
action => 'CHAT') AS RESPONSE;
RESPONSE
--------------------------------------------------------------------------------
There is no previous explanation to draw from, as this is the beginning of our c
onversation. If you would like to ask a question or provide a topic, I would be
happy to explain the differences related to it in one paragraph.
Vous pouvez interroger les vues de conversation DBMS_CLOUD_AI pour vérifier les détails de la conversation et des invites. Pour plus de détails, voir .
Note :
Le privilègeLes vues avec le préfixe DBA_ sont disponibles uniquement pour les utilisateurs disposant de privilèges d'administrateur (ADMIN).
SELECT conversation_id, conversation_title, description FROM dba_cloud_ai_conversations;
CONVERSATION_ID
------------------------------------
CONVERSATION_TITLE
----------------------------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
Seattle vs San Francisco Weather
The conversation discusses the comparison of weather patterns between Seattle an
d San Francisco, focusing on the differences in temperature, rainfall, fog, suns
hine, and seasonal variation between the two cities.
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
NY vs LA Cost Comparison
The conversation discusses and compares the cost of living in New York and Los A
ngeles, covering housing, food, transportation, utilities, and taxes to provide
an overall view of the expenses in both cities.
SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts
GROUP BY conversation_id;
CONVERSATION_ID COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92 2
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92 2Vous pouvez mettre à jour title, description et retention_days d'une conversation à l'aide de la procédure DBMS_CLOUD_AI.UPDATE_CONVERSATION. Vous pouvez vérifier la mise à jour en interrogeant la vue de conversation DBMS_CLOUD_AI.
-- Update the second conversation's title, description and retention_days
SQL> EXEC DBMS_CLOUD_AI.update_conversation(conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92',
attributes => '{"retention_days":20,
"description":"This a description",
"title":"a title",
"conversation_length":20}');
PL/SQL procedure successfully completed.
-- Verify the information for the second conversation
SQL> SELECT conversation_title, description, retention_days
FROM dba_cloud_ai_conversations
WHERE conversation_id = '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92';
CONVERSATION_TITLE DESCRIPTION RETENTION_DAYS LENGTH
-------------------------- ------------------------------------ -------------- --------------
a title This a description 20 20Vous pouvez supprimer une invite individuelle de vos conversations et vérifier la modification en interrogeant la vue de conversation DBMS_CLOUD_AI.
-- Find the latest prompt for first conversation
SELECT conversation_prompt_id FROM dba_cloud_ai_conversation_prompts
WHERE conversation_id = '30C9DB6E-EA4D-AFBA-E063-9C6D46644B92'
ORDER BY created DESC
FETCH FIRST ROW ONLY;
CONVERSATION_PROMPT_ID
------------------------------------
30C9DB6E-EA61-AFBA-E063-9C6D46644B92
-- Delete the prompt
EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');
PL/SQL procedure successfully completed.
-- Verify if the prompt is deleted
SELECT conversation_prompt_id FROM dba_cloud_ai_conversation_prompts
WHERE conversation_id = '30C9DB6E-EA4D-AFBA-E063-9C6D46644B92';
-- Only one prompt now
CONVERSATION_PROMPT_ID
------------------------------------
30C9DB6E-EA5A-AFBA-E063-9C6D46644B92Vous pouvez supprimer toute la conversation, ce qui supprime également toutes les invites qui lui sont associées.
-- Delete the first conversation
EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
PL/SQL procedure successfully completed.
-- Verify if the conversation and its prompts are removed
SELECT conversation_id FROM dba_cloud_ai_conversations;
-- We only have the second conversation now
CONVERSATION_ID
------------------------------------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92
SELECT conversation_id, count(*) FROM dba_cloud_ai_conversation_prompts GROUP BY conversation_id;
-- We only have prompts in the second conversation
CONVERSATION_ID COUNT(*)
------------------------------------ ----------
30C9DB6E-EA4E-AFBA-E063-9C6D46644B92 2Exemple : Sélectionner une rétroaction sur l'intelligence artificielle
Ces exemples montrent comment vous pouvez utiliser la procédure DBMS_CLOUD_AI.FEEDBACK et les différents scénarios pour fournir une rétroaction afin d'améliorer la génération d'interrogation SQL suivante.
Note :
Vous pouvez fournir une rétroaction pour les invites SQL Select AI même si l'invite n'a pas été exécutée précédemment. La sélection de l'intelligence artificielle ne nécessite pas que l'invite SQL soit utilisée dans une interrogation avant de soumettre une rétroaction; vous pouvez fournir une rétroaction pour toute invite valide à tout moment.
L'exemple suivant montre comment apporter des corrections au SQL généré en tant que rétroaction (réaction négative) en utilisant feedback_type comme negative et en fournissant votre interrogation SQL.
Vous ajoutez votre rétroaction au profil d'intelligence artificielle nommé OCI_FEEDBACK1 en appelant la procédure DBMS_CLOUD_AI.FEEDBACK avec le paramètre sql_text contenant l'invite. Voir pour en savoir plus sur les attributs. Ensuite, vous extrayez les colonnes content et attributes de la table <profile_name>_FEEDBACK_VECINDEX$VECTAB, qui est liée à cette interrogation SQL spécifique. Sélectionnez IA pour créer automatiquement cette table vectorielle lorsque vous utilisez la fonction de rétroaction pour la première fois. Pour plus d'informations, voir .
SQL> select ai showsql how many movies;
RESPONSE
------------------------------------------------------------------------
SELECT COUNT(m."MOVIE_ID") AS "Number of Movies" FROM "ADB_USER"."MOVIES" m
SQL> 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"');
PL/SQL procedure successfully completed.
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}L'exemple suivant montre comment fournir votre approbation pour que vous acceptiez et confirmiez l'énoncé SQL généré (réaction positive) en utilisant feedback_type comme positive.
Dans cet exemple, l'interrogation extrait sql_id de la vue v$mapped_sql pour l'invite indiquée. Pour plus d'informations, voir V_MAPPED_SQL.
Vous ajoutez votre rétroaction au profil d'intelligence artificielle nommé OCI_FEEDBACK1 en appelant la procédure DBMS_CLOUD_AI.FEEDBACK avec le paramètre sql_id. Ensuite, vous extrayez les colonnes content et attributes de la table <profile_name>_FEEDBACK_VECINDEX$VECTAB, qui est liée à cette interrogation SQL spécifique. Sélectionnez IA pour créer automatiquement cette table vectorielle lorsque vous utilisez la fonction de rétroaction pour la première fois. Pour plus d'informations, voir .
SQL> select ai showsql how many distinct movie genres?;
RESPONSE
-----------------------------------------------------------------------------------------
SELECT COUNT(DISTINCT g."GENRE_NAME") AS "Number of Movie Genres" FROM "ADB_USER"."GENRES" g
SQL> SELECT sql_id FROM v$mapped_sql WHERE sql_text = 'select ai showsql how many distinct movie genres?';
SQL_ID
-------------
852w8u83gktc1
SQL> exec DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1', sql_id=> '852w8u83gktc1', feedback_type=>'positive', operation=>'add');
PL/SQL procedure successfully completed.
SQL> SELECT content, attributes FROM OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB WHERE JSON_VALUE(attributes, '$.sql_id') ='852w8u83gktc1';
CONTENT
----------------------------------------------------------------------------------------------------
how many distinct movie genres?
ATTRIBUTES
----------------------------------------------------------------------------------------------------
{"response":"SELECT COUNT(DISTINCT g.\"GENRE_NAME\") AS \"Number of Movie Genres\" FROM \"ADB_USER\".\"GENRES\" g","feedback_type":"positive","sql_id":"852w8u83gktc1","sql_text":"select ai showsql how many distinct movie genres?","feedback_content":null}Vous pouvez fournir une rétroaction pour les invites SQL même si l'invite n'a pas été utilisée précédemment. Par exemple :
BEGIN
DBMS_CLOUD_AI.FEEDBACK(
profile_name=>'AI_PROFILE',
sql_text=>'select ai runsql how many products named PAD', -- Prior usage not required
feedback_type=>'negative',
response=>'SELECT COUNT(*) AS "Num" FROM "PRODUCTS"."CATG" o WHERE UPPER(o."NAME") LIKE ''%PAD%''',
feedback_content=>'Use LIKE instead of ='
);
END;
/Dans ce cas, la rétroaction pour l'invite select ai runsql how many products named PAD est soumise sans avoir besoin d'utiliser l'invite au préalable.
DBMS_CLOUD_AI.FEEDBACK. Cet exemple montre comment utiliser sql_id et sql_text avec d'autres paramètres.
Note :
Sélectionnez IA pour n'autoriser qu'une seule entrée de rétroaction pour chaquesql_id. Si vous fournissez une rétroaction supplémentaire pour la même sql_id, Select AI remplace l'entrée précédente par la nouvelle.
Voir pour plus de détails sur les paramètres.
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');Cet exemple montre comment utiliser l'action feedback pour améliorer le code SQL généré en suggérant les modifications à l'aide du langage naturel.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'OCI_FEEDBACK1',
attributes=>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
"object_list": [{"owner": "ADB_USER", "name": "users"},
{"owner": "ADB_USER", "name": "movies"},
{"owner": "ADB_USER", "name": "genres"},
{"owner": "ADB_USER", "name": "watch_history"},
{"owner": "ADB_USER", "name": "movie_genres"},
{"owner": "ADB_USER", "name": "employees1"},
{"owner": "ADB_USER", "name": "employees2"}
]
}');
END;
/
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_FEEDBACK1');
PL/SQL procedure successfully completed.
select ai showsql rank movie duration;
RESPONSE
-------------------------------------------------------------------------------
SELECT "DURATION" AS "Movie Duration" FROM "ADB_USER"."MOVIES" ORDER BY "DURATION"
select ai feedback use ascending sorting;
RESPONSE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "rank movie duration" is successfully refined. The refined SQL query as following:
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASC
select ai showsql rank the movie duration;
RESPONSE
-----------------------------------------------------------------------------------------
SELECT m."DURATION" AS "Movie Duration" FROM "ADB_USER."MOVIES" m ORDER BY m."DURATION" ASCCet exemple montre comment utiliser l'action feedback pour accepter l'énoncé SQL généré à l'aide du langage naturel.
--Positive feedback
select ai showsql which movies are comedy?;
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT DISTINCT m."TITLE" AS "Movie Title" FROM "ADB_USER"."MOVIES" m INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID" INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID" WHERE g."GENRE_NAME" = 'comedy'
select ai feedback this is correct;
RESPONSE
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Thank you for your positive feedback. The SQL query for prompt "which movies are comedy?" is correctly implemented and delivering the expected results. It will be referenced for future optimizations and improvements.
Select AI Feedback Action Referring SQL_IDCet exemple montre comment utiliser SQL_ID avec l'action feedback pour fournir une rétroaction pour une interrogation SQL générée particulière. Vous pouvez obtenir SQL_ID en interrogeant la table v$MAPPED_SQL.
-- Query mentioned with SQL_ID
select ai showsql how many movies are in each genre;
RESPONSE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT g."GENRE_NAME" AS "Genre Name", COUNT(m."MOVIE_ID") AS "Number of Movies" FROM "ADB_USER"."MOVIES" m INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID" INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID" GROUP BY g."GENRE_NAME"
select sql_id from v$cloud_ai_sql where sql_text = 'select ai showsql how many movies are in each genre';
SQL_ID
-------------
8azkwc0hr87ga
select ai feedback for query with sql_id = '8azkwc0hr87ga', rank in descending sorting;
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "how many movies are in each genre" is successfully refined. The refined SQL query as following:
SELECT g."GENRE_NAME" AS "Genre Name", COUNT(m."MOVIE_ID") AS "Number of Movies"
FROM "ADB_USER"."MOVIES" m
INNER JOIN "ADB_USER"."MOVIE_GENRES" mg ON m."MOVIE_ID" = mg."MOVIE_ID"
INNER JOIN "ADB_USER"."GENRES" g ON mg."GENRE_ID" = g."GENRE_ID"
GROUP BY g."GENRE_NAME"
ORDER BY COUNT(m."MOVIE_ID") DESC
Cet exemple présente l'action feedback pour une interrogation Sélectionner l'intelligence artificielle spécifique en incluant l'invite Sélectionner l'intelligence artificielle entre guillemets suivie de votre rétroaction.
-Query mentioned with SQL_TEXT
select ai showsql how many watch history in total;
RESPONSE
----------------------------------------------------------------------------------
SELECT COUNT(w."WATCH_ID") AS "Total Watch History" FROM "ADB_USER"."WATCH_HISTORY" w
select ai feedback for query "select ai showsql how many watch history in total", name the column as total_watch;
RESPONSE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Based on your feedback, the SQL query for prompt "how many watch history in total" is successfully refined. The refined SQL query as following:
SELECT COUNT(w."WATCH_ID") AS "total_watch" FROM "ADB_USER"."WATCH_HISTORY" wExemple : Sélectionner l'intelligence artificielle pour les graphiques de propriétés
Cet exemple montre comment utiliser la procédure DBMS_CLOUD_AI.GENERATE et une invite en langage naturel pour générer des interrogations de graphique PGQ pour interroger les données de graphique.
Cet exemple montre comment définir plusieurs graphiques de propriétés dans votre profil d'intelligence artificielle, notamment un exemple d'interrogation et sa sortie.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name =>'OPENAI',
attributes =>'{"provider": "openai",
"model": "gpt-4o",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "ADB_USER", "name": "LDBC_GRAPH"},
{"owner": "ADB_USER", "name": "G"}]
}');
END;
/
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE(profile_name => 'OPENAI');
PL/SQL procedure successfully completed.
SQL> select ai who bought a dress;
CUSTOMER_N
----------
Kate
1 row selected.Exemple : Exemples d'invites pour les graphiques de propriétés
Ces exemples montrent comment créer des données-échantillons et afficher le code SQL généré à l'aide de l'action showsql pour une invite donnée.
L'exemple suivant crée des exemples de tables et un graphique de propriétés.
CREATE TABLE Person
(
id NUMBER PRIMARY KEY,
firstName VARCHAR2(20 CHAR),
lastName VARCHAR2(20 CHAR),
age NUMBER,
jsonProp VARCHAR2(40 CHAR)
);
CREATE TABLE Post
(
id NUMBER PRIMARY KEY,
content VARCHAR2(20 CHAR)
);
CREATE TABLE personLikesPost
(
idPerson NUMBER REFERENCES Person (id),
idPost NUMBER REFERENCES Post (id)
);
CREATE TABLE personKnowsPerson
(
idPerson1 NUMBER REFERENCES Person (id),
idPerson2 NUMBER REFERENCES Person (id)
);
CREATE PROPERTY GRAPH person_graph
VERTEX TABLES (
Person KEY (id) LABEL Person
PROPERTIES (firstName, lastName, age, jsonProp),
Post KEY (id) LABEL Post
PROPERTIES(content)
)
EDGE TABLES (
personLikesPost
KEY(idPerson, idPost)
SOURCE KEY (idPerson) REFERENCES Person (id)
DESTINATION KEY (idPost) REFERENCES POST (id)
LABEL Likes NO PROPERTIES,
personKnowsPerson
KEY(idPerson1, idPerson2)
SOURCE KEY (idPerson1) REFERENCES Person (id)
DESTINATION KEY (idPerson2) REFERENCES Person (id)
LABEL Knows NO PROPERTIES
);
insert into Person values (1, 'John', 'Doe',23, '{"key1":"value1","key2":"value2"}');
insert into Person values (2, 'Scott', 'Tiger', 25, '{"key1":"value3","key2":"value4"}');
insert into Person values (3, 'Max', 'Power', 27, '{"key1":"value5","key2":"value6"}');
insert into Person values (4, 'Jane', 'Doe', 22, '{"key1":"value7","key2":"value8"}');
insert into Person (id, Firstname, age) values (5, 'Hans', 23);
insert into Person (id, Firstname, age) values (6, 'Franz', 24);
INSERT INTO Post VALUES (10, 'Lorem ipsum...');
INSERT INTO Post VALUES (11, 'Nulla facilisi...');
INSERT INTO Post VALUES (12, 'Vestibulum eget ..');
INSERT INTO Post VALUES (13, 'Sed fermentum...');
INSERT INTO Post VALUES (14, 'Fusce at ...');
INSERT INTO Post VALUES (15, 'Pellentesque sit ...');
INSERT INTO Post VALUES (16, 'Integer...');
INSERT INTO Post VALUES (17, 'Curabitur luctus ...');
INSERT INTO Post VALUES (18, 'Nam in ...');
INSERT INTO Post VALUES (19, 'Etiam ac ...');
insert into personKnowsPerson values (1, 2);
insert into personKnowsPerson values (2, 3);
insert into personKnowsPerson values (3, 4);
insert into personKnowsPerson values (4, 5);
insert into personKnowsPerson values (5, 6);
insert into personKnowsPerson values (6, 2);
insert into personKnowsPerson values (5, 3);
INSERT INTO personLikesPost VALUES (1, 10);
INSERT INTO personLikesPost VALUES (1, 11);
INSERT INTO personLikesPost VALUES (1, 12);
INSERT INTO personLikesPost VALUES (2, 10);
INSERT INTO personLikesPost VALUES (2, 13);
INSERT INTO personLikesPost VALUES (2, 14);
INSERT INTO personLikesPost VALUES (3, 11);
INSERT INTO personLikesPost VALUES (3, 15);
INSERT INTO personLikesPost VALUES (3, 16);
INSERT INTO personLikesPost VALUES (4, 12);
INSERT INTO personLikesPost VALUES (4, 17);
INSERT INTO personLikesPost VALUES (4, 18);
INSERT INTO personLikesPost VALUES (5, 13);
INSERT INTO personLikesPost VALUES (5, 14);
INSERT INTO personLikesPost VALUES (5, 19);
INSERT INTO personLikesPost VALUES (6, 15);
INSERT INTO personLikesPost VALUES (6, 16);
INSERT INTO personLikesPost VALUES (6, 17);
INSERT INTO personLikesPost VALUES (1, 18);
INSERT INTO personLikesPost VALUES (2, 19);
commit;Invite : Find all the people IDs
SELECT person_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (v IS "PERSON")
COLUMNS (VERTEX_ID(v) AS person_id))Invite : Find all the edge IDs
SELECT edge_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (v1) -[e]-> (v2)
COLUMNS (EDGE_ID(e) AS edge_id))Invite : Find all the knows relationship IDs
SELECT knows_id
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p1 IS "PERSON") -[e IS "KNOWS"]-> (p2 IS "PERSON")
COLUMNS (EDGE_ID(e) AS knows_id))Invite : List all people who know someone who liked the post 'Sed fermentum...'
SELECT person_id, person_firstname, person_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p1 IS "PERSON") -[e1 IS "KNOWS"]-> (p2 IS "PERSON") -[e2 IS "LIKES"]-> (post IS "POST")
WHERE UPPER(post."CONTENT") = UPPER('Sed fermentum...')
COLUMNS (VERTEX_ID(p1) AS person_id, p1."FIRSTNAME" AS person_firstname, p1."LASTNAME" AS person_lastname))Invite : Find first name and last name of all people
SELECT first_name, last_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON")
COLUMNS (p."FIRSTNAME" AS first_name, p."LASTNAME" AS last_name))Invite : Find post contents liked by John Doe
SELECT post_content
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON") -[e IS "LIKES"]-> (post IS "POST")
WHERE UPPER(p."FIRSTNAME") = UPPER('John') AND UPPER(p."LASTNAME") = UPPER('Doe')
COLUMNS (post."CONTENT" AS post_content))Invite : Show all people (full name) and display their key1 value from jsonProp property
SELECT person_fullname, json_key1
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON")
COLUMNS (
(p."FIRSTNAME" || ' ' || p."LASTNAME") AS person_fullname,
JSON_QUERY(p."JSONPROP", '$.key1') AS json_key1
)
)Invite : Find friends of Scott Tiger ordered by their last name
SELECT friend_firstname, friend_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON") -[e IS "KNOWS"]-> (f IS "PERSON")
WHERE UPPER(p."FIRSTNAME") = UPPER('Scott') AND UPPER(p."LASTNAME") = UPPER('Tiger')
COLUMNS (f."FIRSTNAME" AS friend_firstname, f."LASTNAME" AS friend_lastname)
)
ORDER BY friend_lastnameInvite : Find all people ordered by first name. Skip one result and return 2 results only
SELECT person_firstname
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p IS "PERSON")
COLUMNS (p."FIRSTNAME" AS person_firstname))
ORDER BY person_firstname
OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLYInterrogations non prises en charge
Pour les interrogations suivantes, certains LLM génèrent des NL2SQL valides, mais le SQL résultant utilise des fonctions qui ne sont pas encore prises en charge dans Oracle AI Database 26ai.
Invite : Find people that do not know Scott.
La sous-interrogation EXISTS n'est pas prise en charge.
SELECT person_id, first_name, last_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p1 IS "PERSON")
WHERE NOT EXISTS (
SELECT 1
FROM GRAPH_TABLE("ADB_USER"."PERSONGRAPH"
MATCH (p2 IS "PERSON") -[e IS "PERSONKNOWSPERSON"]-> (p3 IS "PERSON"
)
WHERE p2."ID" = p1."ID" AND UPPER(p3."FIRSTNAME") = UPPER('Scott')
COLUMNS (1 AS dummy_value))
)
COLUMNS (p1."ID" AS person_id, p1."FIRSTNAME" AS first_name, p1."LASTNAME" A
S last_name))Invite : Show all people and how many posts they have liked (show people even if they have not liked a post).
La correspondance OPTIONAL n'est pas prise en charge.
SELECT person_id, person_firstname, person_lastname, liked_post_ids
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (p is "PERSON") OPTIONAL MATCH (p) -[l is "PERSONLIKESPOST"]-> (post is "POST")
COLUMNS(
VERTEX_ID(p) as person_id,
p."FIRSTNAME" as person_firstname,
p."LASTNAME" as person_lastname,
JSON_ARRAYAGG(VERTEX_ID(post)) as liked_post_ids
))Invite : Find all people that Scott can reach.
Les interrogations qui utilisent des quantificateurs non limités ne sont pas prises en charge.
SELECT person_id, person_firstname, person_lastname
FROM GRAPH_TABLE("ADB_USER"."PERSONGRAPH"
MATCH (src IS "PERSON") -[e IS "PERSONKNOWSPERSON"]->* (dst IS "PERSON")
WHERE src."FIRSTNAME" = 'Scott'
COLUMNS (
VERTEX_ID(dst) AS person_id,
dst."FIRSTNAME" AS person_firstname,
dst."LASTNAME" AS person_lastname
)
)Interrogations intermittentes
Il a été démontré que les GML ont du mal à traduire les interrogations qui nécessitent plus d'un opérateur GRAPH_TABLE. Voici des exemples :
Invite : Show people who have liked all the same posts as Hans
SELECT person_id, person_name
FROM GRAPH_TABLE("PERSON_GRAPH"
MATCH (hans is "PERSON") -[likes_hans is "PERSONLIKESPOST"]-> (post is "POST"),
(other_person is "PERSON") -[likes_other is "PERSONLIKESPOST"]-> (post)
WHERE hans."FIRSTNAME" = 'Hans'
COLUMNS (VERTEX_ID(other_person) as person_id, other_person."FIRSTNAME" AS person_name)
)
WHERE NOT EXISTS (
SELECT 1
FROM GRAPH_TABLE("PERSONGRAPH"
MATCH (hans is "PERSON") -[likes_hans is "PERSONLIKESPOST"]-> (post is "POST")
WHERE hans."FIRSTNAME" = 'Hans'
COLUMNS (VERTEX_ID(post) as post_id)
) hans_posts
LEFT JOIN GRAPH_TABLE("PERSONGRAPH"
MATCH (other_person is "PERSON") -[likes_other is "PERSONLIKESPOST"]-> (post
is "POST")
COLUMNS (VERTEX_ID(post) as post_id)
) other_posts
ON hans_posts.post_id = other_posts.post_id
WHERE other_posts.post_id IS NULL
)Invite : Find all names of the people that can be reached in a 1 to 3 edge path
SELECT person_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (start_person IS "PERSON") -[e IS "KNOWS"]->{1,3} (end_person IS "PERSON")
COLUMNS (end_person."FIRSTNAME" AS person_name))Invite : Find all names of the people that can be reached in a 1 to 3 edge path where each person is younger than the next one
SELECT person_name
FROM GRAPH_TABLE("ADB_USER"."PERSON_GRAPH"
MATCH (start_person IS "PERSON") ((v1 IS "PERSON") -[e IS "KNOWS"]-> (v2 IS"PERSON") WHERE v1."AGE" < v2."AGE"){1,3} (end_person IS "PERSON")
COLUMNS (end_person."FIRSTNAME" AS person_name))Les grands modèles de langage ont souvent du mal à traduire les interrogations qui nécessitent un regroupement et une agrégation. Une erreur courante consiste à placer des agrégations dans la clause COLUMNS au lieu de la clause SELECT.
Invite : Find the average number of posts liked by all the users
SELECT AVG(COUNT(post)) AS average_liked_count
FROM GRAPH_TABLE("PERSON_GRAPH"
MATCH (p IS "PERSON") -[e IS "PERSONLIKESPOST"]-> (post IS "POST")
COLUMNS (VERTEX_ID(p) AS person, VERTEX_ID(post) AS post))
GROUP BY person;Exemple : Améliorer la génération d'interrogations SQL
Ces exemples montrent comment les commentaires, les annotations, les clés étrangères et les contraintes d'intégrité référentielle dans les tables et les colonnes de base de données peuvent améliorer la génération d'interrogations SQL à partir d'invites en langage naturel.
Si vos tables de base de données contiennent des commentaires de table et de colonne, activez le paramètre "comments":"true" dans la fonction DBMS_CLOUD_AI.CREATE_PROFILE pour extraire les commentaires au niveau de la table et de la colonne. Les commentaires sont ajoutés aux métadonnées du LLM pour une meilleure génération SQL.
-- Adding comments to table 1, table 2, and table 3. Table 1 has 3 columns, table 2 has 7 columns, table 3 has 2 columns.
-- TABLE1
COMMENT ON TABLE table1 IS 'Contains movies, movie titles and the year it was released';
COMMENT ON COLUMN table1.c1 IS 'movie ids. Use this column to join to other tables';
COMMENT ON COLUMN table1.c2 IS 'movie titles';
COMMENT ON COLUMN table1.c3 IS 'year the movie was released';
-- TABLE2
COMMENT ON TABLE table2 IS 'transactions for movie views - also known as streams';
COMMENT ON COLUMN table2.c1 IS 'day the movie was streamed';
COMMENT ON COLUMN table2.c2 IS 'genre ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c3 IS 'movie ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c4 IS 'customer ids. Use this column to join to other tables';
COMMENT ON COLUMN table2.c5 IS 'device used to stream, watch or view the movie';
COMMENT ON COLUMN table2.c6 IS 'sales from the movie';
COMMENT ON COLUMN table2.c7 IS 'number of views, watched, streamed';
-- TABLE3
COMMENT ON TABLE table3 IS 'Contains the genres';
COMMENT ON COLUMN table3.c1 IS 'genre id. use this column to join to other tables';
COMMENT ON COLUMN table3.c2 IS 'name of the genre';
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'myprofile',
attributes =>
'{"provider": "azure",
"azure_resource_name": "my_resource",
"azure_deployment_name": "my_deployment",
"credential_name": "my_credential",
"comments":"true",
"object_list": [
{"owner": "moviestream", "name": "table1"},
{"owner": "moviestream", "name": "table2"},
{"owner": " moviestream", "name": "table3"}
]
}'
);
DBMS_CLOUD_AI.SET_PROFILE(
profile_name => 'myprofile'
);
END;
/
--Prompts
select ai what are our total views;
RESPONSE
-------------------------------------------------
TOTAL_VIEWS
-----------
97890562
select ai showsql what are our total views;
RESPONSE
-------------------------------------------------------------------------
SELECT SUM(QUANTITY_SOLD) AS total_views
FROM "moviestream"."table"
select ai what are our total views broken out by device;
DEVICE TOTAL_VIEWS
-------------------------- -----------
mac 14719238
iphone 20793516
ipad 15890590
pc 14715169
galaxy 10587343
pixel 10593551
lenovo 5294239
fire 5296916
8 rows selected.
select ai showsql what are our total views broken out by device;
RESPONSE
---------------------------------------------------------------------------------------
SELECT DEVICE, COUNT(*) AS TOTAL_VIEWS
FROM "moviestream"."table"
GROUP BY DEVICECet exemple présente l'intégration des annotations dans Select AI, applicable dans Oracle Database 23ai. Les annotations sont ajoutées aux métadonnées envoyées au LLM.
Si votre schéma comporte une table avec des annotations, activez "annotations":"true" dans la fonction DBMS_CLOUD_AI.CREATE_PROFILE pour indiquer à Select AI d'ajouter des annotations aux métadonnées.
--
-- Annotations
--
CREATE TABLE emp2 (
empno NUMBER,
ename VARCHAR2(50) ANNOTATIONS (display 'lastname'),
salary NUMBER ANNOTATIONS ("person_salary", "column_hidden"),
deptno NUMBER ANNOTATIONS (display 'department')
)ANNOTATIONS (requires_audit 'yes', version '1.0', ówner 'HR Organization');
Table created.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'GOOGLE_ANNOTATIONS',
attributes => '{"provider": "google",
"credential_name": "GOOGLE_CRED",
"object_list": [{"owner": "ADB_USER", "name": "emp2"}],
"annotations" : "true"
}');
END;
/
PL/SQL procedure successfully completed.
EXEC DBMS_CLOUD_AI.SET_PROFILE('GOOGLE_ANNOTATIONS');
PL/SQL procedure successfully completed.Cet exemple montre comment le LLM peut générer des conditions JOIN précises en extrayant les contraintes de clé étrangère et de clé référentielle dans les métadonnées du LLM. Les contraintes de clé étrangère et de clé référentielle fournissent des données de relation structurée entre les tables et le LLM.
Activez "constraints":"true" dans la fonction DBMS_CLOUD_AI.CREATE_PROFILE pour Sélectionner l'intelligence artificielle afin d'extraire la clé étrangère et la clé référentielle.
--
-- Referential Constraints
--
CREATE TABLE dept_test (
deptno NUMBER PRIMARY KEY,
dname VARCHAR2(50)
);
Table created.
CREATE TABLE emp3 (
empno NUMBER PRIMARY KEY,
ename VARCHAR2(50),
salary NUMBER,
deptno NUMBER,
CONSTRAINT emp_dept_fk FOREIGN KEY (deptno) REFERENCES dept_test(deptno)
);
Table created.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'GOOGLE_CONSTRAINTS',
attribues =>'{"provider": "google",
"credential_name": "GOOGLE_CRED",
"object_list": [{"owner": "ADB_USER", "name": "dept_test"},
{"owner": "ADB_USER", "name": "emp3"}],
"constraints" : "true"
}');
END;
/
PL/SQL procedure successfully completed.
EXEC DBMS_CLOUD_AI.SET_PROFILE('GOOGLE_CONSTRAINTS');
PL/SQL procedure successfully completed.Ces exemples montrent comment Select AI détecte automatiquement les tables pertinentes et envoie les métadonnées uniquement pour les tables spécifiques pertinentes à l'interrogation dans Oracle Database 23ai. Pour activer cette fonction, réglez object_list_mode à automated. Cela crée automatiquement un index vectoriel nommé <profile_name>_OBJECT_LIST_VECINDEX. L'index vectoriel est initialisé avec des attributs et des valeurs par défaut tels que refresh_rate, similarity_threshold et match_limit. Vous pouvez modifier certains des attributs au moyen de DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX. Pour plus d'informations, voir .
Un profil est configuré pour utiliser object_list pour spécifier le schéma ou les objets dans le schéma alors que l'autre ne spécifie pas object_list. Toutefois, la même construction SQL est attendue.
Vérifiez pour fournir l'accès à l'ensemble DBMS_CLOUD_AI et fournir l'accès réseau au fournisseur d'intelligence artificielle.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'OCI_AUTO',
attributes=>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"object_list": [{"owner": "SH"}],
"oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
"model" : "meta.llama-3.3-70b-instruct"
}');
END;
/
PL/SQL procedure successfully completed.
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_AUTO');
PL/SQL procedure successfully completed.
select ai showsql how many customers in San Francisco are married;
RESPONSE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT COUNT(DISTINCT c."CUST_ID") AS "NUMBER_OF_CUSTOMERS"
FROM "SH"."CUSTOMERS" c
WHERE UPPER(c."CUST_CITY") = UPPER('San Francisco')
AND UPPER(c."CUST_MARITAL_STATUS") = UPPER('married')L'exemple suivant compare le même scénario sans utiliser object_list. Lorsque vous ne spécifiez pas object_list, l'option Sélectionner l'intelligence artificielle sélectionne automatiquement tous les objets disponibles pour le schéma courant.
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name=>'OCI_AUTO1',
attributes=>'{"provider": "oci",
"credential_name": "GENAI_CRED",
"oci_compartment_id": "ocid1.compartment.oc1..aaaa...",
"object_list_mode": "automated",
"model" : "meta.llama-3.3-70b-instruct"
}');
END;
/
PL/SQL procedure successfully completed.
EXEC DBMS_CLOUD_AI.SET_PROFILE('OCI_AUTO1');
PL/SQL procedure successfully completed.
select ai showsql how many customers in San Francisco are married?;
RESPONSE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT COUNT(c."CUST_ID") AS "Number_of_Customers"
FROM "SH"."CUSTOMERS" c
WHERE UPPER(c."CUST_CITY") = UPPER('San Francisco')
AND UPPER(c."CUST_MARITAL_STATUS") = UPPER('Married')