Contate-nos
Nenhum resultado encontrado.

Texto para SQL: Comparação da precisão do LLM

Cem Dilmegani
Cem Dilmegani
atualizado em Fev 25, 2026
Veja o nosso normas éticas

Utilizo SQL para análise de dados há 18 anos, desde a minha época como consultor. Traduzir perguntas em linguagem natural para SQL torna os dados mais acessíveis, permitindo que qualquer pessoa, mesmo sem conhecimentos técnicos, trabalhe diretamente com bancos de dados.

Utilizamos nossa metodologia de benchmark de texto para SQL em 34 grandes modelos de linguagem (LLMs) para avaliar seu desempenho na geração de comandos SQL:

Loading Chart

Erros comuns em SQL gerado pelo LLM

Os LLMs (Long-Level Modeling) frequentemente cometem quatro tipos de erros: junções defeituosas, erros de agregação, filtros ausentes e erros de sintaxe.

Lógica de junção incorreta

Os modelos frequentemente tinham dificuldades em identificar e implementar corretamente as operações `JOIN` necessárias entre as tabelas, por vezes omitindo-as completamente ou utilizando subconsultas menos otimizadas.

O LLM não conseguiu unir corretamente as tabelas `frpm` e `schools` usando o `CDSCode`. Ele também apresentou nomes de colunas incorretos (`Charter`) e valores de filtro incorretos (`County = 'Fresno'`).

Erros na lógica de junção comprometem fundamentalmente o aspecto relacional da consulta, levando à recuperação incompleta ou incorreta de dados quando várias tabelas estão envolvidas.

Erros de agregação e agrupamento

A aplicação incorreta de funções de agregação (como `MAX`, `AVG`, `COUNT`, `SUM`) ou cláusulas `GROUP BY` foi outro ponto de falha comum, levando a resultados que não correspondiam semanticamente à intenção do usuário.

O LLM identificou corretamente que a frase “ maior pontuação média ” requer o agrupamento dos dados por distrito (GROUP BY dname) e o uso de uma função agregada (AVG(AvgScrRead)). Essa parte da lógica está correta.

No entanto, o LLM não incorporou um filtro crítico da pergunta: a palavra " ativo ". Para atender a esse requisito, a consulta precisava unir a tabela satscores com a tabela schools e, em seguida, filtrar os resultados com uma cláusula WHERE T1.StatusType = 'Active'.

Isso evidencia uma falha comum em LLM: a execução correta de uma instrução primária e óbvia (calcular uma média), enquanto se ignora uma condição secundária, igualmente importante (filtrar por status). Isso demonstra uma fragilidade na síntese de múltiplas restrições em uma única consulta correta.

Filtros ausentes ou incorretos

Por vezes, os modelos não incluíam as cláusulas `WHERE` necessárias ou selecionavam as colunas erradas na instrução `SELECT`, não atendendo completamente às restrições ou às informações explicitamente solicitadas no prompt.

O LLM identificou corretamente a lógica para encontrar a escola (`ORDER BY NumGE1500 DESC LIMIT 1`), mas não conseguiu selecionar o número de telefone solicitado e omitiu a junção necessária com a tabela `schools` para recuperá-lo.

Esses erros geralmente decorrem da análise incompleta da solicitação do usuário ou da falha em mapear todas as partes da solicitação para os componentes finais da consulta SQL.

Erros de sintaxe

Além de erros semânticos, ocorreram erros de sintaxe flagrantes, como o uso de aliases de tabela incorretos ou a produção de instruções SQL incompletas, o que impede a execução da consulta.

O LLM usou aliases incorretos (`accounts` em vez de `account`) e incluiu uma string literal incompleta (`'POPLATEK PO OBRATU…'`), resultando em sintaxe SQL inválida.

Esses problemas de sintaxe destacam os desafios na geração de código que segue rigorosamente a gramática SQL e as convenções específicas do banco de dados.

Por que alguns mestres em Direito são melhores em SQL?

Diversos fatores-chave determinam a eficácia com que um Modelo de Linguagem Amplo (LLM, na sigla em inglês) consegue transformar uma pergunta em linguagem natural em uma consulta correta a um banco de dados SQL.

1. Tamanho do modelo e dados de treinamento

  • Tamanho e design: Modelos maiores ou aqueles construídos com estruturas específicas podem lidar com tarefas complexas, como a geração de SQL, de forma mais eficaz.
  • O que aprendeu: Os dados usados para treinar o LLM são essenciais. Se ele vir muitos exemplos de perguntas vinculadas a respostas SQL, especialmente aquelas que envolvem operações complexas como junções ou cálculos (SOMA, MÉDIA), provavelmente terá um desempenho melhor.

2. Otimização para tarefas SQL

  • Os modelos podem receber treinamento adicional focado especificamente em tarefas de conversão de texto em SQL. Esse "ajuste fino" os ajuda a entender as estruturas do banco de dados e as regras SQL com mais eficácia do que os modelos treinados apenas com texto geral. O treinamento com instruções específicas também é útil.

3. Habilidades de raciocínio e mapeamento de esquemas

  • Raciocínio: Quão bem o profissional de LLM consegue determinar os passos exatos necessários a partir de uma pergunta por vezes vaga? A criação de SQL frequentemente requer etapas lógicas .
  • Entendendo o mapa do banco de dados (Esquema): Alguns LLMs são melhores em conectar conceitos na pergunta (como "clientes" ou "vendas totais") aos nomes reais de tabelas e colunas no banco de dados, mesmo que os nomes não sejam imediatamente óbvios.

Como os LLMs geram SQL: uma análise passo a passo.

Para ver fatores como "raciocínio" e "mapeamento de esquema" em ação, vamos percorrer o processo passo a passo que um modelo segue para gerar uma consulta. Todo esse fluxo de trabalho é impulsionado por uma técnica chamada Geração Aumentada por Recuperação (RAG).

Etapa 1: Análise inicial e seleção do banco de dados

Ao se deparar com uma pergunta, o LLM primeiro analisa a intenção do usuário para selecionar a ferramenta de banco de dados mais relevante.

  • Pergunta: “Quantas contas têm uma disposição do titular e uma solicitação para que um extrato seja gerado após uma transação?”
  • Ação da LLM: O modelo identifica palavras-chave como “contas”, “disposição” e “transação”. Conclui que a ferramenta de banco de dados financial é a escolha correta em relação a outras como california_schools ou superhero.

Etapa 2: Recuperação do esquema via RAG

Assim que o modelo escolhe uma ferramenta, ele precisa que o banco de dados "mapeie" o esquema. Ele não tem essa informação memorizada. Em vez disso, o sistema RAG a recupera em tempo real.

  1. Recuperação: A pergunta do usuário é usada para pesquisar um banco de dados vetorial que armazena informações de esquema. A pesquisa encontra e recupera os detalhes de esquema mais relevantes, como as definições das tabelas accounts e disp.
  2. Aumento de escopo: O texto do esquema recuperado é inserido automaticamente no prompt junto com a pergunta original.
  3. Geração: O LLM agora possui todo o contexto necessário para prosseguir.

Esse processo RAG garante que o modelo receba apenas as informações de esquema necessárias, tornando sua tarefa mais focada e eficiente.

Etapa 3: Raciocínio e construção de consultas

Com a pergunta e o esquema fornecido pelo RAG, o modelo mapeia conceitos da solicitação do usuário para os nomes específicos de tabelas e colunas que acabou de receber.

Monólogo interno de LLM:

  1. Objetivo: O usuário quer uma contagem, então vou começar com SELECT COUNT(...).
  2. Condições:
    • “…disposição do proprietário…” -> O esquema da tabela disp possui uma coluna type. Preciso de uma cláusula WHERE para type = 'OWNER'.
    • “…declaração a ser gerada em uma transação…” -> O esquema da tabela accounts possui uma coluna frequency. O filtro deve ser frequency = 'POPLATEK PO OBRATU'.
  3. Junções: As informações estão divididas entre as tabelas accounts e disp. O esquema mostra que elas estão vinculadas por account_id, então preciso JOIN entre elas.

Etapa 4: Geração do SQL final

Finalmente, o modelo reúne essas peças lógicas em uma consulta SQL sintaticamente correta. A qualidade dessa saída depende de:

  1. Capacidade de raciocínio: A habilidade do modelo em conectar logicamente a solicitação do usuário ao esquema fornecido.
  2. Conhecimento de SQL adquirido por meio de treinamento: O entendimento fundamental do modelo sobre a sintaxe e as funções do SQL.

Esse processo explica por que ocorrem erros. Se o esquema recuperado for ambíguo ou se um termo na pergunta não tiver uma correspondência clara, o LLM precisa fazer uma suposição fundamentada, o que pode levar aos erros que analisamos anteriormente.

O que é conversão de texto em SQL?

A tecnologia Text-to-SQL, de processamento de linguagem natural, converte a linguagem cotidiana em uma consulta SQL escrita em linguagem de consulta estruturada. Em vez de escrever manualmente o código SQL, o usuário faz uma pergunta em linguagem natural e o sistema gera uma instrução SQL que pode ser executada em um banco de dados.

O principal objetivo da conversão de texto para SQL é reduzir a lacuna entre a forma como as pessoas pensam sobre os dados e a forma como os bancos de dados exigem que as consultas sejam escritas. Isso é especialmente relevante para usuários não técnicos e analistas de dados que entendem o contexto de negócios, mas podem não se sentir à vontade para escrever sintaxe SQL do zero.

Em um nível básico, quando um usuário faz uma pergunta como:

  • “Mostrar todos os clientes de Nova Iorque que fizeram compras no mês passado.”

O sistema traduz essa solicitação em uma consulta SQL gerada que seleciona as colunas corretas, filtra linhas usando restrições de data e localização e une as tabelas necessárias do banco de dados. A qualidade da saída depende da capacidade do sistema de gerar consultas precisas que reflitam tanto a intenção do usuário quanto o esquema do banco de dados.

Onde a conversão de texto em SQL é útil hoje em dia

A conversão de texto para SQL funciona razoavelmente bem para:

  • Gere rascunhos de consultas que os analistas de dados possam revisar e ajustar.
  • Apoiar a análise exploratória de dados em situações onde a velocidade é mais importante do que a precisão.
  • Permitir que usuários sem conhecimento técnico acessem dados simples por meio de esquemas predefinidos.
  • Auxilie os usuários de SQL reduzindo a necessidade de escrever consultas repetitivas.

Nesses casos, a função de conversão de texto em SQL atua como uma ferramenta de IA auxiliar, e não como um sistema autônomo. A revisão humana continua fazendo parte do fluxo de trabalho, principalmente quando a precisão é fundamental.

Como funciona a conversão de texto em SQL?

Os modernos sistemas de conversão de texto em SQL dependem de grandes modelos de linguagem treinados com pares de perguntas em linguagem natural e consultas SQL. Esses modelos aprendem padrões que conectam a linguagem cotidiana a estruturas SQL, nomes de tabelas, colunas e relacionamentos. O processo normalmente segue uma sequência de etapas:

Compreensão da linguagem natural

O sistema primeiro analisa a entrada do usuário para determinar a intenção, as restrições e as entidades. Esta etapa envolve:

  • Identificar o que o usuário está solicitando (por exemplo, totais, filtros, comparações)
  • Extrair condições relevantes, como intervalos de tempo, locais ou categorias.
  • Interpretação de frases ambíguas que podem exigir contexto empresarial.

Erros nesta fase frequentemente levam a uma consulta SQL aparentemente correta, mas que responde à pergunta errada.

Mapeamento de esquema

Em seguida, o sistema mapeia os termos da pergunta para o esquema do banco de dados. Isso inclui:

  • Associar os conceitos da pergunta aos nomes e colunas das tabelas.
  • Entendendo as relações entre as tabelas
  • Respeitar os tipos de dados, como datas, campos numéricos ou categorias.

O mapeamento de esquemas torna-se mais desafiador à medida que o número de tabelas aumenta ou quando os nomes das colunas não correspondem exatamente à forma como os usuários descrevem os dados em perguntas em linguagem natural.

Construção de consultas SQL

Uma vez identificados os elementos de intenção e esquema, o sistema constrói a consulta SQL. Isso pode envolver:

  • Selecionar as tabelas e colunas corretas.
  • Adicionar junções em todas as tabelas necessárias
  • Aplicar filtros, agregações e lógica de agrupamento.
  • Produzir código SQL sintaticamente válido para sistemas como MySQL ou PostgreSQL.

Nessa fase, o sistema pode facilmente produzir SQL válido, mas logicamente incorreto, por exemplo, usando uma condição de junção ou agregação errada.

Validação e execução

Alguns sistemas incluem camadas de validação que verificam se a consulta SQL gerada pode ser executada e retornar resultados. Ferramentas mais avançadas podem tentar uma otimização limitada ou fazer perguntas adicionais quando a consulta for ambígua.

No entanto, a validação raramente garante uma resposta correta. Uma consulta pode ser executada com sucesso e ainda assim estar incorreta em detalhes sutis.

Limitações e riscos práticos

Apesar dos excelentes resultados nos testes de desempenho, o uso no mundo real expõe diversas limitações que não podem ser ignoradas.

Confiabilidade e exatidão

Mesmo os modelos de melhor desempenho falham em gerar SQL correto para uma parcela significativa de consultas complexas. Uma taxa de erro de 20% ou superior significa:

  • Uma em cada cinco consultas geradas pode retornar resultados enganosos.
  • Os erros são frequentemente semânticos, e não sintáticos.
  • Junções, filtros ou agregações incorretas podem passar despercebidas.

Isso é particularmente arriscado em sistemas de relatórios, previsões ou apoio à decisão, onde os usuários presumem que o resultado está correto.

Dependência da supervisão humana

Considerando o desempenho atual, o SQL gerado deve ser revisado por alguém que entenda de SQL e do banco de dados. Sem essa supervisão:

  • Os usuários podem confiar em uma consulta incorreta porque ela é executada com sucesso.
  • Os erros podem se propagar para painéis de controle, relatórios ou sistemas subsequentes.
  • A responsabilidade torna-se incerta quando as decisões dependem de resultados gerados por IA.

A conversão de texto em SQL não elimina a necessidade de conhecimento especializado em SQL; ela apenas muda o foco de aplicação desse conhecimento.

teto de complexidade

À medida que a complexidade das consultas aumenta, o desempenho cai drasticamente. Os modelos têm dificuldades com:

  • Junções múltiplas em várias tabelas
  • Lógica aninhada e subconsultas
  • Cálculos específicos do domínio
  • Consultas que exigem conhecimento profundo do esquema do banco de dados

Benchmarks como o BIRD-SQL destacam que consultas complexas continuam sendo o principal ponto de falha, mesmo para modelos avançados.

Variabilidade do modelo

As diferenças de desempenho entre os modelos são significativas. Alguns modelos de linguagem apresentam um desempenho razoável, enquanto outros falham frequentemente no mesmo conjunto de dados. Isso significa:

  • A seleção do modelo tem um impacto direto na precisão.
  • O ajuste fino e os dados de treinamento são importantes.
  • Modelos de propósito geral podem não funcionar bem sem adaptação ao domínio.

Não existe uma solução universal que funcione igualmente bem em todas as bases de dados e casos de uso.

Governança e privacidade de dados

Sistemas de conversão de texto em SQL introduzem riscos de acesso adicionais:

  • Os usuários podem consultar tabelas confidenciais sem compreender as implicações.
  • O SQL gerado pode expor metadados sobre o esquema do banco de dados.
  • Os controles de privacidade de dados devem ser aplicados fora do modelo de linguagem.

Sem controles de acesso robustos, a conversão de texto em SQL pode enfraquecer as práticas de governança existentes.

Metodologia de avaliação comparativa para conversão de texto em SQL

Este benchmark compartilha sua estrutura de avaliação com nosso benchmark RAG agentivo , que descreve em detalhes a construção do conjunto de dados, a arquitetura do agente, o desafio de ambiguidade semântica e a rubrica de pontuação completa.

Ambos os benchmarks utilizam o mesmo banco de dados BIRD-SQL com 500 questões. 1 subconjunto, pipeline agentivo, recuperação de esquema com suporte do ChromaDB e avaliação do LLM como Juiz com o Sonnet de Claude 4. A métrica aqui apresentada, taxa de geração de comandos SQL corretos, é a porcentagem de questões em que o modelo direcionou para o banco de dados correto e gerou uma consulta SQL semanticamente correta. Todos os modelos foram avaliados sob condições idênticas de zero-shot com temperatura 0 e sem dicas específicas de domínio.

Leitura complementar

Explore outros benchmarks RAG, como:

Registro de alterações

20 de fevereiro de 2026

Adicionados 2 novos modelos ao benchmark:

  • Google: Prévia do Gemini 3.1 Pro (google/gemini-3.1-pro-preview)
  • Anthropic: Claude Sonnet 4.6 (antrópico/claude-sonnet-4.6)

10 de fevereiro de 2026

Adicionados 2 novos modelos ao benchmark:

  • Claude Opus 4.6 (antrópico/claude-opus-4.6)
  • Kimi K2.5 (moonshotai/kimi-k2.5)

Perguntas frequentes

Com base em nossas descobertas, você não deve confiar totalmente em consultas complexas geradas pelos modelos de linguagem atuais sem validação. Embora úteis para rascunhos e solicitações simples, mesmo os modelos de melhor desempenho apresentam taxas de erro significativas (até 20% em tarefas complexas). Sempre revise e verifique o SQL gerado, especialmente para aplicações críticas.

Sim, muitas LLMs têm capacidades que vão além da simples geração de SELECT. Elas podem frequentemente auxiliar na compreensão e sugerir modificações em código SQL existente ou até mesmo gerar DDL (Linguagem de Definição de Dados), como instruções CREATE TABLE, com base em descrições, embora a precisão dessas tarefas também exija verificação.

Fornecer um contexto claro é fundamental. Certifique-se de que o analista de software tenha acesso ao esquema do banco de dados (nomes das tabelas, nomes das colunas, relacionamentos). Declarar claramente o resultado desejado e, potencialmente, fornecer alguns exemplos de consultas relevantes (exemplos simples) para que o analista aprenda pode melhorar significativamente sua capacidade de selecionar as tabelas corretas e construir consultas precisas.

Embora as LLMs possam abstrair algumas pequenas diferenças de sintaxe entre dialetos de banco de dados, elas não resolvem completamente os problemas de compatibilidade de versão do banco de dados. Elas ainda podem gerar SQL específico para um dialeto (por exemplo, PostgreSQL vs. MySQL) ou falhar ao usar funções compatíveis com versões mais antigas, a menos que sejam explicitamente orientadas ou treinadas para isso. A validação em relação ao banco de dados de destino continua sendo importante.

Cem Dilmegani
Cem Dilmegani
Analista Principal
Cem é o analista principal da AIMultiple desde 2017. A AIMultiple fornece informações para centenas de milhares de empresas (segundo o SimilarWeb), incluindo 55% das empresas da Fortune 500, todos os meses. O trabalho de Cem foi citado por importantes publicações globais, como Business Insider, Forbes e Washington Post, além de empresas globais como Deloitte e HPE, ONGs como o Fórum Econômico Mundial e organizações supranacionais como a Comissão Europeia. Você pode ver mais empresas e recursos renomados que mencionaram a AIMultiple. Ao longo de sua carreira, Cem atuou como consultor de tecnologia, comprador de tecnologia e empreendedor na área. Ele assessorou empresas em suas decisões tecnológicas na McKinsey & Company e na Altman Solon por mais de uma década. Também publicou um relatório da McKinsey sobre digitalização. Liderou a estratégia de tecnologia e a área de compras de uma empresa de telecomunicações, reportando-se diretamente ao CEO. Além disso, liderou o crescimento comercial da empresa de tecnologia avançada Hypatos, que atingiu uma receita recorrente anual de sete dígitos e uma avaliação de nove dígitos, partindo de zero, em apenas dois anos. O trabalho de Cem no Hypatos foi noticiado por importantes publicações de tecnologia, como TechCrunch e Business Insider. Cem participa regularmente como palestrante em conferências internacionais de tecnologia. Ele se formou em engenharia da computação pela Universidade Bogazici e possui um MBA pela Columbia Business School.
Ver perfil completo
Pesquisado por
Ekrem Sarı
Ekrem Sarı
Pesquisador de IA
Ekrem é pesquisador de IA na AIMultiple, com foco em automação inteligente, GPUs, agentes de IA e frameworks RAG.
Ver perfil completo

Comentários 1

Compartilhe suas ideias

Seu endereço de e-mail não será publicado. Todos os campos são obrigatórios.

0/450
PFJ Rofgowski
PFJ Rofgowski
Dec 10, 2025 at 20:04

Curious, how much of the context engineering and specific prompting did you apply in your benchmarks. Or, was it to review the models only? I have found much higher return of correct and consistent responses. A higher fidelity. To do that, I needed to provide a most sophisticated prompt that fed the context window as the question was being asked. Not perfect, but better than those scores represented in this article when using the Grok 4.x .

Ekrem Sarı
Ekrem Sarı
Feb 10, 2026 at 08:46

Great point. This benchmark intentionally uses zero-shot, minimal prompting with temperature=0. No few-shot examples, no domain-specific instructions, no iterative refinement. The goal was to measure each model's baseline text-to-SQL capability. So your experience with Grok 4 getting higher fidelity through sophisticated context engineering is completely expected. A well-crafted prompt with detailed schema descriptions, few-shot examples, and domain-specific rules will improve any model's performance significantly. What this benchmark isolates is how well the model performs out-of-the-box when given only the raw question and retrieved schema, which helps compare the models' inherent SQL reasoning abilities on a level playing field.           We'll make this clearer in the methodology section. Thanks for raising it.