Recherche SQL (NL2SQL)
Utilisez SQL Search (NL2SQL) pour convertir des demandes en langage naturel en SQL validé pour les données d'entreprise dans OCI Generative AI.
NL2SQL aide les agents d'IA d'entreprise à utiliser des données d'entreprise fédérées sans déplacer ni copier les données sous-jacentes. Il utilise une couche d'enrichissement sémantique pour mettre en correspondance des termes métier avec des champs, des tables et des jointures de base de données, puis génère du code SQL à partir d'entrées en langage naturel.
NL2SQL génère du code SQL uniquement. Il n'exécute pas la requête.
Avant de commencer
Avant d'utiliser NL2SQL, créez une base de données et configurez les connexions de base de données requises.
Au minimum, vous devez :
- Une source Oracle Autonomous Database
- Une connexion d'enrichissement de service Database Tools
- Une connexion de requête au service Database Tools
Créer un magasin sémantique
Pour utiliser NL2SQL, créez une ressource de banque sémantique OCI.
Un magasin sémantique est soutenu par un magasin vectoriel avec des données structurées et comprend deux connexions DBTools :
- Connexion d'enrichissement
- Connexion de requête
Dans la console
Dans la console, créez une banque de vecteurs et sélectionnez Données structurées. Lorsque vous sélectionnez Données structurées, les options de configuration de la banque sémantique apparaissent, y compris les paramètres d'enrichissement et les détails de connexion à la base de données.
En utilisant l'API OCI Generative AI
Dans l'API OCI Generative AI, créez une banque sémantique à l'aide de l'opération CreateSemanticStore.
| URL de base | Chemin de l'adresse | Authentification |
|---|---|---|
https://generativeai.${region}.oci.oraclecloud.com/20231130 |
/semanticStores |
Session IAM uniquement |
L'API CreateSemanticStore fait partie de l'API du service OCI Generative AI et utilise l'authentification basée sur OCI IAM.
Connexions aux outils de paramétrage
NL2SQL utilise deux connexions de base de données à des fins différentes.
Connexion d'enrichissement
La connexion d'enrichissement est la connexion à privilèges supérieurs utilisée lors de l'enrichissement. Il a besoin de privilèges pour :
- Exécuter des requêtes
- Effectuer des opérations LDD
- Accéder à des exemples de valeur à partir de la base de données
OCI Generative AI utilise cette connexion pour lire les informations de schéma et créer les métadonnées nécessaires à la génération SQL.
Connexion de requête
La connexion de requête est la connexion à privilèges inférieurs utilisée pour exécuter des requêtes pour le compte de l'utilisateur interrogateur.
Cette séparation permet de distinguer les responsabilités de génération et d'exécution et de prendre en charge un contrôle d'accès plus sûr.
Enrichissement
Le processus d'enrichissement lit les métadonnées du schéma, telles que les tables et les colonnes, à partir de la base de données connectée. OCI Generative AI utilise ces métadonnées pour générer une meilleure instruction SQL.
Vous pouvez sélectionner les exécutions d'enrichissement suivantes :
- A la création : l'enrichissement démarre automatiquement après la création de la banque sémantique
- Manuel : l'enrichissement est exécuté ultérieurement via un appel d'API distinct
Pour déclencher l'enrichissement manuellement, appelez l'API Générer un travail d'enrichissement.
Générer du code SQL à partir du langage naturel
Une fois l'enrichissement terminé, appelez l'API GenerateSqlFromNl pour convertir l'entrée en langage naturel en SQL.
Cette API :
- Accepte les entrées en langage naturel
- Utilise les métadonnées sémantiques enrichies
- Renvoie le code SQL généré
Cette API n'exécute pas le code SQL sur la base de données.
Exécution de requête
Le serveur MCP DBTools orchestre le flux d'exécution complet :
- Appelle le service NL2SQL pour générer du code SQL.
- Autorise la demande.
- Exécute la requête sur la base de données source.
- Applique les garde-corps appropriés.
- Utilise l'identité de l'utilisateur final pour l'exécution.
Cela permet aux agents de travailler avec les données d'entreprise tout en conservant l'exécution dans le système source sous les autorisations existantes.
Utiliser NL2SQL dans un workflow agénétique
NL2SQL peut faire partie d'un flux de travail agénétique plus large.
Un client peut :
- Envoyer une demande à l'API des réponses pour démarrer la planification de l'agent et la validation de la demande
- Appeler GenerateSqlFromNl pour convertir la demande en langage naturel en SQL
- Utilisez le serveur DBTools MCP pour exécuter la requête, si nécessaire
- Transmettre les résultats SQL ou de requête générés dans l'API des réponses pour l'étape suivante du workflow
Cela vous permet de combiner l'accès aux données structurées avec un raisonnement et une orchestration d'agent plus larges.
Adaptation de NL2SQL aux agents
NL2SQL est une fonctionnalité de données d'entreprise dans OCI Generative AI. Elle est utile lorsque l'agent doit utiliser des données d'entreprise structurées en traduisant les demandes en langage SQL.
Contrairement à la recherche de fichiers, à l'interpréteur de code, à l'appel de fonction et à l'appel MCP, NL2SQL n'est pas configuré en tant qu'entrée tools d'API de réponses. Il utilise son propre flux d'API et ses ressources de prise en charge, centrées sur :
- Espace de stockage sémantique
- Connexions DBTools
- Enrichissement
- Générer SQL à partir du nl
API NL2SQL
Vous pouvez utiliser l'API suivante pour l'outil NL2SQL :
- Emplacements de stockage sémantique
-
CreateSemanticStoreListSemanticStoresGetSemanticStoreUpdateSemanticStoreChangeSemanticStoreCompartmentDeleteSemanticStore
- Travaux d'enrichissement
-
ListEnrichmentJobsGetEnrichmentJobGenerateEnrichmentJobCancelEnrichmentJobGenerateSqlFromNl
- Générer le code SQL
GenerateSqlFromNl