Vanna.ai: Conversar con bases de datos SQL
(github.com/vanna-ai)- Un proyecto open source para generar Text-To-SQL preciso con un LLM que aplica RAG (Retrieval-Augmented Generation)
Cómo funciona Vanna
- Entrenamiento del “modelo” RAG: se entrena un modelo RAG sobre los datos del usuario.
- Hacer preguntas: al hacer una pregunta usando el modelo entrenado, devuelve una consulta SQL que puede ejecutarse automáticamente en la base de datos.
Interfaz de usuario
- Algunas interfaces de usuario creadas con Vanna incluyen Jupyter Notebook, vanna-ai/vanna-streamlit, vanna-ai/vanna-flask y vanna-ai/vanna-slack.
Primeros pasos
- Instalación: puedes instalar Vanna con el comando
pip install vanna. - Importación: puedes usar Vanna con el código
import vanna as vn.
Entrenamiento
- Entrenamiento con sentencias DDL: puedes entrenar el modelo usando sentencias DDL que incluyen información sobre nombres de tablas, columnas, tipos de datos y relaciones de la base de datos.
- Entrenamiento con documentación: puedes entrenar el modelo agregando documentación sobre términos o definiciones del negocio.
- Entrenamiento con SQL: puedes generar nuevo SQL agregando consultas SQL existentes como datos de entrenamiento.
Hacer preguntas
- Puedes obtener una consulta SQL relacionada haciendo una pregunta con el método
vn.ask("pregunta").
RAG frente a fine-tuning
- RAG es portable entre distintos LLM, permite eliminar fácilmente los datos de entrenamiento, tiene menor costo y una mayor capacidad de adaptación a futuro.
- El fine-tuning es útil cuando necesitas minimizar los tokens dentro del prompt, pero su puesta en marcha es lenta y los costos de entrenamiento y ejecución son altos.
Por qué elegir Vanna
- Alta precisión en datasets complejos: la capacidad de Vanna depende de los datos de entrenamiento.
- Seguridad y privacidad: el contenido de la base de datos no se envía al LLM ni a la base de datos vectorial.
- Autoaprendizaje: si se usa a través de Jupyter, puede aprender automáticamente de las consultas que se ejecuten con éxito.
- Compatibilidad con todas las bases de datos SQL: puede conectarse a cualquier base de datos SQL a la que se pueda conectar con Python.
- Elección de front end: puedes empezar en Jupyter Notebook y luego ofrecerlo a los usuarios como Slackbot, app web, app de Streamlit o un front end personalizado.
Extender Vanna
- Vanna está diseñado para conectarse con cualquier base de datos, LLM y base de datos vectorial.
- La clase base abstracta VannaBase define la funcionalidad principal y ofrece una implementación que usa OpenAI y ChromaDB.
Material adicional
- Se ofrecen la documentación completa, el sitio web y un grupo de Discord para soporte, entre otros recursos.
Opinión de GN⁺:
- Vanna es una herramienta potente para automatizar la administración de bases de datos y la generación de consultas SQL, y permite a los usuarios crear fácilmente consultas SQL de alta precisión sobre datasets complejos.
- Gracias a su interfaz amigable y su capacidad de autoaprendizaje, incluso personas no especialistas pueden aprovechar bases de datos de forma eficiente, lo que puede acelerar aún más la toma de decisiones basada en datos.
- La escalabilidad de Vanna y su capacidad de adaptación futura ofrecen a las empresas la oportunidad de responder con flexibilidad a los cambios tecnológicos y mejorar continuamente sus procesos de gestión de datos.
1 comentarios
Opiniones de Hacker News
Experiencia de usuario desarrollando el proyecto ChatDB.ai
Experiencia personal usando GPT-4
SHOW TABLEde MySQL CLI y generó consultas basadas en esas tablas para mostrar métricas de negocio, como la tasa de abandono del carrito.Postura escéptica sobre los sistemas que traducen lenguaje natural a SQL
Interés en productos similares, incluidos startups apoyadas por YC
Experiencia con un servicio de reportes basado en duckdb
Preocupaciones y explicación sobre cómo funciona RAG
Curiosidad sobre el problema de las alucinaciones de los LLM
Experiencia compartida usando datasets y tecnología propios
Experiencia en bit.io y reacción de los clientes