Home
Login

Framework de Python de código abierto basado en la tecnología RAG que permite la conversación con bases de datos SQL a través del lenguaje natural, logrando una generación precisa de consultas de texto a SQL.

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

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:

  1. Fase de Entrenamiento: Entrenar el "modelo" RAG en sus datos.
  2. 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.