OmniSQL: un modelo para transformar el lenguaje natural en consultas SQL de alta calidad
Últimos recursos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 11.3K 00
Introducción general
OmniSQL es un proyecto de código abierto desarrollado por el equipo RUCKBReasoning y alojado en GitHub. Su función principal es transformar las preguntas en lenguaje natural introducidas por el usuario en sentencias de consulta SQL de alta calidad para ayudar a los usuarios a interactuar fácilmente con las bases de datos. Basado en un marco de generación automatizada de datos de texto a SQL, el proyecto ha lanzado el conjunto de datos SynSQL-2.5M, que contiene 2,5 millones de muestras y es actualmente el mayor conjunto de datos sintéticos de texto a SQL entre dominios. OmniSQL proporciona tres tamaños de modelo, 7B, 14B y 32B, que son adecuados para usuarios con diferentes necesidades. OmniSQL ofrece tres tamaños de modelo, 7B, 14B y 32B, adecuados para usuarios con diferentes necesidades. Proporciona un potente soporte para el análisis de datos, la gestión de bases de datos y la investigación de modelos. El proyecto utiliza el protocolo Apache 2.0, los usuarios pueden descargar y participar en la mejora de forma gratuita.

Lista de funciones
- Convertir el lenguaje natural en SQL: el usuario introduce una pregunta y el modelo genera una consulta SQL precisa.
- Soporte de consultas complejas: Genere SQL avanzado desde consultas simples de una sola tabla hasta uniones de varias tablas.
- Generación de conjuntos de datos: se proporciona SynSQL-2.5M, que contiene 2,5 millones de muestras de alta calidad.
- Modelo multiescala: proporciona modelos con tres escalas de parámetros: 7B, 14B y 32B.
- Código abierto y gratuito: el código y el conjunto de datos están disponibles gratuitamente en GitHub.
Utilizar la ayuda
OmniSQL es una herramienta basada en código para usuarios con algunos conocimientos de programación. A continuación encontrará una guía detallada de instalación y uso que le ayudará a empezar rápidamente.
Proceso de instalación
- Preparar el entorno
Asegúrese de que su ordenador tiene instalado Python 3.8 o posterior. Abra la línea de comandos y escribapython --version
Compruébalo. Si no lo tiene instalado, puede descargarlo del sitio web de Python. - Descargar proyecto
entrevistashttps://github.com/RUCKBReasoning/OmniSQL
Haz clic en el botón "Código" y selecciona "Descargar ZIP" para descargar el archivo zip del proyecto. Descomprímelo y obtén la carpeta del proyecto. O puedes clonarlo con el comando Git:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
- Instalación de dependencias
Vaya al directorio del proyecto y ejecútelo desde la línea de comandos:
pip install -r requirements.txt
Esto instalará las librerías Python necesarias para funcionar. Si necesita la inferencia de modelos, también tendrá que instalar el módulo vLLM o Transformers con el siguiente comando:
pip install vllm
tal vez
pip install transformers torch
- Descargar modelos y conjuntos de datos
OmniSQL ofrece tres modelos y el conjunto de datos SynSQL-2.5M, que pueden descargarse desde los siguientes enlaces:
- SynSQL-2.5M. HuggingFace
- OmniSQL-7B. HuggingFace
- OmniSQL-14B. HuggingFace
- OmniSQL-32B. HuggingFace
Una vez descargado, coloque el archivo en el directorio del proyecto.
- Proyectos en curso
Vaya al directorio del proyecto y ejecutepython omnisql.py
Compruebe que el entorno es correcto. El modelo necesita ser cargado para su uso real, ver más abajo.
Funciones principales
1. Convertir el lenguaje natural en SQL
La funcionalidad principal de OmniSQL es traducir preguntas en consultas SQL. Utilizando vLLM como ejemplo, ejecute el siguiente código:
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
# 定义提示模板
prompt = '''Task Overview:
You are a data science expert. Below, you are provided with a database schema and a natural language question. Your task is to generate a valid SQL query.
Database Engine: SQLite
Database Schema:
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);
Question:
查找 users 表中年龄大于 30 的人的名字
Instructions:
- 只输出问题要求的信息。
- 逐步思考后生成 SQL。
Output Format:
-- Su consulta SQL
'''
# 加载模型
model_path = "seeklhy/OmniSQL-7B" # 替换为你的模型路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
llm = LLM(model=model_path, dtype="float16")
# 生成 SQL
sampling_params = SamplingParams(temperature=0, max_tokens=2048)
chat_prompt = tokenizer.apply_chat_template([{"role": "user", "content": prompt}], add_generation_prompt=True, tokenize=False)
outputs = llm.generate([chat_prompt], sampling_params)
print(outputs[0].outputs[0].text)
La salida puede ser:
SELECT name FROM users WHERE age > 30;
2. Utilización del conjunto de datos SynSQL-2.5M
El conjunto de datos contiene 2,5 millones de muestras, cada una de las cuales incluye la estructura de la base de datos, preguntas, consultas SQL y procesos de pensamiento. Descárguelo y utilícelo directamente para formación o investigación. Ver muestras:
- Descomprima el archivo del conjunto de datos.
- Abrir cualquier archivo JSON con el formato
{"db": ..., "question": ..., "sql": ..., "cot": ...}
.
3. Formación y evaluación
El proyecto proporciona guiones de formación, situados en el train_and_evaluate
carpeta. Ejecute el ejemplo:
python train.py --model OmniSQL-7B --data SynSQL-2.5M
Los scripts de evaluación también se encuentran en la misma carpeta para reproducir los resultados oficiales.
Trucos y consejos
- Soporte de bases de datosActualmente sólo se admite SQLite; si se necesitan otras bases de datos, se puede utilizar el marco de generación de datos para sintetizar nuevos datos.
- requisitos de hardwareEl modelo 7B requiere unos 14 GB de memoria de vídeo, y el 32B requiere una configuración superior.
- Ver ejemplo: Proyectos
examples
La carpeta ofrece ejemplos de plantillas de avisos.
Con estos pasos, puede generar rápidamente SQL con OmniSQL o investigar técnicas de texto a SQL.
escenario de aplicación
- análisis de datos
Los analistas de datos introducen una pregunta, como "Encuentre los 10 artículos más vendidos", y OmniSQL genera el SQL correspondiente, ahorrando tiempo. - Estudios de modelización
Los investigadores entrenan un nuevo modelo con SynSQL-2.5M para mejorar la capacidad de conversión de texto en SQL. - Aprendizaje educativo
Los alumnos aprenden las operaciones de las bases de datos introduciendo preguntas y observando el SQL generado.
CONTROL DE CALIDAD
- ¿Qué bases de datos admite OmniSQL?
Actualmente sólo se admite SQLite, que puede ampliarse con datos sintéticos en el futuro. - ¿Qué tamaño tiene el conjunto de datos?
SynSQL-2.5M contiene 2,5 millones de muestras que abarcan 16.000 bases de datos. - ¿Qué solidez tienen los modelos?
OmniSQL supera a modelos como GPT-4o en pruebas de referencia como Spider y BIRD.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...