Home
Login

Framework Python open source basé sur la technologie RAG, permettant de dialoguer avec des bases de données SQL en langage naturel, pour une génération précise de requêtes SQL à partir de texte.

MITPython 18.3kvanna-ai Last Updated: 2025-04-10

Vanna.ai - Présentation détaillée du framework intelligent de génération SQL

Aperçu du projet

Vanna est un framework Python RAG (Retrieval-Augmented Generation) open source sous licence MIT, spécialement conçu pour la génération de SQL et les fonctionnalités associées. Ce projet permet aux utilisateurs d'interagir avec des bases de données SQL en langage naturel, permettant ainsi une génération précise de requêtes SQL à partir de texte.

Adresse GitHub: https://github.com/vanna-ai/vanna

Caractéristiques principales

🤖 Dialogue intelligent

  • Interaction en langage naturel: Les utilisateurs peuvent poser des questions en langage courant, et le système génère automatiquement les requêtes SQL correspondantes.
  • Retour d'information en temps réel: Prise en charge des commentaires des utilisateurs sur les résultats générés, améliorant continuellement la précision.
  • Auto-apprentissage: Capacité d'apprendre automatiquement à partir des requêtes exécutées avec succès, améliorant la précision des résultats futurs.

📊 Architecture technique RAG

Vanna est basé sur la technologie de génération augmentée par la récupération (RAG). Le flux de travail est divisé en deux étapes simples :

  1. Phase d'entraînement: Entraîner le "modèle" RAG sur vos données.
  2. Phase de requête: Poser une question et renvoyer une requête SQL qui peut être exécutée automatiquement sur la base de données.

🔄 Large support de bases de données

Prise en charge de plusieurs bases de données courantes :

  • PostgreSQL
  • MySQL
  • Microsoft SQL Server
  • Oracle
  • Snowflake
  • BigQuery
  • ClickHouse
  • Apache Hive
  • PrestoDB
  • SQLite
  • DuckDB

Avantages techniques

Avantages par rapport aux méthodes de fine-tuning traditionnelles

  • Forte portabilité: Peut être utilisé avec différents LLM.
  • Gestion flexible des données: Facile à supprimer les données d'entraînement obsolètes.
  • Rentabilité: Coûts d'exécution inférieurs à ceux du fine-tuning.
  • Orienté vers l'avenir: Facile à remplacer par de meilleurs LLM.

Garanties de sécurité

  • Confidentialité des données: Le contenu de la base de données n'est jamais envoyé au LLM ou à la base de données vectorielle.
  • Exécution locale: L'exécution SQL se fait dans un environnement local.
  • Déploiement privé: Prise en charge d'un déploiement entièrement privé.

Mode d'emploi

Installation

pip install vanna

Configuration de base

from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore

class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)

vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})

Entraînement du modèle

Le modèle peut être entraîné de plusieurs manières :

Entraînement avec des instructions DDL :

vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
)
""")

Entraînement avec de la documentation métier :

vn.train(documentation="Our business defines XYZ as ...")

Entraînement avec des requêtes SQL :

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

Utilisation des requêtes

vn.ask("What are the top 10 customers by sales?")

Le système renverra :

  • La requête SQL générée
  • Un tableau des résultats de l'exécution
  • Un graphique Plotly généré automatiquement

Options d'interface utilisateur

Vanna propose plusieurs interfaces utilisateur :

  • Jupyter Notebook: Convient aux analystes de données et aux développeurs.
  • Application Web: Convient aux utilisateurs finaux.
  • Application Streamlit: Développement rapide de prototypes.
  • Slackbot: Collaboration en équipe.
  • Frontend personnalisé: Solution entièrement personnalisée.

Conception de l'architecture

Vanna adopte une conception modulaire, basée sur la classe de base abstraite VannaBase, qui peut être facilement étendue pour utiliser différents :

  • Grands modèles de langage (LLM) : OpenAI, Claude, modèles locaux, etc.
  • Bases de données vectorielles: ChromaDB, Pinecone, Weaviate, etc.
  • Connecteurs de base de données: Prise en charge de toute base de données SQL connectable via Python.

Cas d'utilisation

Analyse métier

  • Les personnes non techniques peuvent interroger les données directement en langage naturel.
  • Génération rapide de rapports et d'analyses métier.
  • Automatisation des tâches courantes d'interrogation de données.

Efficacité du développement

  • Accélérer le processus de développement SQL.
  • Réduire le temps d'écriture des requêtes complexes.
  • Fournir des suggestions d'optimisation des requêtes.

Éducation et formation

  • Aider à l'apprentissage de la syntaxe SQL.
  • Comprendre les structures de requêtes complexes.
  • Apprentissage des meilleures pratiques en matière de bases de données.

Conclusion

Vanna.ai est un framework de conversion texte-SQL puissant et facile à utiliser. Grâce à la combinaison de la technologie RAG et des grands modèles de langage, il permet à quiconque d'interagir avec des bases de données en langage naturel. Que ce soit pour les analystes de données, les développeurs ou les utilisateurs métier, cet outil peut être bénéfique et améliorer considérablement l'efficacité de l'interrogation et de l'analyse des données.