You are currently viewing Vanna AI : interroger ses bases de données en langage naturel

Vanna AI : interroger ses bases de données en langage naturel

Vanna AI : interroger ses bases de données en langage naturel, en open source

Combien de fois faut-il qu’un métier vienne demander à un développeur ou à un data engineer une requête SQL « rapide » pour sortir un chiffre ? Chaque demande devient une interruption, et chaque réponse une dette implicite à maintenir. Vanna AI est un framework Python open source (licence MIT) qui permet de connecter un LLM à une base de données pour générer des requêtes SQL précises à partir de questions formulées en français ou en anglais. À la différence des solutions cloud propriétaires, Vanna se déploie chez soi, garde la main sur le modèle utilisé, et apprend du schéma de ses propres bases.

Pourquoi text-to-SQL est plus difficile qu’il n’y paraît

Demander à un LLM « écris-moi du SQL pour cette question » donne un résultat décevant dès que la base dépasse une dizaine de tables. Le modèle invente des noms de colonnes, oublie des jointures, ignore les conventions internes. Le problème n’est pas la génération de SQL en soi, mais la connaissance fine du schéma et des règles métier propres à chaque organisation.

Vanna répond à ce problème avec une approche RAG dédiée : la définition du schéma, les exemples de requêtes validées, la documentation métier, sont vectorisés dans une base de connaissances. Au moment de la question, les éléments pertinents sont injectés dans le prompt du LLM, qui produit alors une requête fidèle au contexte réel.

Comment ça fonctionne, concrètement

Le cycle de Vanna se découpe en trois étapes :

  1. Entraînement : on alimente Vanna avec le DDL des tables, des exemples de paires question/SQL, et de la documentation textuelle. Tout est stocké dans une base vectorielle locale (ChromaDB, Qdrant, pgvector, etc.).
  2. Question : un utilisateur pose une question en langage naturel. Vanna récupère les éléments de contexte les plus pertinents et construit un prompt enrichi.
  3. Génération et exécution : le LLM produit du SQL, qui peut être exécuté automatiquement sur la base et restitué sous forme de tableau, de graphique, voire d’un commentaire en langage naturel.

Le tout en quelques lignes de Python, sans dépendance lourde.

Une stack 100% open source possible

Vanna est compatible avec un éventail de briques qui permettent de bâtir une chaîne complètement souveraine :

  • LLM : Ollama (Llama, Qwen, Mistral, DeepSeek Coder), vLLM, ou n’importe quel endpoint compatible OpenAI servi en interne.
  • Base vectorielle : ChromaDB en local, Qdrant pour un déploiement plus robuste, ou pgvector si une instance PostgreSQL est déjà disponible.
  • Bases de données cibles : PostgreSQL, MySQL, SQLite, DuckDB, Snowflake, BigQuery, ClickHouse, Trino, et bien d’autres via SQLAlchemy.
  • Frontend : interface Streamlit intégrée, ou exposition via Flask pour brancher sur un portail métier.

Les cas d’usage qui changent la donne

Trois scénarios où Vanna se révèle particulièrement pertinent :

  • Self-service analytique pour les métiers : permettre à un agent d’urbanisme, à un chargé de subventions ou à un responsable RH d’interroger directement la base sans passer par un ticket data.
  • Exploration de données ouvertes : exposer un portail open data avec une zone « posez votre question », branchée sur les jeux de données du territoire, sans exposer le schéma SQL brut.
  • Assistant pour data engineers : accélérer la rédaction de requêtes complexes en s’appuyant sur le corpus de requêtes déjà validées par l’équipe.

Points de vigilance

Vanna n’est pas une baguette magique. Pour obtenir une qualité de production, il faut investir du temps sur l’entraînement : plus on lui fournit d’exemples de requêtes validées, meilleur est le résultat. La gouvernance des accès reste à organiser : Vanna exécute les requêtes avec les droits de la connexion fournie, donc une couche de permissions au niveau base (rôles PostgreSQL, vues filtrées) reste indispensable. Enfin, comme pour tout système qui exécute du SQL généré par un LLM, prévoir un mode « préviser puis valider » pour les requêtes en écriture, et limiter par défaut aux lectures.

Ce que Vanna révèle d’une tendance plus large

Vanna illustre une mue silencieuse de la BI : la couche de présentation n’est plus une grille de filtres, c’est une conversation. La valeur se déplace de l’outil de visualisation vers la qualité de la connaissance injectée dans le LLM. Une organisation qui sait documenter ses schémas, capitaliser ses requêtes types et formaliser ses règles métier dispose désormais d’un actif directement exploitable par une IA. C’est aussi un signal pour les démarches open data : un portail accompagné d’une base de connaissances structurée devient consommable par une nouvelle génération d’agents IA, bien au-delà du téléchargement de CSV.

Pour aller plus loin : le projet est accessible sur github.com/vanna-ai/vanna, avec des notebooks d’introduction pour PostgreSQL, BigQuery et Snowflake.