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 :
- Phase d'entraînement: Entraîner le "modèle" RAG sur vos données.
- 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.