Vanna.ai : dialoguer avec des bases de données SQL
(github.com/vanna-ai)- Un open source qui génère un Text-To-SQL précis avec un LLM appliquant le RAG (Retrieval-Augmented Generation)
Fonctionnement de Vanna
- Entraînement du « modèle » RAG : entraîne un modèle RAG sur les données de l’utilisateur.
- Poser des questions : en interrogeant le modèle entraîné, il renvoie des requêtes SQL pouvant être exécutées automatiquement sur la base de données.
Interface utilisateur
- Parmi les interfaces utilisateur construites avec Vanna, on trouve Jupyter Notebook, vanna-ai/vanna-streamlit, vanna-ai/vanna-flask et vanna-ai/vanna-slack.
Démarrage
- Installation : vous pouvez installer Vanna avec la commande
pip install vanna. - Import : vous pouvez utiliser Vanna via le code
import vanna as vn.
Entraînement
- Entraînement avec des instructions DDL : il est possible d’entraîner le modèle à l’aide d’instructions DDL contenant des informations sur les noms de tables, colonnes, types de données et relations de la base.
- Entraînement avec de la documentation : il est possible d’entraîner le modèle en ajoutant de la documentation sur les termes métier ou leurs définitions.
- Entraînement avec du SQL : il est possible d’ajouter des requêtes SQL existantes comme données d’entraînement afin de générer de nouvelles requêtes SQL.
Poser des questions
- En utilisant la méthode
vn.ask("질문"), vous pouvez poser une question et recevoir la requête SQL correspondante.
RAG vs fine-tuning
- Le RAG est portable entre différents LLM, permet de supprimer facilement les données d’entraînement, coûte moins cher et s’adapte mieux à l’avenir.
- Le fine-tuning est utile lorsqu’il faut minimiser les tokens dans le prompt, mais son démarrage est lent et ses coûts d’entraînement et d’exécution sont élevés.
Pourquoi choisir Vanna
- Haute précision sur des jeux de données complexes : les capacités de Vanna dépendent des données d’entraînement.
- Sécurité et protection de la vie privée : le contenu de la base de données n’est pas transmis au LLM ni à une base de données vectorielle.
- Auto-apprentissage : utilisé via Jupyter, il peut apprendre automatiquement à partir des requêtes exécutées avec succès.
- Prise en charge de toutes les bases SQL : il peut se connecter à toute base de données SQL accessible depuis Python.
- Choix du front-end : vous pouvez commencer dans Jupyter Notebook, puis le proposer aux utilisateurs sous forme de Slackbot, d’application web, d’application Streamlit ou de front-end personnalisé.
Extension de Vanna
- Vanna est conçu pour se connecter à n’importe quelle base de données, n’importe quel LLM et n’importe quelle base de données vectorielle.
- La classe de base abstraite VannaBase définit les fonctionnalités essentielles et fournit une implémentation utilisant OpenAI et ChromaDB.
Ressources supplémentaires
- La documentation complète, le site web et un groupe Discord pour le support sont disponibles.
Avis de GN⁺ :
- Vanna est un outil puissant pour automatiser l’administration de bases de données et la génération de requêtes SQL, permettant aux utilisateurs de créer facilement des requêtes SQL très précises sur des jeux de données complexes.
- Grâce à son interface conviviale et à sa capacité d’auto-apprentissage, même des non-spécialistes peuvent exploiter efficacement une base de données, ce qui peut encore accélérer la prise de décision fondée sur les données.
- L’extensibilité de Vanna et sa capacité d’adaptation à l’avenir offrent aux entreprises l’opportunité de réagir avec souplesse aux évolutions technologiques et d’améliorer en continu leurs processus de gestion des données.
1 commentaires
Avis Hacker News
Expérience utilisateur pendant le développement du projet ChatDB.ai
Expérience personnelle avec GPT-4
SHOW TABLEdu CLI MySQL, puis a généré des requêtes montrant des indicateurs métier comme le taux d’abandon de panier à partir de ces tables.Point de vue sceptique sur les systèmes qui traduisent le langage naturel en SQL
Intérêt pour des produits similaires, y compris des startups financées par YC
Expérience avec un service de reporting basé sur duckdb
Préoccupations et explication sur le fonctionnement du RAG
Questions sur le problème des hallucinations des LLM
Partage d’expérience avec un dataset et une technologie internes
Expérience chez bit.io et réaction des clients