Simple Science

La science de pointe expliquée simplement

# Informatique # Intelligence artificielle

Transformer le langage naturel en requêtes SQL

Un nouveau modèle simplifie la génération de requêtes SQL pour les utilisateurs non techniques.

Lixia Wu, Peng Li, Junhong Lou, Lei Fu

― 8 min lire


Requêtes SQL à partir de Requêtes SQL à partir de questions simples pour tout le monde. interactions avec la base de données Un modèle qui simplifie les
Table des matières

Traduire le langage quotidien en commandes SQL (Structured Query Language) est important pour beaucoup de gens qui bossent avec des données mais qui n'ont pas de formation technique. Ce processus permet aux utilisateurs de poser des questions avec leurs propres mots et d’obtenir des réponses directement des bases de données. Pour faciliter ça, on a créé un système qui utilise un modèle spécial conçu pour transformer le langage naturel en requêtes SQL. En faisant ça, on espère aider plus de gens à accéder et analyser des données sans avoir besoin de savoir écrire du code complexe.

Le Défi du Texte en SQL

La tâche de transformer des questions simples en requêtes SQL est courante et se présente dans plein de situations. Un bon système pour convertir du texte en SQL peut aider les utilisateurs à récupérer des infos de bases de données sans barrières techniques. Cependant, beaucoup de systèmes existants s'appuient sur des Modèles vastes et fermés, et des techniques compliquées qui soulèvent des préoccupations sur la vie privée et les coûts.

Pour surmonter ces problèmes, on a développé une nouvelle approche avec des modèles plus petits et mieux ajustés. L'un des principaux défis dans ce domaine est de lier les bonnes parties de la base de données aux questions posées. Par exemple, il est essentiel d'associer les bonnes tables et colonnes dans la base de données en fonction de la question de l'utilisateur.

Développer un Ensemble de Données

Pour améliorer la performance de notre modèle, on a construit un ensemble de données contenant plus de 20 000 exemples de questions et de requêtes SQL correspondantes. Cet ensemble permet au modèle d'apprendre à mieux gérer les tâches de génération SQL. De plus, on a conçu un « ensemble de préférences » spécial pour guider le modèle dans le choix des bonnes tables et colonnes lors de la génération des requêtes SQL.

En utilisant cet ensemble de données avec une méthode appelée l'Optimisation de Préférences Directes (DPO), on a encore affiné notre modèle. DPO aide le modèle à générer de meilleures déclarations SQL en lui permettant d'apprendre de ses erreurs et de s'ajuster selon les retours.

L'Architecture du Modèle

Notre système est construit autour d'un composant principal appelé DataGpt-SQL. Ce modèle prend les questions des utilisateurs et le schéma de la base de données (qui lui dit comment est structurée la base) pour créer des requêtes SQL. Une caractéristique unique de notre modèle est sa capacité à affiner le SQL qu'il génère en le vérifiant par rapport à la base de données pour assurer son exactitude.

Quand un utilisateur pose une question, DataGpt-SQL génère une requête SQL initiale. Cette requête passe ensuite par un processus de validation pour vérifier les erreurs ou incohérences. Si la requête est incorrecte, elle est envoyée à un autre composant pour débogage. Cette étape aide à garantir que la requête SQL finale est exacte et s'exécute correctement sur la base.

Techniques d'Augmentation de Données

Pour rendre notre modèle plus capable, on a utilisé des techniques d'augmentation de données qui l'aident à apprendre à partir d'exemples plus variés. On s'est concentré sur deux principales méthodes : l'augmentation Cross-DB et l'augmentation Inner-DB.

  • Augmentation Cross-DB : Pour une question donnée, on identifie des champs clés et cherche d'autres bases de données pour des structures similaires. En incluant différents schémas dans nos échantillons d'entraînement, le modèle apprend à mieux généraliser à travers différentes configurations de bases de données.

  • Augmentation Inner-DB : On prend un échantillon d'une base de données spécifique et on le manipule en ajoutant ou en retirant des tables et des colonnes en fonction de la question de l'utilisateur. Cette méthode aide le modèle à comprendre comment naviguer dans une base de données particulière tout en lui offrant de la flexibilité.

Ces techniques d'augmentation sont essentielles pour améliorer la capacité de notre modèle à sélectionner les bonnes colonnes et tables dans la base de données.

Réduction des Erreurs dans la Génération SQL

Un des objectifs dans la conception de notre modèle était de minimiser les erreurs courantes qui se produisent lors de la génération de SQL. Ces erreurs peuvent inclure le choix de mauvais noms de tables ou de colonnes, ou encore oublier d'utiliser des guillemets autour de caractères spéciaux. Pour réduire ces inexactitudes, on génère plusieurs requêtes SQL pour la même question et on les vérifie par rapport à des réponses correctes connues. Si une requête générée est incorrecte mais produit les mêmes résultats qu'une requête correcte, elle pourrait quand même être considérée comme réussie, donc il faut faire attention dans l'évaluation.

En vérifiant plusieurs requêtes SQL générées, on peut identifier celles qui sont les plus précises et utiliser cette info pour entraîner le modèle plus efficacement.

Évaluation du Modèle

Pour évaluer l'efficacité de notre modèle, on a utilisé plusieurs benchmarks conçus pour les tâches de génération SQL. On s'est concentré sur la Précision d'exécution (EX) et la précision du test (TS).

  • Précision d'Exécution (EX) : Ce critère mesure si la requête SQL produite a donné les mêmes résultats que la requête correcte lorsqu'elle a été exécutée sur la base de données.

  • Précision du Test (TS) : Ce critère vérifie si les requêtes SQL générées réussissent plusieurs tests à travers divers scénarios de base de données, ce qui en fait une mesure plus fiable de la performance d'un modèle.

À travers des tests rigoureux, notre modèle a obtenu des scores impressionnants de 87,2% pour la précision d'exécution et 83,5% pour la précision du test. Ça veut dire que notre approche est non seulement efficace mais aussi performe mieux que plusieurs autres modèles dans le même domaine.

Comparaison avec d'Autres Modèles

Notre système proposé se défend bien face à d'autres modèles actuellement disponibles. Beaucoup de ces modèles dépendent de systèmes vastes et fermés qui ne sont pas forcément accessibles à tout le monde. En revanche, notre approche est open-source, ce qui favorise la transparence et l'accessibilité.

Bien que d'autres modèles aient aussi montré de bonnes performances en génération SQL, ils ne surpassent généralement pas notre modèle. Par exemple, les modèles qui utilisent des modèles linguistiques larges d'entreprises comme OpenAI montrent des scores plus bas lorsqu'ils sont testés sur les mêmes benchmarks. Ça met en avant les avantages d'avoir un modèle spécifiquement entraîné pour des tâches SQL.

Interaction Amicale avec la Base de Données

Le but principal de développer notre modèle est de faciliter l'interaction des utilisateurs non experts avec les bases de données. En permettant aux utilisateurs de poser des questions avec leurs propres mots et d'obtenir des réponses SQL précises, on améliore l'accès aux données et on rend tout ça plus convivial.

En gros, on casse les barrières techniques qui empêchent souvent les gens d'utiliser efficacement les bases de données. Ça mène à une meilleure prise de décision basée sur les données dans divers domaines, que ce soit dans les affaires ou l'éducation.

Directions Futures

En regardant vers l'avenir, on prévoit de continuer à développer notre modèle en élargissant ses capacités pour gérer des structures de bases de données plus complexes. À mesure que les bases de données évoluent et deviennent plus intriquées, notre modèle doit s'adapter à ces changements pour rester efficace.

De plus, améliorer la performance dans des tâches de raisonnement à plusieurs étapes est un autre domaine sur lequel on va se concentrer. Cela implique d'apprendre à notre modèle à gérer des questions plus compliquées qui peuvent nécessiter plusieurs requêtes SQL ou une analyse plus profonde.

En conclusion, notre travail sur DataGpt-SQL représente une avancée significative dans la traduction du langage naturel en requêtes SQL. En utilisant des modèles spécialisés, des ensembles de données de haute qualité et des techniques innovantes, on pave la voie pour une analyse de données plus accessible. Alors qu'on continue à affiner notre approche, on vise à démocratiser encore plus l'accès aux données et à permettre aux utilisateurs de récupérer facilement les informations dont ils ont besoin.

Plus d'auteurs

Articles similaires