Serviços
Contate-nos

Texto-para-SQL: Comparação da Precisão de LLM

Cem Dilmegani
Cem Dilmegani
atualizado em 30 jun. 2026

Confio em SQL para análise de dados há 18 anos, começando nos meus dias como consultor. Traduzir perguntas em linguagem natural para SQL torna os dados mais acessíveis, permitindo que qualquer pessoa, mesmo aqueles sem habilidades técnicas, trabalhe diretamente com bancos de dados.

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

Loading Chart

Erros comuns em LLM-gerados SQL

LLMs frequentemente cometem quatro tipos de erro: joins defeituosos, erros de agregação, filtros ausentes e erros de sintaxe.

Lógica de join incorreta

Os modelos muitas vezes lutaram para identificar e implementar corretamente as operações `JOIN` necessárias entre tabelas, às vezes omitindo-as completamente ou usando subconsultas menos ótimas de forma inadequada.

O LLM falhou em unir corretamente as tabelas `frpm` e `schools` usando o `CDSCode`. Também alucinou nomes de colunas (`Charter`) e valores de filtro (`County = ‘Fresno’`).

Erros na lógica de join quebram fundamentalmente o aspecto relacional da consulta, levando à recuperação de dados incompleta ou incorreta quando múltiplas tabelas estão envolvidas.

Erros de agregação e agrupamento

Aplicar funções de agregação (como `MAX`, `AVG`, `COUNT`, `SUM`) ou cláusulas `GROUP BY` incorretamente 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 agrupar os dados por distrito (GROUP BY dname) e usar uma função de agregação (AVG(AvgScrRead)). Esta parte da lógica está correta.

No entanto, o LLM falhou em incorporar um filtro crítico da pergunta: a palavra “ativo“. Para atender a este requisito, a consulta precisava fazer JOIN da tabela satscores com a tabela schools e depois filtrar os resultados com uma cláusula WHERE T1.StatusType = ‘Active’.

Isso destaca uma falha comum de LLM: executar corretamente uma instrução primária e óbvia (calcular uma média) enquanto perde uma condição secundária, mas igualmente importante (filtrar por status). Isso mostra uma fraqueza em sintetizar múltiplas restrições em uma única consulta correta.

Filtros ausentes ou errados

Os modelos às vezes falharam em incluir cláusulas `WHERE` necessárias ou selecionar as colunas erradas na instrução `SELECT`, não abordando completamente as restrições ou as informações explicitamente solicitadas no prompt.

O LLM identificou corretamente a lógica para encontrar a escola (`ORDER BY NumGE1500 DESC LIMIT 1`), mas falhou em selecionar o número de `Phone` solicitado e omitiu o join necessário com a tabela `schools` para recuperá-lo.

Esses erros muitas vezes decorrem de uma 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 diretos, como o uso de aliases de tabela incorretos ou a produção de instruções SQL incompletas, que impedem a execução da consulta.

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

Esses problemas de sintaxe destacam desafios na geração de código que adere estritamente à gramática SQL e às convenções específicas do banco de dados.

Por que alguns LLMs são melhores em SQL

Várias coisas-chave determinam o quão bem um Modelo de Linguagem Grande (LLM) pode transformar uma pergunta simples em inglês em uma consulta de banco de dados SQL correta.

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 envolvendo operações complexas como joins ou cálculos (SUM, AVG), provavelmente terá um desempenho melhor.

2. Ajuste fino para tarefas de SQL

  • Os modelos podem receber treinamento extra focado especificamente em tarefas de texto-para-SQL. Este “ajuste fino” ajuda-os a entender estruturas de banco de dados e regras SQL de forma mais eficaz do que modelos treinados apenas em texto geral. Treinamento em instruções específicas também ajuda.

3. Capacidades de raciocínio e mapeamento de esquema

  • Raciocínio: Quão bem o LLM consegue descobrir os passos exatos necessários a partir de uma pergunta às vezes vaga? Criar SQL frequentemente requer passos lógicos.
  • 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 LLMs geram SQL: Uma visão 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 este fluxo de trabalho é impulsionado por uma técnica chamada Geração Aumentada por Recuperação (RAG).

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

Quando apresentada 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 de proprietário e solicitação para que um extrato seja gerado após uma transação?”
  • Ação do LLM: O modelo identifica palavras-chave como “contas”, “disposição” e “transação”. Ele conclui que a ferramenta de banco de dados financial é a escolha correta em vez de outras como california_schools ou superhero.

Etapa 2: Recuperação do esquema via RAG

Uma vez que o modelo escolhe uma ferramenta, ele precisa do “mapa” do banco de dados, o esquema. Ele não tem essa informação memorizada. Em vez disso, o sistema RAG o 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 para as tabelas accounts e disp.
  2. Aumento: Este texto de esquema recuperado é inserido automaticamente no prompt junto com a pergunta original.
  3. Geração: O LLM agora tem todo o contexto de que precisa para prosseguir.

Este 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 consulta

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 do LLM:

  1. Objetivo: O usuário quer uma contagem, então começarei com SELECT COUNT(...).
  2. Condições:
    • “…disposição de proprietário…” -> O esquema da tabela disp tem uma coluna type. Preciso de uma cláusula WHERE para type = 'OWNER'.
    • “…extrato a ser gerado após uma transação…” -> O esquema da tabela accounts tem uma coluna frequency. O filtro deve ser frequency = 'POPLATEK PO OBRATU'.
  3. Joins: A informação está dividida entre as tabelas accounts e disp. O esquema mostra que elas estão vinculadas por account_id, então preciso JOIN elas.

Etapa 4: Gerando o SQL final

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

  1. Capacidade de raciocínio: A capacidade do modelo de conectar logicamente a solicitação do usuário ao esquema fornecido.
  2. Conhecimento de SQL do treinamento: A compreensão central do modelo sobre sintaxe e funções SQL.

Este processo explica por que ocorrem erros. Se o esquema recuperado for ambíguo ou um termo na pergunta não mapear limpa, o LLM deve fazer uma suposição educada, o que pode levar aos erros que analisamos anteriormente.

O que é texto-para-SQL?

Texto-para-SQL é uma tecnologia de processamento de linguagem natural que converte linguagem cotidiana em uma consulta SQL escrita em linguagem de consulta estruturada. Em vez de escrever manualmente código SQL, um 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 objetivo principal do texto-para-SQL é reduzir a lacuna entre como as pessoas pensam sobre dados e 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 confortáveis escrevendo sintaxe SQL do zero.

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

  • “Mostre todos os clientes de Nova York 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 junta as tabelas de banco de dados necessárias. A qualidade da saída depende se o sistema pode gerar consultas precisas que reflitam tanto a intenção do usuário quanto o esquema do banco de dados.

Onde o texto-para-SQL é útil hoje

Texto-para-SQL funciona razoavelmente bem para:

  • Gerar consultas de rascunho que analistas de dados podem revisar e ajustar.
  • Suportar análise de dados exploratória onde a velocidade importa mais do que a precisão.
  • Permitir que usuários não técnicos acessem dados simples através de esquemas predefinidos.
  • Auxiliar usuários de SQL reduzindo a necessidade de escrever consultas repetitivas.

Nesses casos, o texto-para-SQL funciona como uma ferramenta de IA assistiva, em vez de um sistema autônomo. Revisão humana permanece parte do fluxo de trabalho, especialmente quando a correção importa.

Como funciona o texto-para-SQL?

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

Compreensão de linguagem natural

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

  • Identificar o que o usuário está pedindo (por exemplo, totais, filtros, comparações)
  • Extrair condições relevantes, como intervalos de tempo, locais ou categorias
  • Interpretar frases ambíguas que podem exigir contexto de negócios

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

Mapeamento de esquema

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

  • Coincidir conceitos na pergunta com nomes de tabelas e colunas
  • Entender relacionamentos entre tabelas
  • Respeitar tipos de dados, como datas, campos numéricos ou categorias

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

Construção de consulta SQL

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

  • Selecionar as tabelas e colunas corretas
  • Adicionar joins 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

Nesta etapa, o sistema pode facilmente produzir SQL válido, mas logicamente incorreto, por exemplo, usando a condição de join errada ou agregação.

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 otimização limitada ou fazer perguntas de acompanhamento quando a consulta é ambígua.

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

Limitações e riscos práticos

Apesar de fortes pontuações de benchmark, o uso no mundo real expõe várias limitações que não podem ser ignoradas.

Confiabilidade e correção

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

  • Uma em cada cinco consultas geradas pode retornar resultados enganosos
  • Erros são frequentemente semânticos, não sintáticos
  • Joins, filtros ou agregações incorretos podem passar despercebidos

Isso é particularmente arriscado em relatórios, previsões ou sistemas de suporte à decisão, onde os usuários assumem que a saída está correta.

Dependência de supervisão humana

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

  • Os usuários podem confiar em uma consulta incorreta porque ela é executada com sucesso
  • Erros podem se propagar para dashboards, relatórios ou sistemas downstream
  • A responsabilidade torna-se obscura quando decisões dependem de saídas geradas por IA

Texto-para-SQL não remove a necessidade de expertise em SQL; ele muda onde essa expertise é aplicada.

Teto de complexidade

À medida que a complexidade da consulta aumenta, o desempenho cai drasticamente. Os modelos lutam com:

  • Múltiplos joins em muitas tabelas
  • Lógica aninhada e subconsultas
  • Cálculos específicos de domínio
  • Consultas que exigem conhecimento profundo do esquema do banco de dados

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

Variabilidade do modelo

Diferenças de desempenho entre modelos são significativas. Alguns modelos de linguagem funcionam razoavelmente bem, enquanto outros falham frequentemente no mesmo conjunto de dados. Isso significa:

  • A seleção do modelo tem um impacto direto na precisão
  • Ajuste fino e dados de treinamento importam
  • Modelos de propósito geral podem não funcionar bem sem adaptação de domínio

Não há uma solução universal que funcione igualmente bem em bancos de dados e casos de uso.

Governança de dados e privacidade

Sistemas de texto-para-SQL introduzem riscos adicionais de acesso:

  • Os usuários podem consultar tabelas sensíveis sem entender as implicações
  • SQL gerado pode expor metadados sobre o esquema do banco de dados
  • Controles de privacidade de dados devem ser aplicados fora do modelo de linguagem

Sem controles de acesso fortes, o texto-para-SQL pode enfraquecer práticas de governança existentes.

Não perca os nossos benchmarks e insights baseados em dados. O botão abre o Google; selecionar a AIMultiple confirma que deseja ver a AIMultiple com mais frequência nos resultados de pesquisa do Google.
GoogleAdicionar como fonte preferencial

Metodologia de benchmark para texto-para-SQL

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

Ambos os benchmarks usam o mesmo subconjunto de 500 perguntas BIRD-SQL1 , pipeline agêntico, recuperação de esquema apoiada por ChromaDB e avaliação LLM-como-Juiz com Claude 4 Sonnet. A métrica relatada aqui, taxa de geração de comando SQL correto, é a porcentagem de perguntas em que o modelo roteou para o banco de dados correto e gerou uma consulta SQL semanticamente correta. Todos os modelos foram avaliados sob condições zero-shot idênticas com temperatura 0 e sem dicas específicas de domínio.

Leitura adicional

Explore outros benchmarks de RAG, como:

Log de alterações

20 de abril de 2026

Adicionado 1 novo modelo ao benchmark:

  • Anthropic: Claude Opus 4.7 (anthropic/claude-opus-4.7)

20 de fevereiro de 2026

Adicionados 2 novos modelos ao benchmark:

  • Google: Gemini 3.1 Pro Preview (google/gemini-3.1-pro-preview)
  • Anthropic: Claude Sonnet 4.6 (anthropic/claude-sonnet-4.6)

10 de fevereiro de 2026

Adicionados 2 novos modelos ao benchmark:

  • Claude Opus 4.6 (anthropic/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 por LLMs atuais sem validação. Embora úteis para rascunhos e solicitações simples, mesmo os modelos de melhor desempenho têm taxas de erro significativas (até 20% em tarefas complexas). Sempre revise e verifique o SQL gerado, especialmente para aplicações críticas.

Sim, muitos LLMs têm capacidades além da geração simples de SELECT. Eles podem frequentemente ajudar a entender 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 para essas tarefas também exija verificação.

Fornece contexto claro é fundamental. Garanta que o LLM tenha acesso ao esquema do banco de dados (nomes de tabelas, nomes de colunas, relacionamentos). Declarar claramente o resultado desejado e potencialmente fornecer algumas consultas de exemplo relevantes (prompting few-shot) para o LLM aprender pode melhorar significativamente sua capacidade de selecionar as tabelas corretas e construir consultas precisas.

Embora LLMs possam abstrair algumas diferenças de sintaxe menores entre dialetos de banco de dados, eles não resolvem totalmente problemas de compatibilidade de versão de tipo de banco de dados. Eles 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 explicitamente guiados ou treinados para isso. A validação contra o banco de dados de destino permanece importante.

Cite este benchmark

Escolha o formato adequado ao local onde você vai publicar. Colar a versão com link no seu CMS preserva o backlink.

Cem Dilmegani and Ekrem Sarı (2026) - "Texto-para-SQL: Comparação da Precisão de LLM". Publicado on-line em AIMultiple.com. Acessado em 30 Junho 2026, em: https://aimultiple.com/text-to-sql [Recurso on-line]

Dilmegani, C., & Sarı, E. (2026, 30 Junho). Texto-para-SQL: Comparação da Precisão de LLM. AIMultiple. https://aimultiple.com/text-to-sql

@misc{dilmegani2026,
  author = {Dilmegani, Cem and Sarı, Ekrem},
  title  = {{Texto-para-SQL: Comparação da Precisão de LLM}},
  year   = {2026},
  month  = jun,
  howpublished    = {\url{https://aimultiple.com/text-to-sql}},
  note   = {AIMultiple. Acessado em 30 Junho 2026}
}
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. Os comentários são deixados em seu idioma original.

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.