Aprendizagem pessoal com IA
e orientação prática

Vanna: uso de técnicas RAG para gerar consultas SQL precisas a partir de texto

Introdução geral

O Vanna é uma estrutura Python de código aberto licenciada pelo MIT que se concentra na geração de consultas SQL por meio de técnicas RAG (Retrieval Augmented Generation). Os usuários podem treinar modelos RAG, aplicá-los a seus próprios dados e, em seguida, fazer perguntas, e o Vanna retornará as consultas SQL correspondentes. Essas consultas podem ser executadas automaticamente no banco de dados, simplificando operações complexas do banco de dados. O Vanna oferece suporte a vários modelos de linguagem grande (LLMs) e soluções de armazenamento vetorial para vários bancos de dados, como PostgreSQL, MySQL, Snowflake e outros.

Vanna: uma estrutura de código aberto para gerar consultas SQL usando técnicas RAG, linguagem natural e diálogo de banco de dados-1


 

Vanna: uso de técnicas RAG para gerar consultas SQL precisas a partir de texto-1

 

Lista de funções

  • Geração de SQLGeração de consultas SQL precisas por meio de linguagem natural.
  • Treinamento do modelo RAGOs usuários podem treinar seus próprios modelos RAG para ajustar dados específicos.
  • Suporte multi-LLMCompatível com OpenAI, Anthropic, HuggingFace e muitos outros LLMs.
  • Suporte ao armazenamento de vários vetoresSuporte para AzureSearch, PineCone, ChromaDB e outros armazenamentos vetoriais.
  • Suporte a vários bancos de dadosCompatível com PostgreSQL, MySQL, Snowflake e muitos outros bancos de dados.
  • usuárioJupyter Notebook: fornece Jupyter Notebook, Streamlit, Flask e outras interfaces de usuário.

 

Usando a Ajuda

Processo de instalação

  1. Instalação da VannaInstalação do Vanna usando o pip.
   pip install vanna
  1. Instalação de pacotes opcionaisInstale outros pacotes opcionais conforme necessário; consulte a documentação para obter detalhes.

Processo de uso

  1. Importar VannaImportar os módulos apropriados de acordo com o LLM e o banco de dados de vetores usado.
   from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, config=None): __init__(self, config=None)
def __init__(self, config=None):: __init__(self, config=None): __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-...'})
  1. Treinamento do modelo RAGExecute comandos de treinamento conforme necessário.
   vn.train(ddl_statements)
  1. Geração de consultas SQLFaça uma pergunta e o Vanna retornará a consulta SQL apropriada.
   sql_query = vn.ask("Give me the names of all my customers")

Operação detalhada da função

  • Geração de SQLConsulta SQL: Os usuários podem inserir uma pergunta em linguagem natural e o Vanna gerará automaticamente uma consulta SQL. Por exemplo, digite "Give me the names of all my customers" (Dê-me os nomes de todos os meus clientes) e o Vanna gerará a consulta SQL correspondente.
  • Treinamento do modelo RAGOs usuários podem treinar modelos RAG com base em seus dados para melhorar a precisão da geração de SQL. O processo de treinamento envolve o fornecimento de instruções DDL com base nas quais o Vanna entenderá a estrutura e os relacionamentos do banco de dados.
  • Suporte multi-LLMVanna é compatível com uma ampla gama de modelos de linguagem grandes, permitindo que os usuários selecionem o modelo apropriado para a geração de SQL, conforme necessário.
  • Suporte ao armazenamento de vários vetoresVanna suporta uma variedade de soluções de armazenamento vetorial.
  • Suporte a vários bancos de dadosO Vanna é compatível com uma ampla gama de bancos de dados e pode ser configurado e usado pelos usuários de acordo com o tipo de banco de dados.
  • usuárioVanna oferece uma variedade de interfaces de usuário, os usuários podem escolher Jupyter Notebook, Streamlit, Flask e outras interfaces para operar com facilidade e rapidez.

Código de amostra (computação)

Abaixo está um código de amostra completo que mostra como gerar consultas SQL usando o 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): __init__(self, config=None)
def __init__(self, config=None):: __init__(self, config=None): __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 RAG
vn.train(ddl_statements)
# Gerar consulta SQL
sql_query = vn.ask("Give me the names of all my customers")
print(sql_query)

 

O que é a função RAG na geração de SQL?

A Vanna tem o prazer de apresentar um recurso inovador na geração de SQL: a função RAG (Geração Aprimorada de Recuperação). Esse novo recurso experimental opcional foi projetado para melhorar a consistência e o determinismo da geração de SQL para atender às muitas solicitações dos nossos usuários.

O que é a função RAG?

O Function RAG converte os pares tradicionais de treinamento Pergunta-SQL em modelos que podem ser chamados (também conhecidos como funções/ferramentas). Em seguida, o Modelo de Linguagem Grande (LLM) chama esses modelos para gerar consultas SQL e qualquer código de pós-processamento associado (por exemplo, código de gráficos). O mais importante é que, ao usar o Function RAG, o Large Language Model (LLM) determina apenas os modelos SQL a serem usados e os parâmetros que precisam ser fornecidos. Essa abordagem não apenas garante uma saída mais consistente, mas também acelera significativamente o processo de geração de SQL.

Estamos lançando a API Function RAG sob um domínio e uma marca diferentes para diferenciá-la dos principais pacotes Python de código aberto.

Principais recursos do Function RAG

  • Geração de SQL baseada em modelosFunção RAG: Ao converter pares de treinamento em modelos, a função RAG garante que o SQL gerado seja preciso e relevante para a consulta do usuário.
  • Segurança aprimoradaFunção RAG: A função RAG reduz a injeção e o escape de dicas, garantindo que o processo de geração de SQL seja protegido contra manipulação externa.
  • Consultas específicas do usuárioOs usuários agora podem passar informações como IDs de usuários em consultas sem o risco de que esses dados sejam sobrescritos. Isso permite que perguntas personalizadas, como "Quais são meus últimos 10 pedidos?", sejam executadas de forma segura e eficiente. .
  • Geração integrada de código de gráficoAlém do SQL, o Function RAG também lida com a geração do código de gráficos, possibilitando a geração do SQL e do código de visualização correspondente em uma única solicitação.
  • Suporte a vários idiomasAPI GraphQL: Essa funcionalidade pode ser acessada por meio da API GraphQL, o que possibilita usá-la não apenas em Python, mas em qualquer linguagem de programação. Isso abre a possibilidade de integração em vários back-ends, incluindo estruturas como Ruby on Rails, .

aplicação prática

Por exemplo, aqui estão alguns exemplos de funções: Vanna: uma estrutura de código aberto para gerar consultas SQL usando técnicas RAG, linguagem natural e diálogo de banco de dados-1

Quando você faz uma pergunta.vn.get_function(question=...)<span> </span> A função mais adequada será encontrada e os parâmetros necessários serão preenchidos usando o Large Language Model (LLM). Vanna: uma estrutura de código aberto para gerar consultas SQL usando técnicas RAG, linguagem natural e diálogo de banco de dados-2

Para limitar o problema a um usuário específico, você pode usar a opção vn.get_function(question=... , additional_data={"user_id": ...})<span> </span> Métodos. Isso garantirá que o user_id<span> </span> é definido de forma determinística.

Para criar uma nova função, se estiver fazendo isso manualmente, você pode usar a função vn.create_function(...)<span> </span> ou você pode usar o aplicativo da Web incorporado para executar essa ação.

Criado manualmente

vn.create_function(question=... , sql=... , plotly_code=...)

Criação de funções de aplicativos da Web

O aplicativo da Web tem um novo botão que permite escolher se deseja treinar os resultados como pares Pergunta-SQL brutos ou como funções. O Function RAG extrairá automaticamente o que parece ser um parâmetro da pergunta e o disponibilizará como um parâmetro de função.

Vanna: uma estrutura de código aberto para gerar consultas SQL usando técnicas RAG, linguagem natural e diálogo de banco de dados-3

Quando usar

Se você tiver variantes em que os usuários finais estejam fazendo perguntas semelhantes e quiser que os usuários só possam executar tipos específicos de análises que tenham sido aprovadas manualmente pela equipe de engenharia, a função RAG é uma ótima maneira de garantir que os usuários só possam executar análises aprovadas.

A restrição a análises aprovadas ajuda os usuários finais a se sentirem confiantes de que estão vendo os dados certos e da maneira correta. Se você integrá-lo a um aplicativo SaaS, poderá colocá-lo nas mãos de usuários corporativos internos ou usuários finais.

Qualquer usuário pode se beneficiar das melhorias de velocidade oferecidas pela função RAG. No entanto, para analistas de dados, talvez você queira recorrer ao restante da funcionalidade de geração de SQL do Vanna ao realizar novas análises que não estão presentes em grandes quantidades de dados de treinamento. Se você estiver usando um banco de dados vetorial hospedado pelo Vanna, a função de fallback será automaticamente incluída no aplicativo da Web incorporado com o parâmetro function_generation=True<span> </span>.

Integração da API GraphQL

Além do pacote Python, é possível chamar a Function RAG usando a API GraphQL, o que possibilita usá-la em outras linguagens e estruturas. A solicitação mais comum que recebemos é a possibilidade de usá-la em Ruby on Rails.

usabilidade

O Function RAG está disponível como parte dos planos Free, Premium e Enterprise Edition do Vanna. Você pode encontrar o Function RAG na seção Vanna v0.6.0<span> </span> e versões posteriores para acessá-lo.

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Vanna: uso de técnicas RAG para gerar consultas SQL precisas a partir de texto

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil