Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

OmniSQL: um modelo para transformar a linguagem natural em consultas SQL de alta qualidade

Introdução geral

O OmniSQL é um projeto de código aberto desenvolvido pela equipe do RUCKBReasoning e hospedado no GitHub. Sua função principal é transformar as perguntas de linguagem natural inseridas pelo usuário em instruções de consulta SQL de alta qualidade para ajudar os usuários a interagir facilmente com os bancos de dados. Com base em uma estrutura automatizada de geração de dados de texto para SQL, o projeto lançou o conjunto de dados SynSQL-2.5M com 2,5 milhões de amostras, que atualmente é o maior conjunto de dados de texto sintético para SQL entre domínios. O OmniSQL oferece três tamanhos de modelo, 7B, 14B e 32B, que são adequados para usuários com necessidades diferentes. O OmniSQL oferece três tamanhos de modelos, 7B, 14B e 32B, adequados para usuários com necessidades diferentes, além de oferecer suporte avançado para análise de dados, gerenciamento de banco de dados e pesquisa de modelos. O projeto usa o protocolo Apache 2.0 e os usuários podem fazer download e participar do aprimoramento gratuitamente.

OmniSQL: um modelo para transformar a linguagem natural em consultas SQL de alta qualidade-1


 

Lista de funções

  • Transforme a linguagem natural em SQL: o usuário insere uma pergunta e o modelo gera uma consulta SQL precisa.
  • Suporte a consultas complexas: gere SQL avançado, desde consultas simples de uma única tabela até uniões de várias tabelas.
  • Geração de conjunto de dados: é fornecido o SynSQL-2.5M, que contém 2,5 milhões de amostras de alta qualidade.
  • Modelo de várias escalas: fornece modelos com três escalas de parâmetros: 7B, 14B e 32B.
  • Código aberto e gratuito: o código e o conjunto de dados estão disponíveis gratuitamente no GitHub.

 

Usando a Ajuda

O OmniSQL é uma ferramenta baseada em código para usuários com algum conhecimento de programação. Abaixo está um guia detalhado de instalação e uso para ajudá-lo a começar rapidamente.

Processo de instalação

  1. Preparação do ambiente
    Certifique-se de que seu computador tenha o Python 3.8 ou posterior instalado. Abra a linha de comando e digite python --version Verifique. Se você não o tiver instalado, poderá baixá-lo no site do Python.
  2. Download do projeto
    entrevistas https://github.com/RUCKBReasoning/OmniSQLClique no botão "Code" (Código) e selecione "Download ZIP" (Baixar ZIP) para baixar o arquivo zip do projeto. Descompacte-o e obtenha a pasta do projeto. Ou você pode cloná-la com o comando Git:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
  1. Instalação de dependências
    Vá para o diretório do projeto e execute-o na linha de comando:
pip install -r requirements.txt

Isso instalará as bibliotecas Python necessárias para a execução. Se você precisar de inferência de modelo, também precisará instalar a biblioteca vLLM ou Transformers com o seguinte comando:

pip install vllm

talvez

pip install transformers torch
  1. Faça o download de modelos e conjuntos de dados
    O OmniSQL oferece três modelos e o conjunto de dados SynSQL-2.5M, que podem ser baixados nos links a seguir:
  1. Projetos em andamento
    Vá para o diretório do projeto e execute python omnisql.py Verifique se o ambiente está OK. O modelo precisa ser carregado para uso real, veja abaixo.

Funções principais

1. converter a linguagem natural em SQL

A funcionalidade principal do OmniSQL é traduzir perguntas em consultas SQL. Usando o vLLM como exemplo, execute o seguinte 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:

-- Sua 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)

O resultado pode ser:

SELECT name FROM users WHERE age > 30;

2. usando o conjunto de dados SynSQL-2.5M

O conjunto de dados contém 2,5 milhões de amostras, cada uma incluindo estrutura de banco de dados, perguntas, consultas SQL e processos de pensamento. Faça o download e use diretamente para treinamento ou pesquisa. Exibir amostras:

  • Descompacte o arquivo do conjunto de dados.
  • Abra qualquer arquivo JSON no formato {"db": ..., "question": ..., "sql": ..., "cot": ...}.

3. treinamento e avaliação

O projeto fornece roteiros de treinamento, localizados no train_and_evaluate pasta. Execute o exemplo:

python train.py --model OmniSQL-7B --data SynSQL-2.5M

Os scripts de avaliação também estão na mesma pasta para reproduzir os resultados oficiais.

Dicas e truques

  • Suporte a banco de dadosNo momento, apenas o SQLite é compatível; se outros bancos de dados forem necessários, a Estrutura de geração de dados poderá ser usada para sintetizar novos dados.
  • Requisitos de hardwareO modelo 7B requer cerca de 14 GB de memória de vídeo, e o 32B requer uma configuração mais alta.
  • Ver exemplo: Projetos examples A pasta fornece exemplos de modelos de prompt.

Com essas etapas, você pode gerar SQL rapidamente com o OmniSQL ou investigar técnicas de conversão de texto em SQL.

 

cenário do aplicativo

  1. análise de dados
    Os analistas de dados inserem uma pergunta, como "Encontre os 10 itens mais vendidos", e o OmniSQL gera o SQL correspondente, economizando tempo.
  2. Estudos de modelagem
    Os pesquisadores treinam um novo modelo com o SynSQL-2.5M para melhorar a capacidade de conversão de texto em SQL.
  3. Aprendizagem educacional
    Os alunos aprendem sobre operações de banco de dados inserindo perguntas e observando o SQL gerado.

 

QA

  1. Quais bancos de dados são compatíveis com o OmniSQL?
    Atualmente, somente o SQLite é compatível, que pode ser ampliado com dados sintéticos no futuro.
  2. Qual é o tamanho do conjunto de dados?
    O SynSQL-2.5M contém 2,5 milhões de amostras que abrangem 16.000 bancos de dados.
  3. Qual é a resistência dos modelos?
    O OmniSQL supera o desempenho de modelos como o GPT-4o em benchmarks como Spider e BIRD.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " OmniSQL: um modelo para transformar a linguagem natural em consultas SQL de alta qualidade
pt_BRPortuguês do Brasil