Home » AI » Comment transformer un texte en requête SQL avec les LLMs ?

Comment transformer un texte en requête SQL avec les LLMs ?

Les modèles de langage (LLMs) facilitent la génération de requêtes SQL à partir de descriptions textuelles, accélérant ainsi l’accès aux données sans expertise avancée. Cette méthode s’appuie sur une compréhension précise du schéma et un prompt bien structuré pour créer des requêtes fiables (Nate Rosidi, KDnuggets).

3 principaux points à retenir.

  • Bien définir le schéma est crucial pour que le LLM comprenne les données à interroger.
  • La qualité du prompt détermine la pertinence du code SQL généré.
  • La relecture et l’ajustement restent indispensables pour éviter erreurs et incohérences.

Quels sont les types de LLMs pour générer du SQL ?

Quand il s’agit de modèles de langage générant des requêtes SQL, on peut les diviser en deux grandes catégories : ceux sans accès direct au schéma et ceux avec accès direct. Cette distinction est cruciale pour définir leur capacité à transformer des textes en SQL avec précision.

1. LLMs sans accès direct au schéma

  • Caractéristiques : Ces modèles génèrent des requêtes SQL en se basant sur leur entraînement préalable, sans avoir connaissance de la structure exacte des bases de données. Ils comprennent le langage naturel mais doivent deviner le schéma basé sur le contexte fourni par l’utilisateur.
  • Outils populaires : ChatGPT, Claude, et Text2SQL.ai. Par exemple, ChatGPT peut interpréter des instructions en langage naturel et tenter de les traduire en SQL, mais sans savoir exactement comment la base est structurée.
  • Cas d’usage typiques : Simple exploration de données, quand la structure est relativement standardisée ou pour générer des requêtes basiques.
  • Avantages : Facilité d’accès et d’utilisation, adapté pour générer des requêtes pour des bases de données au schéma conventionnel.
  • Limites : Résultats moins précis sur des schémas complexes et plus de risque d’erreurs dans les requêtes générées.

2. LLMs avec accès direct au schéma

  • Caractéristiques : Ces modèles ont accès à la structure de la base de données. Ils peuvent interroger des métadonnées pour adapter leurs requêtes SQL de manière plus précise et contextuelle.
  • Outils populaires : LangChain avec des intégrations spécifiques pour SQL et des modèles définis pour des systèmes de gestion de bases de données particuliers.
  • Cas d’usage typiques : Applications en entreprise, où les requêtes doivent s’adapter à des architectures complexes et des modèles de données spécifiques.
  • Avantages : Génération de SQL beaucoup plus précise, réduction des erreurs, meilleure performance sur des tâches complexes.
  • Limites : Configuration plus complexe et dépendance à la disponibilité du schéma au moment de la génération.

Voici un tableau comparatif pour clarifier les différences entre ces deux types de modèles :

Type de LLM Accès au schéma Exemples d’outils Usages typiques
Sans accès Non ChatGPT, Claude, Text2SQL.ai Requêtes simples, exploration de données
Avec accès Oui LangChain Applications complexes, entreprises

On peut donc conclure que le choix entre ces deux types de LLMs dépend avant tout de la complexité de vos besoins en matière de requêtes SQL. Le lien entre la compréhension du langage naturel et la structure des données est la clé de la performance dans ce domaine. Pour explorer les défis liés à des schémas complexes, consultez cet article ici.

Comment préparer un prompt efficace pour générer du SQL ?

Pour qu’un modèle de langage (LLM) génère du SQL pertinent, il est crucial de lui fournir un schéma clair. Ce schéma doit inclure les tables, colonnes, types et relations. Sans cela, le modèle risque de tourner à vide et de produire des résultats erronés. La bonne préparation du prompt est essentielle. Voici la structure recommandée :

  • Définition du schéma : Préciser les tables et les colonnes disponibles.
  • Question en langage naturel : Formuler clairement ce que vous cherchez.
  • Hypothèses : Ajouter des hypothèses si c’est pertinent pour affiner la réponse.
  • Rôle attribué au LLM : Indiquer explicitement ce que vous attendez du modèle.

Illustrons cela avec un exemple inspiré d’une question d’entretien type chez Amazon ou Shopify. Supposons que vous ayez les tables customers et orders. La table des clients peut contenir les colonnes customer_id et customer_name, tandis que celle des commandes pourrait avoir order_id, customer_id, et order_date.

Voici un prompt prêt à l’emploi :

Voici le schéma de notre base de données :
Table customers : customer_id (INTEGER), customer_name (VARCHAR)
Table orders : order_id (INTEGER), customer_id (INTEGER), order_date (DATE)

Question : Quels sont les noms des clients qui ont passé une commande après le 1er janvier 2023 ?

Hypothèse : Toutes les relations sont correctement définies.

Rôle : Générez une requête SQL pour répondre à cette question.

Avec ce prompt, le LLM est bien armé pour produire une requête SQL pertinente telle que :

SELECT c.customer_name 
FROM customers c 
JOIN orders o ON c.customer_id = o.customer_id 
WHERE o.order_date > '2023-01-01';

En conclusion, le prompt engineering a un impact direct sur la qualité du SQL généré. Un bon prompt ne fait pas que guider le modèle, il améliore aussi la précision des réponses. Plus le schéma est clair et structuré, meilleures seront les créations de requêtes SQL. C’est ce qu’on appelle l’art de la communication avec l’IA.

Comment valider et exploiter le SQL généré par un LLM ?

Lorsque vous interagissez avec un LLM pour générer une requête SQL, cela commence par un prompt clair et précis. Plus votre question est directe, plus le résultat sera pertinent. Par exemple, si votre prompt est « Donne-moi le nombre moyen de ventes par produit dans la base de données des ventes », le LLM traitera cette demande en interprétant les différentes tables et relations potentielles dans votre base de données. On pourrait aboutir à une requête PostgreSQL telle que :


SELECT produit_id, AVG(vendre) AS moyenne_ventes
FROM ventes
GROUP BY produit_id;

Une fois que vous avez la requête, l’étape suivante consiste à l’exécuter. Vous avez plusieurs options ici. Si vous utilisez un outil LLM connecté directement à votre base de données, il vous suffira de coller la requête dans l’interface de l’outil. Sinon, vous pouvez copier cette requête et la coller dans un SGBD (Système de Gestion de Base de Données) tel que pgAdmin ou DBeaver. Assurez-vous d’avoir les droits nécessaires pour exécuter des requêtes sur cette base de données.

Mais n’allez pas trop vite ! La relecture manuelle est cruciale. Trop souvent, un simple détail peut conduire à des faux positifs, voire à des résultats erronés. Vérifiez toujours que les noms des tables et des colonnes correspondent à ceux de votre base de données, et testez la requête avec un sous-ensemble de données si possible pour éviter un impact négatif sur votre production.

Une fois la requête exécutée, il sera essentiel d’analyser et d’affiner les résultats selon vos besoins métiers. Par exemple, si vous découvrez qu’un produit a des ventes anormales, vous voudrez peut-être créer des filters supplémentaires, comme :


SELECT produit_id, AVG(vendre) AS moyenne_ventes
FROM ventes
WHERE date_vente > '2023-01-01'
GROUP BY produit_id;

Enfin, pour maintenir une intégration fluide de ces requêtes SQL dans votre workflow data, gardez à l’esprit les bonnes pratiques suivantes :

  • Documentez chaque requête et ses résultats pour un suivi et une compréhension à long terme.
  • Automatisez l’exécution des requêtes régulières à l’aide d’un cron job ou d’un autre moteur de planification.
  • Créez des tests unitaires pour valider les résultats des requêtes critiques régulièrement.

Cette diligence vous évitera des erreurs qui pourraient coûter cher à votre organisation, alors ne la négligez pas. Pour des exemples plus poussés de transformation de texte en SQL, une communauté de référence sur Reddit propose des cas d’études intéressants, que vous pouvez consulter ici.

Faut-il déjà maîtriser le SQL pour tirer parti des LLMs en requêtes text-to-SQL ?

Les LLMs révolutionnent l’écriture de requêtes SQL en offrant un pont naturel entre question métier et code technique. Toutefois, ils ne dispensent pas de comprendre les données ni de maîtriser les bases du SQL pour valider et affiner les résultats. Leur efficacité dépend d’un prompt précis, de la connaissance du schéma, et d’un contrôle rigoureux post-génération. Intégrer ces outils dans une démarche pragmatique booste la productivité sans sacrifier la qualité, offrant un vrai levier aux professionnels data et business. N’oublions pas, le LLM est un assistant puissant, pas un magicien infaillible.

FAQ

Qu’est-ce qu’un LLM dans le contexte SQL ?

Un LLM (Large Language Model) est un modèle d’IA capable de comprendre et générer du langage naturel. Appliqué au SQL, il traduit des questions en langage courant en requêtes SQL exploitables sur une base de données.

Faut-il fournir le schéma de la base au LLM pour générer du SQL ?

Oui, pour que le LLM crée une requête correcte, il doit connaître la structure des tables, colonnes et relations. Cela peut être fait via un prompt décrivant le schéma ou par accès direct si l’outil le permet.

Les requêtes SQL générées par les LLM sont-elles toujours fiables ?

Pas toujours. Les LLM peuvent produire des erreurs ou interpréter mal la question. Une relecture et tests rigoureux restent indispensables avant utilisation en production.

Quels sont les avantages d’utiliser un LLM pour générer du SQL ?

Ils facilitent la création rapide de requêtes sans expertise avancée, accélèrent les prototypes, et démocratisent l’accès aux données pour les métiers non techniques.

Peut-on connecter un LLM directement à une base de données ?

Oui, certains outils LLM comme Text2SQL.ai ou Google Gemini intégré à Google Cloud se connectent directement à des bases comme PostgreSQL ou BigQuery pour générer et exécuter des requêtes en temps réel.

 

A propos de l’auteur

Franck Scandolera est Analytics Engineer et formateur indépendant, spécialiste en Web Analytics, Data Engineering, Automatisation No Code et IA générative. Responsable de l’agence webAnalyste et de l’organisme Formations Analytics, il accompagne depuis plus d’une décennie agences digitales et annonceurs dans l’exploitation avancée des données, avec un savoir-faire pointu sur SQL, cloud data et intégration d’IA dans les workflows métiers.

Retour en haut
Vizyz