AI个人学习
和实操指南
讯飞绘镜

OmniSQL:将自然语言转化为高质量SQL查询的模型

综合介绍

OmniSQL 是一个开源项目,由 RUCKBReasoning 团队开发,托管在 GitHub 上。它的核心功能是将用户输入的自然语言问题转化为高质量的 SQL 查询语句,帮助用户轻松与数据库交互。项目基于一个自动化的文本转 SQL 数据生成框架,推出了包含 250 万条样本的 SynSQL-2.5M 数据集,这是目前最大的跨领域合成文本转 SQL 数据集。OmniSQL 提供 7B、14B、32B 三种模型规模,适合不同需求的用户。无论是数据分析、数据库管理,还是模型研究,它都能提供强大支持。项目使用 Apache 2.0 协议,用户可以免费下载并参与改进。

OmniSQL:将自然语言转化为高质量SQL查询的模型-1


 

功能列表

  • 将自然语言转为 SQL:用户输入问题,模型生成准确的 SQL 查询。
  • 支持复杂查询:生成从简单单表查询到多表连接的高级 SQL。
  • 数据集生成:提供 SynSQL-2.5M,包含 250 万条高质量样本。
  • 多规模模型:提供 7B、14B、32B 三种参数规模的模型。
  • 开源免费:代码和数据集可在 GitHub 上免费获取。

 

使用帮助

OmniSQL 是一个基于代码的工具,适合有一定编程基础的用户。以下是详细的安装和使用指南,帮助你快速上手。

安装流程

  1. 准备环境
    确保电脑已安装 Python 3.8 或更高版本。打开命令行,输入 python --version 检查。如果没有安装,可从 Python 官网下载。
  2. 下载项目
    访问 https://github.com/RUCKBReasoning/OmniSQL,点击 "Code" 按钮,选择 "Download ZIP" 下载项目压缩包。解压后得到项目文件夹。或者用 Git 命令克隆:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
  1. 安装依赖
    进入项目目录,在命令行运行:
pip install -r requirements.txt

这会安装运行所需的 Python 库。如果需要模型推理,还要安装 vLLM 或 Transformers,命令如下:

pip install vllm

pip install transformers torch
  1. 下载模型和数据集
    OmniSQL 提供三种模型和 SynSQL-2.5M 数据集,可从以下链接下载:
  1. 运行项目
    进入项目目录,运行 python omnisql.py 检查环境是否正常。实际使用时需加载模型,具体见下文。

主要功能操作

1. 将自然语言转为 SQL

OmniSQL 的核心功能是将问题转化为 SQL 查询。以 vLLM 为例,运行以下代码:

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:

-- Your SQL query

'''
# 加载模型
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)

输出可能是:

SELECT name FROM users WHERE age > 30;

2. 使用 SynSQL-2.5M 数据集

数据集包含 250 万条样本,每条包括数据库结构、问题、SQL 查询和思考过程。下载后,可直接用于训练或研究。查看样本:

  • 解压数据集文件。
  • 打开任意 JSON 文件,格式如 {"db": ..., "question": ..., "sql": ..., "cot": ...}

3. 训练和评估

项目提供训练脚本,位于 train_and_evaluate 文件夹。运行示例:

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

评估脚本也在同一文件夹,可复现官方结果。

使用技巧

  • 数据库支持:目前仅支持 SQLite。若需其他数据库,可用数据生成框架合成新数据。
  • 硬件要求:7B 模型需约 14GB 显存,32B 需更高配置。
  • 查看示例:项目 examples 文件夹提供提示模板示例。

通过这些步骤,你可以用 OmniSQL 快速生成 SQL 或研究文本转 SQL 技术。

 

应用场景

  1. 数据分析
    数据分析师输入问题,如“查找销售额前十的商品”,OmniSQL 生成对应 SQL,节省时间。
  2. 模型研究
    研究者用 SynSQL-2.5M 训练新模型,提升文本转 SQL 能力。
  3. 教育学习
    学生通过输入问题观察生成的 SQL,学习数据库操作。

 

QA

  1. OmniSQL 支持哪些数据库?
    当前仅支持 SQLite,未来可通过合成数据扩展。
  2. 数据集有多大?
    SynSQL-2.5M 包含 250 万条样本,覆盖 1.6 万个数据库。
  3. 模型有多强?
    在 Spider、BIRD 等基准测试中,OmniSQL 超越了 GPT-4o 等模型。
未经允许不得转载:首席AI分享圈 » OmniSQL:将自然语言转化为高质量SQL查询的模型
zh_CN简体中文