Llama3 8B SQL Crear contexto: Texto a SQL con conexión a…
Un modelo Llama 3 8B ajustado que genera consultas SQL precisas a partir de lenguaje natural utilizando declaraciones CREATE TABLE como contexto.
On this page
Llama3 8B SQL Crear contexto: Texto a SQL con conexión a tierra de esquema
Convertir preguntas en lenguaje natural en consultas SQL es una de las aplicaciones más prácticas de los LLM perfeccionados. Llama3 8B SQL Create Context adopta un enfoque enfocado: genera SQL conectando cada salida al esquema de tabla real, evitando los problemas de alucinaciones que afectan a la mayoría de los sistemas de texto a SQL.
- Ajustado desde NousResearch/Meta-Llama-3-8B en 78.577 ejemplos de SQL
- Utiliza declaraciones CREATE TABLE como contexto de entrada para anclar la generación
- Validado en conjuntos de datos combinados de WikiSQL y Spider con una pérdida de 0,0201
Cómo funciona
El modelo acepta dos entradas: una pregunta en lenguaje natural (por ejemplo, "¿Cuál es el ingreso total por región?") y una declaración CREATE TABLE que define el esquema relevante. Luego genera una consulta SQL que responde a la pregunta utilizando únicamente las tablas y columnas descritas en el esquema.
Este enfoque difiere de los modelos abiertos de texto a SQL que alucinan nombres de tablas o columnas. Al requerir una instrucción CREATE TABLE como contexto, el modelo siempre tiene el esquema disponible y es más probable que produzca consultas sintáctica y semánticamente correctas.
Ejemplo de interacción:
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;
Detalles del entrenamiento
El modelo fue ajustado usando ajolote en una combinación de los conjuntos de datos WikiSQL y Spider, con un total de 78.577 ejemplos de entrenamiento. Hiperparámetros clave: Parámetro | Valor
|---|---
Modelo básico | NousResearch/Meta-Llama-3-8B Tasa de aprendizaje | 2e-5 Programador | Coseno con 100 pasos de calentamiento. Optimizador | AdamW paginado de 8 bits Épocas | 3 Longitud de secuencia | 8192 Tamaño del lote | 1 (acumulación de gradiente: 8) Atención | Atención relámpago La pérdida de entrenamiento cayó de 0,7175 en el paso 1 a 0,0106 en la época 2,5, y la pérdida de validación se estabilizó en 0,0201.
Cuándo utilizar este modelo
El modelo funciona mejor cuando:
- El esquema de la tabla se conoce y se proporciona como una declaración CREATE TABLE
- Las consultas son sencillas (SELECCIONAR, DÓNDE, AGRUPAR POR, ORDENAR POR, LIMITAR)
- Debe evitar las alucinaciones de nombres de tablas/columnas
Puede tener problemas con:
- Consultas complejas de múltiples uniones
- Subconsultas y lógica anidada
- Preguntas ambiguas o abiertas
- Dialectos SQL invisibles
Configuración y uso
Cargue el modelo con 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 la inferencia a escala, el modelo es compatible con la inferencia de generación de texto (TGI) y se puede implementar a través de puntos finales de HuggingFace.
Limitaciones
El modelo se basa en declaraciones CREATE TABLE precisas: los esquemas incompletos o incorrectos producirán consultas incorrectas. No está diseñado para consultas analíticas que requieran conocimiento externo, razonamiento de sentido común o consultas entre esquemas no proporcionados en el mensaje.
Preguntas frecuentes
P: ¿Este modelo funciona con algún dialecto SQL? R: Fue entrenado en SQL estándar de WikiSQL y Spider. Es posible que no maneje la sintaxis específica del dialecto (por ejemplo, funciones específicas de PostgreSQL, T-SQL) sin un ajuste fino.
P: ¿Cuál es la diferencia entre este y un modelo genérico de texto a SQL? R: Este modelo requiere específicamente el contexto CREATE TABLE, que ancla la generación al esquema real y previene las alucinaciones. Los modelos genéricos pueden inventar tablas o columnas inexistentes.
P: ¿Puedo ajustarlo aún más para mi propia base de datos? R: Sí. La configuración de Axolotl está incluida en la tarjeta modelo y la capacitación adicional sobre sus pares de esquema y preguntas debería mejorar la precisión específica del dominio.
P: ¿Cuál es la pérdida de evaluación? R: 0,0201 en el conjunto de validación retenido (división del 5 % de los datos de entrenamiento).
Fuentes
- Tarjeta modelo HuggingFace — Detalles completos del entrenamiento, configuración y resultados de la evaluación.
- b-mc2/sql-create-context Conjunto de datos — Conjunto de datos de entrenamiento que combina WikiSQL y Spider