Le langage de requête structuré (SQL) est un langage complexe qui nécessite une compréhension des bases de données et des métadonnées. Aujourd'hui, IA générative peut permettre aux personnes sans connaissances SQL. Cette tâche d'IA générative est appelée text-to-SQL, qui génère des requêtes SQL à partir du traitement du langage naturel (NLP) et convertit le texte en SQL sémantiquement correct. La solution présentée dans cet article vise à faire passer les opérations d'analyse d'entreprise à un niveau supérieur en raccourcissant le chemin d'accès à vos données à l'aide du langage naturel.
Avec l'émergence des grands modèles de langage (LLM), la génération SQL basée sur le NLP a subi une transformation significative. Démontrant des performances exceptionnelles, les LLM sont désormais capables de générer des requêtes SQL précises à partir de descriptions en langage naturel. Cependant, des défis demeurent. Premièrement, le langage humain est intrinsèquement ambigu et dépendant du contexte, alors que SQL est précis, mathématique et structuré. Cet écart peut entraîner une conversion inexacte des besoins de l'utilisateur dans le SQL généré. Deuxièmement, vous devrez peut-être créer des fonctionnalités texte-vers-SQL pour chaque base de données, car les données ne sont souvent pas stockées dans une seule cible. Vous devrez peut-être recréer la fonctionnalité pour chaque base de données afin de permettre aux utilisateurs de générer du SQL basé sur le NLP. Troisièmement, malgré l'adoption plus large de solutions d'analyse centralisées telles que les lacs de données et les entrepôts, la complexité augmente avec les différents noms de tables et autres métadonnées nécessaires pour créer le SQL pour les sources souhaitées. Par conséquent, la collecte de métadonnées complètes et de haute qualité reste également un défi. Pour en savoir plus sur les meilleures pratiques et les modèles de conception Text-to-SQL, consultez Générer de la valeur à partir des données d'entreprise : bonnes pratiques pour Text2SQL et l'IA générative.
Notre solution vise à relever ces défis en utilisant Socle amazonien ainsi que les Services d'analyse AWS. Nous utilisons Anthropique Claude v2.1 sur Amazon Bedrock en tant que notre LLM. Pour relever les défis, notre solution intègre d'abord les métadonnées des sources de données au sein du Catalogue de données AWS Glue pour augmenter la précision de la requête SQL générée. Le flux de travail comprend également une boucle finale d'évaluation et de correction, au cas où des problèmes SQL seraient identifiés par Amazone Athéna, qui est utilisé en aval comme moteur SQL. Athena nous permet également d'utiliser une multitude de points de terminaison et connecteurs pris en charge pour couvrir un large ensemble de sources de données.
Après avoir parcouru les étapes de création de la solution, nous présentons les résultats de certains scénarios de test avec différents niveaux de complexité SQL. Enfin, nous expliquons comment il est simple d'incorporer différentes sources de données à vos requêtes SQL.
Vue d'ensemble de la solution
Il y a trois composants essentiels dans notre architecture : Retrieval Augmented Generation (RAG) avec métadonnées de base de données, une boucle d'autocorrection en plusieurs étapes et Athena comme moteur SQL.
Nous utilisons la méthode RAG pour récupérer les descriptions de table et les descriptions de schéma (colonnes) du métastore AWS Glue afin de garantir que la demande est liée à la bonne table et aux bons ensembles de données. Dans notre solution, nous avons construit les étapes individuelles pour exécuter un framework RAG avec le catalogue de données AWS Glue à des fins de démonstration. Cependant, vous pouvez également utiliser bases de connaissances dans Amazon Bedrock pour créer rapidement des solutions RAG.
Le composant en plusieurs étapes permet au LLM de corriger la requête SQL générée pour en vérifier l'exactitude. Ici, le SQL généré est envoyé pour les erreurs de syntaxe. Nous utilisons les messages d'erreur Athena pour enrichir notre invite pour le LLM afin de corriger plus précisément et plus efficacement le SQL généré.
Vous pouvez considérer les messages d'erreur provenant occasionnellement d'Athena comme des commentaires. Les implications financières d’une étape de correction d’erreur sont négligeables par rapport à la valeur délivrée. Vous pouvez même inclure ces étapes correctives sous forme d’exemples d’apprentissage renforcé supervisé pour affiner vos LLM. Cependant, nous n'avons pas couvert ce flux dans notre article par souci de simplicité.
Notez qu’il existe toujours un risque inhérent d’inexactitudes, qui accompagne naturellement les solutions d’IA générative. Même si les messages d'erreur Athena sont très efficaces pour atténuer ce risque, vous pouvez ajouter davantage de contrôles et de vues, tels que des commentaires humains ou des exemples de requêtes pour un réglage précis, afin de minimiser davantage ces risques.
Athena nous permet non seulement de corriger les requêtes SQL, mais simplifie également le problème global car il sert de plaque tournante, où les rayons sont plusieurs sources de données. La gestion des accès, la syntaxe SQL, etc. sont toutes gérées via Athena.
Le diagramme suivant illustre l'architecture de la solution.
Le flux de processus comprend les étapes suivantes :
- Créer le catalogue de données AWS Glue à l'aide d'un robot d'exploration AWS Glue (ou une autre méthode).
- Le Modèle Titan-Text-Embeddings sur Amazon Bedrock, convertissez les métadonnées en intégrations et stockez-les dans un Amazon OpenSearch sans serveur magasin de vecteur, qui sert de base de connaissances dans notre framework RAG.
A ce stade, le processus est prêt à recevoir la requête en langage naturel. Les étapes 7 à 9 représentent une boucle de correction, le cas échéant.
- L'utilisateur saisit sa requête en langage naturel. Vous pouvez utiliser n'importe quelle application Web pour fournir l'interface utilisateur de chat. Par conséquent, nous n’avons pas couvert les détails de l’interface utilisateur dans notre article.
- La solution applique un framework RAG via recherche de similitude, qui ajoute le contexte supplémentaire des métadonnées de la base de données vectorielles. Cette table est utilisée pour rechercher la table, la base de données et les attributs corrects.
- La requête est fusionnée avec le contexte et envoyée à Anthropique Claude v2.1 sur le substrat rocheux d'Amazon.
- Le modèle récupère la requête SQL générée et se connecte à Athena pour valider la syntaxe.
- Si Athena fournit un message d'erreur indiquant que la syntaxe est incorrecte, le modèle utilise le texte d'erreur de la réponse d'Athena.
- La nouvelle invite ajoute la réponse d'Athéna.
- Le modèle crée le SQL corrigé et poursuit le processus. Cette itération peut être effectuée plusieurs fois.
- Enfin, nous exécutons le SQL à l'aide d'Athena et générons une sortie. Ici, le résultat est présenté à l'utilisateur. Par souci de simplicité architecturale, nous n'avons pas montré cette étape.
Pré-requis
Pour ce poste, vous devez remplir les conditions préalables suivantes :
- Avoir un Compte AWS.
- Installer le Interface de ligne de commande AWS (AWS CLI).
- Mettre en place le SDK pour Python (Boto3).
- Créer le catalogue de données AWS Glue à l'aide d'un robot d'exploration AWS Glue (ou une autre méthode).
- Le Modèle Titan-Text-Embeddings sur Amazon Bedrock, convertissez les métadonnées en intégrations et stockez-les dans un OpenSearch Serverless magasin de vecteur.
Mettre en œuvre la solution
Vous pouvez utiliser ce qui suit Carnet Jupyter, qui inclut tous les extraits de code fournis dans cette section, pour créer la solution. Nous vous recommandons d'utiliser Amazon SageMakerStudio pour ouvrir ce notebook avec une instance ml.t3.medium avec le noyau Python 3 (Data Science). Pour obtenir des instructions, reportez-vous à Former un modèle d'apprentissage automatique. Effectuez les étapes suivantes pour configurer la solution :
- Créez la base de connaissances dans OpenSearch Service pour le framework RAG :
- Créez l'invite (
final_question
) en combinant la saisie de l'utilisateur en langage naturel (user_query
), les métadonnées pertinentes du magasin vectoriel (vector_search_match
), et nos instructions (details
): - Appelez Amazon Bedrock pour le LLM (Claude v2) et invitez-le à générer la requête SQL. Dans le code suivant, il effectue plusieurs tentatives afin d'illustrer l'étape d'autocorrection :x
- Si des problèmes surviennent avec la requête SQL générée (
{sqlgenerated}
) de la réponse d'Athéna ({syntaxcheckmsg}
), la nouvelle invite (prompt
) est généré en fonction de la réponse et le modèle tente à nouveau de générer le nouveau SQL : - Une fois le SQL généré, le client Athena est appelé pour exécuter et générer la sortie :
Testez la solution
Dans cette section, nous exécutons notre solution avec différents exemples de scénarios pour tester différents niveaux de complexité des requêtes SQL.
Pour tester notre text-to-SQL, nous utilisons deux ensembles de données disponibles sur IMDB. Des sous-ensembles de données IMDb sont disponibles pour un usage personnel et non commercial. Vous pouvez télécharger les ensembles de données et les stocker dans Service de stockage simple Amazon (Amazon S3). Vous pouvez utiliser l'extrait Spark SQL suivant pour créer des tables dans AWS Glue. Pour cet exemple, nous utilisons title_ratings
ainsi que les title
:
Stockez les données dans Amazon S3 et les métadonnées dans AWS Glue
Dans ce scénario, notre ensemble de données est stocké dans un compartiment S3. Athena dispose d'un connecteur S3 qui vous permet d'utiliser Amazon S3 comme source de données pouvant être interrogée.
Pour notre première requête, nous fournissons l’entrée « Je suis nouveau dans ce domaine. Pouvez-vous m'aider à voir toutes les tables et colonnes du schéma imdb ? »
Voici la requête générée :
La capture d'écran et le code suivants montrent notre sortie.
Pour notre deuxième requête, nous demandons « Montrez-moi tous les titres et détails dans la région des États-Unis dont la note est supérieure à 9.5 ».
Voici notre requête générée :
La réponse est la suivante.
Pour notre troisième requête, nous saisissons « Excellente réponse ! Maintenant, montrez-moi tous les titres de type original ayant une note supérieure à 7.5 et ne se trouvant pas dans la région des États-Unis.
La requête suivante est générée :
Nous obtenons les résultats suivants.
Générer du SQL auto-corrigé
Ce scénario simule une requête SQL présentant des problèmes de syntaxe. Ici, le SQL généré sera auto-corrigé en fonction de la réponse d'Athena. Dans la réponse suivante, Athéna a donné un COLUMN_NOT_FOUND
erreur et j'ai mentionné que table_description
ne peut pas être résolu :
Utiliser la solution avec d'autres sources de données
Pour utiliser la solution avec d'autres sources de données, Athena se charge du travail à votre place. Pour ce faire, Athéna utilise connecteurs de source de données qui peut être utilisé avec requêtes fédérées. Vous pouvez considérer un connecteur comme une extension du moteur de requête Athena. Des connecteurs de source de données Athena prédéfinis existent pour les sources de données telles que Journaux Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (avec compatibilité MongoDB)et la Service de base de données relationnelle Amazon (Amazon RDS) et des sources de données relationnelles compatibles JDBC telles que MySQL et PostgreSQL sous la licence Apache 2.0. Après avoir configuré une connexion à n’importe quelle source de données, vous pouvez utiliser la base de code précédente pour étendre la solution. Pour plus d'informations, reportez-vous à Interrogez n'importe quelle source de données avec la nouvelle requête fédérée d'Amazon Athena.
Nettoyer
Pour nettoyer les ressources, vous pouvez commencer par nettoyer votre compartiment S3 où résident les données. À moins que votre application n'invoque Amazon Bedrock, elle n'entraînera aucun frais. Dans un souci de bonnes pratiques de gestion de l'infrastructure, nous vous recommandons de supprimer les ressources créées dans cette démonstration.
Conclusion
Dans cet article, nous avons présenté une solution qui vous permet d'utiliser le NLP pour générer des requêtes SQL complexes avec une variété de ressources activées par Athena. Nous avons également augmenté la précision des requêtes SQL générées via une boucle d'évaluation en plusieurs étapes basée sur les messages d'erreur des processus en aval. De plus, nous avons utilisé les métadonnées du catalogue de données AWS Glue pour prendre en compte les noms de tables demandés dans la requête via le framework RAG. Nous avons ensuite testé la solution dans différents scénarios réalistes avec différents niveaux de complexité des requêtes. Enfin, nous avons discuté de la manière d'appliquer cette solution à différentes sources de données prises en charge par Athena.
Amazon Bedrock est au centre de cette solution. Amazon Bedrock peut vous aider à créer de nombreuses applications d'IA générative. Pour démarrer avec Amazon Bedrock, nous vous recommandons de suivre le démarrage rapide ci-dessous GitHub repo et vous familiariser avec la création d'applications d'IA générative. Vous pouvez également essayer bases de connaissances dans Amazon Bedrock pour créer rapidement de telles solutions RAG.
À propos des auteurs
Sanjeeb Panda est ingénieur Data et ML chez Amazon. Fort de son expérience en IA/ML, Data Science et Big Data, Sanjeeb conçoit et développe des solutions innovantes de données et de ML qui résolvent des défis techniques complexes et atteignent les objectifs stratégiques des vendeurs 3P mondiaux gérant leurs activités sur Amazon. En dehors de son travail d'ingénieur Data et ML chez Amazon, Sanjeeb Panda est un passionné de gastronomie et de musique.
Bourak Gozluklu est un architecte principal de solutions spécialisées en IA/ML situé à Boston, Massachusetts. Il aide les clients stratégiques à adopter les technologies AWS et plus particulièrement les solutions d'IA générative pour atteindre leurs objectifs commerciaux. Burak est titulaire d'un doctorat en génie aérospatial du METU, d'une maîtrise en ingénierie des systèmes et d'un post-doctorat en dynamique des systèmes du MIT à Cambridge, MA. Burak est toujours un chercheur affilié au MIT. Burak est passionné de yoga et de méditation.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- Qui sommes-nous
- au dessus de
- accès
- précision
- Avec cette connaissance vient le pouvoir de prendre
- atteindre
- ajouter
- En outre
- propos
- Ajoute
- adopter
- Adoption
- Industrie aerospatiale
- Affiliation
- Après
- encore
- AI
- AI / ML
- vise
- Aligne
- Tous
- permet
- aussi
- alternative
- toujours
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- analytique
- ainsi que les
- répondre
- Anthropique
- tous
- Apache
- en vigueur
- Application
- applications
- s'applique
- Appliquer
- architectural
- architecture
- SONT
- AS
- demander
- At
- atlanta
- tentative
- Tentatives
- attributs
- augmentée
- autorisé
- disponibles
- AWS
- Colle AWS
- fond
- base
- basé
- BE
- car
- ci-dessous
- LES MEILLEURS
- les meilleures pratiques
- Big
- Big Data
- Block
- boston
- apporter
- construire
- Développement
- construit
- la performance des entreprises
- entreprises
- mais
- by
- appelé
- cambridge
- CAN
- ne peut pas
- aptitude
- capable
- les soins
- maisons
- catalogue
- Canaux centraux
- centralisée
- challenge
- globaux
- le chat
- vérifié
- vérification
- espace extérieur plus propre,
- cli
- client
- code
- base de code
- Collecte
- Colonne
- Colonnes
- combinant
- vient
- Venir
- par rapport
- comparant
- compatibilité
- complet
- complexe
- complexité
- composant
- composants électriques
- complet
- connexion
- connecte
- Considérer
- contexte
- continue
- contrôles
- Conversion
- convertir
- correct
- corrigé
- Corrections
- Prix
- compter
- couverture
- engendrent
- créée
- crée des
- critique
- Clients
- données
- science des données
- Base de données
- bases de données
- ensembles de données
- Date
- datetime
- livré
- démontrer
- Conception
- modèles de conception
- voulu
- Malgré
- détails
- développer
- diagramme
- DID
- différent
- discuter
- discuté
- plusieurs
- do
- docs
- INSTITUTIONNELS
- download
- pendant
- dynamique
- Efficace
- d'autre
- émergence
- permettre
- activé
- Moteur
- ingénieur
- ENGINEERING
- enrichir
- assurer
- Entrer
- Entreprise
- Entre dans
- passionné
- erreur
- Erreurs
- évaluation
- Pourtant, la
- Chaque
- exemple
- exemples
- exceptionnel
- exécution
- exister
- existant
- Expliquer
- étendre
- extension
- supplémentaire
- Échoué
- non
- Fonctionnalités:
- Réactions
- finale
- finalement
- trouver
- Prénom
- flux
- suivre
- Abonnement
- suit
- Pour
- Framework
- de
- plus
- écart
- a donné
- générer
- généré
- génère
- générateur
- génération
- génératif
- IA générative
- obtenez
- obtient
- Global
- Objectifs
- eu
- Poignées
- Vous avez
- ayant
- he
- vous aider
- aide
- ici
- de haute qualité
- très
- sa
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- Moyeu
- humain
- i
- identifié
- if
- illustrer
- illustre
- implications
- important
- in
- inexacte
- comprendre
- inclut
- intégrer
- incorpore
- incorrect
- Améliore
- increased
- indice
- individuel
- info
- d'information
- Infrastructure
- inhérent
- intrinsèquement
- initiale
- intérieur
- technologie innovante
- contribution
- instance
- Des instructions
- développement
- invoqué
- invoque
- aide
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- itération
- Emploi
- rejoindre
- jpg
- spécialisées
- des lacs
- langue
- gros
- plus importantes
- APPRENTISSAGE
- apprentissage
- Niveau
- niveaux
- Licence
- comme
- LIMIT
- Gamme
- LLM
- situé
- love
- click
- machine learning
- a prendre une
- FAIT DU
- gestion
- les gérer
- de nombreuses
- mathématique
- Mai..
- me
- méditation
- moyenne
- mentionné
- mentions
- message
- messages
- Métadonnées
- méthode
- pourrait
- minimiser
- MIT
- Réduire les
- ML
- modèle
- numériques jumeaux (digital twin models)
- MongoDB
- PLUS
- MS
- plusieurs
- multitude
- Musique
- mysql
- prénom
- noms
- Nature
- Traitement du langage naturel
- Besoin
- Besoins
- Nouveauté
- next
- nlp
- non commercial
- cahier
- maintenant
- nombre
- objectifs
- of
- souvent
- on
- uniquement
- ouvert
- Opérations
- or
- de commander
- original
- Autre
- nos
- sortie
- au contrôle
- global
- passé
- passionné
- chemin
- motifs
- Personnes
- performant
- effectué
- personnel
- phd
- Platon
- Intelligence des données Platon
- PlatonDonnées
- veuillez cliquer
- Post
- Postgresql
- pratiques
- précédant
- précis
- conditions préalables
- représentent
- présenté
- Directeur
- Problème
- processus
- les process
- traitement
- instructions
- fournir
- à condition de
- fournit
- des fins
- Python
- requêtes
- question
- question
- Rapide
- vite.
- citations
- chiffon
- clients
- votes
- Lire
- solutions
- réaliste
- recevoir
- reçu
- recommander
- reportez-vous
- région
- en relation
- pertinent
- rester
- reste
- représentent
- nécessaire
- conditions
- Exigences
- a besoin
- un article
- réside
- résoudre
- résolu
- Resources
- respect
- réponse
- résultat
- Résultats
- récupération
- retourner
- bon
- Monte
- Analyse
- risques
- robuste
- RANGÉE
- Courir
- sagemaker
- saké
- même
- scie
- scénario
- scénarios
- Sciences
- recherche
- Deuxièmement
- Section
- sur le lien
- Sélectionner
- AUTO
- Sellers
- envoyé
- Sans serveur
- sert
- service
- Services
- set
- devrait
- montrer
- montrant
- montré
- côté
- significative
- étapes
- simplicité
- simplifie
- unique
- Fragment
- sur mesure
- Solutions
- RÉSOUDRE
- quelques
- Identifier
- Sources
- Spark
- spécialiste
- spécifiquement
- Étape
- Commencer
- j'ai commencé
- Région
- Déclaration
- Statut
- étapes
- Étapes
- Encore
- storage
- Boutique
- stockée
- simple
- Stratégique
- Chaîne
- structuré
- tel
- Appareils
- sûr
- syntaxe
- SYS
- combustion propre
- Système
- table
- Prenez
- Target
- Tâche
- Technique
- Les technologies
- tester
- examiné
- texte
- que
- qui
- Les
- le hub
- leur
- Les
- puis
- Là.
- donc
- Ces
- Troisièmement
- this
- ceux
- trois
- Avec
- fois
- Titre
- titres
- à
- aujourd'hui
- De La Carrosserie
- Essai
- deux
- type
- types
- ui
- sous
- subit
- compréhension
- à moins que
- Mises à jour
- a actualisé
- us
- utilisé
- d'utiliser
- Utilisateur
- utilisateurs
- Usages
- en utilisant
- VALIDER
- Plus-value
- variété
- divers
- variant
- via
- vues
- Réveiller
- marcher
- Façon..
- we
- web
- application Web
- services Web
- Les
- qui
- tout en
- dont
- sera
- comprenant
- dans les
- sans
- activités principales
- workflow
- écrire
- écriture
- X
- Yoga
- Vous n'avez
- Votre
- vous-même
- zéphyrnet