Vanna.ai - Introdução Detalhada ao Framework Inteligente de Geração de SQL
Visão Geral do Projeto
Vanna é um framework Python RAG (Retrieval-Augmented Generation) de código aberto sob licença MIT, especializado em geração de SQL e funcionalidades relacionadas. O projeto permite que usuários interajam com bancos de dados SQL através de linguagem natural, possibilitando a geração precisa de consultas SQL a partir de texto.
Endereço do GitHub: https://github.com/vanna-ai/vanna
Principais Características
🤖 Diálogo Inteligente
- Interação em Linguagem Natural: Usuários podem fazer perguntas em linguagem comum, e o sistema gera automaticamente a consulta SQL correspondente.
- Feedback em Tempo Real: Suporte para feedback do usuário sobre os resultados gerados, melhorando continuamente a precisão.
- Autoaprendizagem: Capacidade de aprender automaticamente a partir de consultas executadas com sucesso, aumentando a precisão de resultados futuros.
📊 Arquitetura de Tecnologia RAG
Vanna é baseado na tecnologia de Geração Aumentada por Recuperação (RAG), com um fluxo de trabalho dividido em duas etapas simples:
- Fase de Treinamento: Treinar o "modelo" RAG em seus dados.
- Fase de Consulta: Fazer perguntas e receber consultas SQL que podem ser executadas automaticamente no banco de dados.
🔄 Ampla Compatibilidade com Bancos de Dados
Suporte para diversos bancos de dados populares:
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Snowflake
- BigQuery
- ClickHouse
- Apache Hive
- PrestoDB
- SQLite
- DuckDB
Vantagens Técnicas
Vantagens em Comparação com Métodos Tradicionais de Fine-tuning
- Alta Portabilidade: Pode ser usado com diferentes LLMs.
- Gerenciamento de Dados Flexível: Fácil remoção de dados de treinamento desatualizados.
- Custo-Benefício: Menor custo de operação do que o fine-tuning.
- Orientado para o Futuro: Facilidade para substituir por LLMs melhores.
Garantia de Segurança
- Privacidade de Dados: O conteúdo do banco de dados nunca é enviado para LLMs ou bancos de dados vetoriais.
- Execução Local: A execução de SQL é realizada em ambiente local.
- Implantação Privada: Suporte para implantação totalmente privada.
Modo de Uso
Instalação
pip install vanna
Configuração 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-...'})
Treinamento do Modelo
O modelo pode ser treinado de diversas maneiras:
Treinamento com Declarações DDL:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
Treinamento com Documentação de Negócios:
vn.train(documentation="Our business defines XYZ as ...")
Treinamento com Consultas SQL:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
Utilização de Consultas
vn.ask("What are the top 10 customers by sales?")
O sistema retornará:
- A instrução de consulta SQL gerada
- A tabela de resultados da execução
- Um gráfico Plotly gerado automaticamente
Opções de Interface do Usuário
Vanna oferece diversas interfaces de usuário:
- Jupyter Notebook: Ideal para analistas de dados e desenvolvedores.
- Aplicação Web: Adequada para usuários finais.
- Aplicação Streamlit: Desenvolvimento rápido de protótipos.
- Slackbot: Colaboração em equipe.
- Frontend Personalizado: Solução totalmente customizada.
Design da Arquitetura
Vanna adota um design modular, baseado na classe base abstrata VannaBase, que pode ser facilmente estendida para usar diferentes:
- Modelos de Linguagem Grandes: OpenAI, Claude, modelos locais, etc.
- Bancos de Dados Vetoriais: ChromaDB, Pinecone, Weaviate, etc.
- Conectores de Banco de Dados: Suporte para qualquer banco de dados SQL conectável via Python.
Cenários de Aplicação
Análise de Negócios
- Pessoas não técnicas podem consultar dados diretamente usando linguagem natural.
- Geração rápida de relatórios e análises de negócios.
- Automatização de tarefas comuns de consulta de dados.
Eficiência no Desenvolvimento
- Aceleração do processo de desenvolvimento de SQL.
- Redução do tempo de escrita de consultas complexas.
- Fornecimento de sugestões de otimização de consultas.
Educação e Treinamento
- Ajuda no aprendizado da sintaxe SQL.
- Compreensão de estruturas de consulta complexas.
- Aprendizado das melhores práticas de banco de dados.
Resumo
Vanna.ai é um framework de texto para SQL poderoso e fácil de usar, que, através da combinação de tecnologia RAG e modelos de linguagem grandes, permite que qualquer pessoa interaja com bancos de dados usando linguagem natural. Seja um analista de dados, desenvolvedor ou usuário de negócios, todos podem se beneficiar desta ferramenta, aumentando significativamente a eficiência na consulta e análise de dados.