Llama3 8B SQL Criar Contexto: Texto para SQL com Schema Grounding
Um modelo Llama 3 8B ajustado que gera consultas SQL precisas a partir de linguagem natural usando instruções CREATE TABLE como contexto.
On this page
Llama3 8B SQL Criar Contexto: Texto para SQL com Schema Grounding
A conversão de perguntas de linguagem natural em consultas SQL é uma das aplicações mais práticas de LLMs ajustados. O Llama3 8B SQL Create Context adota uma abordagem focada: ele gera SQL fundamentando cada saída no esquema da tabela real, evitando os problemas de alucinação que afetam a maioria dos sistemas de texto para SQL.
- Ajustado de NousResearch/Meta-Llama-3-8B em 78.577 exemplos SQL
- Usa instruções CREATE TABLE como contexto de entrada para geração de âncora
- Validado em conjuntos de dados WikiSQL e Spider combinados com perda de 0,0201
Como funciona
O modelo aceita duas entradas: uma pergunta em linguagem natural (por exemplo, “Qual é a receita total por região?”) e uma instrução CREATE TABLE que define o esquema relevante. Em seguida, gera uma consulta SQL que responde à pergunta usando apenas as tabelas e colunas descritas no esquema.
Essa abordagem difere dos modelos de texto para SQL abertos que alucinam nomes de tabelas ou colunas. Ao exigir uma instrução CREATE TABLE como contexto, o modelo sempre terá o esquema disponível e terá maior probabilidade de produzir consultas sintaticamente e semanticamente corretas.
Exemplo de interação:
Input:
CREATE TABLE sales (
id INT PRIMARY KEY,
region VARCHAR(50),
amount DECIMAL(10,2),
sale_date DATE
);
Question: What are the top 3 regions by total sales amount?
Output:
SELECT region, SUM(amount) AS total_amount
FROM sales
GROUP BY region
ORDER BY total_amount DESC
LIMIT 3;
Detalhes do treinamento
O modelo foi ajustado usando Axolote em uma combinação dos conjuntos de dados WikiSQL e Spider, totalizando 78.577 exemplos de treinamento. Hiperparâmetros principais: Parâmetro | Valor
|---|---
Modelo Básico | NousResearch/Meta-Llama-3-8B Taxa de aprendizagem | 2e-5 Agendador | Cosseno com 100 passos de aquecimento Otimizador | AdamW paginado de 8 bits Épocas | 3 Comprimento da sequência | 8192 Tamanho do lote | 1 (acúmulo de gradiente: 8) Atenção | Atenção instantânea A perda de treinamento caiu de 0,7175 na etapa 1 para 0,0106 na época 2,5, com a perda de validação se estabilizando em 0,0201.
Quando usar este modelo
O modelo funciona melhor quando:
- O esquema da tabela é conhecido e fornecido como uma instrução CREATE TABLE
- As consultas são diretas (SELECT, WHERE, GROUP BY, ORDER BY, LIMIT)
- Você precisa evitar alucinações com nomes de tabelas/colunas
Pode ter dificuldades com:
- Consultas complexas de multi-junção
- Subconsultas e lógica aninhada
- Perguntas ambíguas ou abertas
- Dialetos SQL invisíveis
Configuração e uso
Carregue o modelo com HuggingFace Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "artificialguybr/llama3-8b-sql-create-context"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
prompt = """CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary DECIMAL(10,2)
);
Question: How many employees are in each department?"""
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Para inferência em escala, o modelo é compatível com inferência de geração de texto (TGI) e pode ser implantado por meio de endpoints HuggingFace.
Limitações
O modelo depende de instruções CREATE TABLE precisas — esquemas incompletos ou incorretos produzirão consultas incorretas. Ele não foi projetado para consultas analíticas que exigem conhecimento externo, raciocínio de bom senso ou consultas em esquemas não fornecidos no prompt.
Perguntas frequentes
P: Este modelo funciona com qualquer dialeto SQL? R: Foi treinado em SQL padrão do WikiSQL e Spider. Ele pode não lidar com sintaxe específica de dialeto (por exemplo, funções específicas do PostgreSQL, T-SQL) sem ajuste fino.
P: Qual é a diferença entre este e um modelo genérico de texto para SQL? R: Este modelo requer especificamente o contexto CREATE TABLE, que ancora a geração ao esquema real e evita alucinações. Os modelos genéricos podem inventar tabelas ou colunas inexistentes.
P: Posso ajustá-lo ainda mais para meu próprio banco de dados? R: Sim. A configuração do Axolotl está incluída no cartão de modelo, e o treinamento adicional em seus pares esquema-pergunta deve melhorar a precisão específica do domínio.
P: Qual é a perda de avaliação? R: 0,0201 no conjunto de validação retido (divisão de 5% dos dados de treinamento).
Fontes
- Cartão modelo HuggingFace — Detalhes completos do treinamento, configuração e resultados da avaliação
- Conjunto de dados b-mc2/sql-create-context — Conjunto de dados de treinamento combinando WikiSQL e Spider