Projet · 2026
NL to SQL
Interroger une base de données RH en langage naturel, avec une évaluation rigoureuse de la fiabilité.
92.3%
accuracy finale
26
questions de test
4
itérations
Le problème
Interroger une base de données relationnelle demande de connaître SQL. Peut-on permettre à un utilisateur de poser sa question en français et obtenir un résultat fiable — et surtout, comment mesurer cette fiabilité ?
L'approche
Plutôt qu'un fine-tuning coûteux, le système repose sur un LLM généraliste guidé par prompt engineering. Le schéma est extrait dynamiquement et enrichi de valeurs réelles avant d'être envoyé au modèle.
01
Extraction du schéma
Tables, colonnes et clés étrangères extraites dynamiquement depuis SQLite.
02
Enrichissement
Les colonnes catégorielles sont complétées avec des valeurs réelles (ex: status : ['Approuvé', 'En attente', 'Refusé']).
03
Génération
Le LLM reçoit le schéma, quelques exemples et la question, puis produit le SQL.
04
Exécution
La requête est exécutée sur la vraie base — pas de comparaison textuelle.
L'évaluation
26 questions de complexité croissante, évaluées par execution accuracy : on compare le résultat réel de la requête générée à celui de la référence.
| Itération | Changement | Accuracy |
|---|---|---|
| V1 | Comparaison stricte | 57.7% |
| V2 | Tolérance aux colonnesMéthode d'évaluation corrigée | 65.4% |
| V3 | Schéma enrichi de valeurs réellesCorrige les erreurs de format | 80.8% |
| V4 | Comparaison symétriqueComparaison bidirectionnelle | 92.3% |
Enseignement clé : la qualité de l'évaluation compte autant que la qualité du modèle. Les deux premières itérations ont amélioré la mesure, pas le système.
Les 3 cas restants
- 01 Équivalence sémantique non détectée (nom fusionné vs séparé).
- 02 Égalité statistique probable (LIMIT 1 sans ordre secondaire).
- 03 Question intrinsèquement ambiguë (moyenne globale vs groupée).
Limites assumées
- LLM généraliste, pas un modèle spécialisé Text-to-SQL — pas de garantie sur des requêtes très complexes.
- L'évaluation automatique a ses limites : équivalences sémantiques non détectées, documentées et assumées.
- Base synthétique de 150 employés — la robustesse sur un schéma réel reste à valider.
- Pas de protection contre les requêtes destructrices — acceptable en lecture seule, à sécuriser en production.