Vanna.ai - Introducción Detallada al Framework Inteligente de Generación de SQL
Resumen del Proyecto
Vanna es un framework Python RAG (Retrieval-Augmented Generation - Generación Aumentada por Recuperación) de código abierto con licencia MIT, especializado en la generación de SQL y funciones relacionadas. El proyecto permite a los usuarios interactuar con bases de datos SQL a través del lenguaje natural, logrando una generación precisa de consultas SQL a partir de texto.
Dirección de GitHub: https://github.com/vanna-ai/vanna
Características Principales
🤖 Diálogo Inteligente
- Interacción en Lenguaje Natural: Los usuarios pueden hacer preguntas en lenguaje común y el sistema genera automáticamente la consulta SQL correspondiente.
- Retroalimentación en Tiempo Real: Permite a los usuarios proporcionar retroalimentación sobre los resultados generados, mejorando continuamente la precisión.
- Autoaprendizaje: Puede aprender automáticamente de las consultas ejecutadas con éxito, mejorando la precisión de los resultados futuros.
📊 Arquitectura de Tecnología RAG
Vanna se basa en la tecnología de Generación Aumentada por Recuperación (RAG), cuyo flujo de trabajo se divide en dos sencillos pasos:
- Fase de Entrenamiento: Entrenar el "modelo" RAG en sus datos.
- Fase de Consulta: Hacer una pregunta y obtener una consulta SQL que se puede ejecutar automáticamente en la base de datos.
🔄 Amplio Soporte de Bases de Datos
Soporta una variedad de bases de datos principales:
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Snowflake
- BigQuery
- ClickHouse
- Apache Hive
- PrestoDB
- SQLite
- DuckDB
Ventajas Técnicas
Ventajas en Comparación con los Métodos Tradicionales de Ajuste Fino (Fine-tuning)
- Alta Portabilidad: Se puede utilizar en diferentes LLM (Large Language Models - Modelos de Lenguaje Grandes).
- Gestión de Datos Flexible: Fácil de eliminar datos de entrenamiento obsoletos.
- Rentabilidad: Menor costo de operación que el ajuste fino.
- Orientado al Futuro: Se puede reemplazar fácilmente con un LLM mejor.
Garantía de Seguridad
- Privacidad de Datos: El contenido de la base de datos nunca se envía a LLM ni a bases de datos vectoriales.
- Ejecución Local: La ejecución de SQL se realiza en un entorno local.
- Implementación Privada: Soporta una implementación completamente privada.
Modo de Uso
Instalación
pip install vanna
Configuración Básica
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-...'})
Entrenamiento del Modelo
El modelo se puede entrenar de varias maneras:
Entrenamiento con Sentencias DDL:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
Entrenamiento con Documentación de Negocio:
vn.train(documentation="Our business defines XYZ as ...")
Entrenamiento con Consultas SQL:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
Uso de Consultas
vn.ask("What are the top 10 customers by sales?")
El sistema devolverá:
- La sentencia SQL generada.
- Una tabla con los resultados de la ejecución.
- Un gráfico de Plotly generado automáticamente.
Opciones de Interfaz de Usuario
Vanna ofrece varias interfaces de usuario:
- Jupyter Notebook: Adecuado para analistas de datos y desarrolladores.
- Aplicación Web: Adecuado para usuarios finales.
- Aplicación Streamlit: Desarrollo rápido de prototipos.
- Slackbot: Colaboración en equipo.
- Frontend Personalizado: Solución completamente personalizada.
Diseño de Arquitectura
Vanna adopta un diseño modular, basado en la clase base abstracta VannaBase, que se puede extender fácilmente para usar diferentes:
- Modelos de Lenguaje Grandes: OpenAI, Claude, modelos locales, etc.
- Bases de Datos Vectoriales: ChromaDB, Pinecone, Weaviate, etc.
- Conectores de Bases de Datos: Soporta cualquier base de datos SQL conectable a través de Python.
Escenarios de Aplicación
Análisis de Negocio
- Personal no técnico puede consultar datos directamente en lenguaje natural.
- Generación rápida de informes y análisis de negocio.
- Automatización de tareas comunes de consulta de datos.
Eficiencia del Desarrollo
- Acelera el proceso de desarrollo de SQL.
- Reduce el tiempo de escritura de consultas complejas.
- Proporciona sugerencias de optimización de consultas.
Educación y Formación
- Ayuda a aprender la sintaxis de SQL.
- Comprender estructuras de consultas complejas.
- Aprendizaje de las mejores prácticas de bases de datos.
Resumen
Vanna.ai es un framework de texto a SQL potente y fácil de usar que, a través de la combinación de la tecnología RAG y los modelos de lenguaje grandes, permite a cualquier persona interactuar con bases de datos en lenguaje natural. Tanto los analistas de datos, los desarrolladores como los usuarios de negocio pueden beneficiarse de esta herramienta, mejorando enormemente la eficiencia de la consulta y el análisis de datos.