Vanna: generación de consultas SQL precisas a partir de texto mediante técnicas RAG
Últimos recursos sobre IAActualizado hace 7 meses Círculo de intercambio de inteligencia artificial 2.1K 00
Introducción general
Vanna es un framework Python de código abierto con licencia del MIT centrado en la generación de consultas SQL mediante técnicas RAG (Retrieval Augmented Generation). Los usuarios pueden entrenar modelos RAG, aplicarlos a sus propios datos y, a continuación, formular preguntas, y Vanna devolverá las consultas SQL correspondientes. Estas consultas pueden ejecutarse automáticamente en la base de datos, lo que simplifica las complejas operaciones de base de datos.Vanna es compatible con una variedad de Large Language Models (LLMs) y soluciones de almacenamiento vectorial para una variedad de bases de datos, como PostgreSQL, MySQL, Snowflake y otras.


Lista de funciones
- Generación SQL: Genere consultas SQL precisas mediante lenguaje natural.
- Formación del modelo GARLos usuarios pueden entrenar sus propios modelos RAG para ajustarlos a datos específicos.
- Soporte Multi-LLMCompatible con OpenAI, Anthropic, HuggingFace y muchos otros LLM.
- Almacenamiento multivectorialSoporte para AzureSearch, PineCone, ChromaDB y otros almacenes de vectores.
- Soporte multibase de datosCompatible con PostgreSQL, MySQL, Snowflake y muchas otras bases de datos.
- usuario: Proporciona Jupyter Notebook, Streamlit, Flask y otras interfaces de usuario.
Utilizar la ayuda
Proceso de instalación
- Instalación de VannaInstala Vanna usando pip.
pip install vanna
- Instalación de paquetes opcionalesInstale otros paquetes opcionales según sea necesario, consulte la documentación para más detalles.
Proceso de utilización
- Importar VannaImportar los módulos apropiados según el LLM y la base de datos de vectores utilizada.
from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb 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 GAREjecuta los comandos de entrenamiento que necesites.
vn.train(ddl_statements)
- Generación de consultas SQL: Formule una pregunta y Vanna le devolverá la consulta SQL adecuada.
sql_query = vn.ask("给我所有客户的名字")
Funcionamiento detallado
- Generación SQLLos usuarios pueden introducir una pregunta en lenguaje natural y Vanna generará automáticamente una consulta SQL. Por ejemplo, escriba "Dame los nombres de todos mis clientes" y Vanna generará la consulta SQL correspondiente.
- Formación del modelo GARLos usuarios pueden entrenar modelos RAG basados en sus datos para mejorar la precisión de la generación de SQL. El proceso de entrenamiento consiste en proporcionar sentencias DDL en función de las cuales Vanna comprenderá la estructura y las relaciones de la base de datos.
- Soporte Multi-LLMVanna es compatible con una amplia gama de modelos de lenguaje de gran tamaño, lo que permite a los usuarios seleccionar el modelo adecuado para la generación de SQL según sus necesidades.
- Almacenamiento multivectorial: Vanna admite diversas soluciones de almacenamiento vectorial.
- Soporte multibase de datos: Vanna es compatible con una amplia gama de bases de datos y puede ser configurada y utilizada por los usuarios en función de su tipo de base de datos.
- usuarioVanna proporciona una variedad de interfaces de usuario, los usuarios pueden elegir Jupyter Notebook, Streamlit, Flask y otras interfaces para operar cómodamente.
código de ejemplo (informática)
A continuación se muestra un código de ejemplo completo que muestra cómo generar consultas SQL utilizando Vanna:
from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb 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-...'})
# 训练RAG模型
vn.train(ddl_statements)
# 生成SQL查询
sql_query = vn.ask("给我所有客户的名字")
print(sql_query)
¿Qué es la función RAG en la generación SQL?
Vanna se complace en presentar una función innovadora en la generación de SQL: la Función RAG (Generación de recuperación mejorada). Esta nueva función experimental opcional está diseñada para mejorar la coherencia y el determinismo de la generación de SQL con el fin de satisfacer las numerosas peticiones de nuestros usuarios.
¿Qué es la función GAR?
La función RAG convierte los pares tradicionales de formación Pregunta-SQL en plantillas invocables (también conocidas como funciones/herramientas). A continuación, el Modelo de Lenguaje Grande (LLM) llama a estas plantillas para generar consultas SQL y cualquier código de postprocesamiento asociado (por ejemplo, código de gráficos). Cuando se utiliza la función RAG, el modelo de lenguaje general (LLM) sólo determina las plantillas SQL que deben utilizarse y los parámetros que deben proporcionarse. Este enfoque no sólo garantiza un resultado más coherente, sino que también acelera considerablemente el proceso de generación de SQL.
Estamos lanzando la API Function RAG bajo un dominio y una marca diferentes para distinguirla de los paquetes centrales de código abierto de Python.
Características principales de la función GAR
- Generación SQL basada en plantillasFunción RAG: al convertir los pares de entrenamiento en plantillas, la función RAG garantiza que el SQL generado sea preciso y pertinente para la consulta del usuario.
- Seguridad reforzadaFunción RAG: La función RAG reduce la inyección de sugerencias y la evasión de sugerencias, garantizando que el proceso de generación de SQL esté protegido de manipulaciones externas.
- Consultas específicas del usuarioEl usuario puede ahora pasar información como el identificador de usuario en las consultas sin riesgo de que estos datos se sobrescriban. Esto permite que preguntas personalizadas como "¿Cuáles son mis últimos 10 pedidos?" se ejecuten de forma segura y eficaz. .
- Generación integrada de códigos de gráficosFunción RAG : Además de SQL, la función RAG también se encarga de generar el código de los gráficos, lo que permite generar SQL y su correspondiente código de visualización en una única solicitud.
- Soporte multilingüe: Esta funcionalidad es accesible a través de la API GraphQL, haciendo posible su uso no sólo desde Python, sino desde cualquier lenguaje de programación. Esto abre la posibilidad de integración en diversos backends, incluyendo frameworks como Ruby on Rails, .
aplicación práctica
Por ejemplo, aquí tienes algunos ejemplos de funciones:
Cuando hagas una pregunta.vn.get_function(question=...)<span> </span>
Se encontrará la función más adecuada y se rellenarán los parámetros necesarios utilizando el Modelo de Lenguaje Amplio (LLM).
Para limitar la emisión a un usuario concreto, puede utilizar la opción vn.get_function(question=..., additional_data={"user_id": ...})<span> </span>
Métodos. Esto garantizará que el user_id<span> </span>
se establece de forma determinista.
Para crear una nueva función, si lo hace manualmente, puede utilizar la función vn.create_function(...)<span> </span>
o puede utilizar la aplicación web integrada para realizar esta acción.
Creado manualmente
vn.create_function(question=..., sql=..., plotly_code=...)
Creación de funciones de aplicación web
La aplicación web tiene un nuevo botón que le permite elegir si desea entrenar los resultados como pares Pregunta-SQL sin procesar o como funciones.El RAG de Función extraerá automáticamente lo que parece un parámetro de la pregunta y lo hará disponible como un parámetro de función.

Cuándo utilizar
Si tiene variantes en las que los usuarios finales hacen preguntas similares y sólo desea que los usuarios puedan ejecutar tipos específicos de análisis que han sido aprobados manualmente por su equipo de ingeniería, entonces la Función RAG es una gran manera de asegurar que los usuarios sólo puedan ejecutar análisis aprobados.
La restricción a los análisis aprobados ayuda a los usuarios finales a sentirse seguros de que están viendo los datos correctos y de la forma adecuada. Si la integras en una aplicación SaaS, esto te permite ponerla en manos de usuarios empresariales internos o usuarios finales.
Cualquier usuario puede beneficiarse de las mejoras de velocidad que ofrece la función RAG. Sin embargo, para los analistas de datos, es posible que desee recurrir al resto de la funcionalidad de generación SQL de Vanna cuando realice análisis novedosos que no estén presentes en grandes cantidades de datos de entrenamiento. Si está utilizando una base de datos vectorial alojada en Vanna, la funcionalidad fallback se incluye automáticamente en la aplicación web incorporada con el parámetro function_generation=True<span> </span>
.
Integración de la API GraphQL
Además del paquete Python, es posible llamar a Function RAG mediante la API GraphQL, lo que permite utilizarla en otros lenguajes y frameworks. La petición más común que recibimos es la posibilidad de utilizarla en Ruby on Rails.
usabilidad
Function RAG está disponible como parte de los planes Free, Premium y Enterprise Edition de Vanna. Puede encontrar la Función RAG en la página de Vanna v0.6.0<span> </span>
y versiones posteriores para acceder a ella.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...