OmniSQL: модель для преобразования естественного языка в высококачественные SQL-запросы
Общее введение
OmniSQL - это проект с открытым исходным кодом, разработанный командой RUCKBReasoning и размещенный на GitHub. Его основная функция - преобразование вопросов, задаваемых пользователем на естественном языке, в высококачественные SQL-запросы, чтобы помочь пользователям легко взаимодействовать с базами данных. На основе автоматизированного механизма генерации данных из текста в SQL проект выпустил набор данных SynSQL-2.5M, содержащий 2,5 миллиона образцов, который на данный момент является крупнейшим междоменным синтетическим набором данных из текста в SQL. OmniSQL предоставляет три размера моделей, 7B, 14B и 32B, которые подходят для пользователей с различными потребностями. OmniSQL предоставляет три размера моделей, 7B, 14B и 32B, которые подходят для пользователей с различными потребностями. Он обеспечивает мощную поддержку для анализа данных, управления базами данных и исследования моделей. Проект использует протокол Apache 2.0, пользователи могут скачивать и участвовать в улучшении бесплатно.

Список функций
- Превращение естественного языка в SQL: пользователь вводит вопрос, а модель генерирует точный SQL-запрос.
- Поддержка сложных запросов: генерируйте расширенный SQL от простых запросов к одной таблице до объединений нескольких таблиц.
- Формирование набора данных: предоставляется SynSQL-2.5M, содержащий 2,5 миллиона высококачественных образцов.
- Многомасштабная модель: предоставляет модели с тремя шкалами параметров: 7B, 14B и 32B.
- Открытый и бесплатный исходный код: код и набор данных находятся в свободном доступе на GitHub.
Использование помощи
OmniSQL - это инструмент, основанный на коде, для пользователей, обладающих некоторыми знаниями в области программирования. Ниже приведено подробное руководство по установке и использованию, которое поможет вам быстро начать работу.
Процесс установки
- Подготовка среды
Убедитесь, что на вашем компьютере установлен Python 3.8 или более поздней версии. Откройте командную строку и введитеpython --version
Проверьте. Если он у вас не установлен, вы можете загрузить его с сайта Python. - Скачать проект
интервьюhttps://github.com/RUCKBReasoning/OmniSQL
Нажмите кнопку "Code" и выберите "Download ZIP", чтобы загрузить zip-файл проекта. Распакуйте его и получите папку с проектом. Или вы можете клонировать ее с помощью команды Git:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
- Установка зависимостей
Перейдите в каталог проекта и запустите его из командной строки:
pip install -r requirements.txt
Это позволит установить библиотеки Python, необходимые для работы. Если вам нужен вывод модели, вам также потребуется установить vLLM или трансформеров с помощью следующей команды:
pip install vllm
возможно
pip install transformers torch
- Скачать модели и наборы данных
OmniSQL предлагает три модели и набор данных SynSQL-2.5M, которые можно загрузить по следующим ссылкам:
- SynSQL-2.5M. HuggingFace
- OmniSQL-7B. HuggingFace
- OmniSQL-14B. HuggingFace
- OmniSQL-32B. HuggingFace
После загрузки поместите файл в каталог проекта.
- Текущие проекты
Перейдите в каталог проекта и выполните команду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:
-- Ваш 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)
Выход может быть следующим:
SELECT name FROM users WHERE age > 30;
2. Использование набора данных SynSQL-2.5M
Набор данных содержит 2,5 миллиона примеров, каждый из которых включает структуру базы данных, вопросы, SQL-запросы и мыслительные процессы. Загружайте и используйте непосредственно для обучения или исследований. Посмотреть образцы:
- Распакуйте файл набора данных.
- Откройте любой файл JSON в формате
{"db": ..., "question": ..., "sql": ..., "cot": ...}
.
3. Обучение и оценка
Проект предоставляет обучающие сценарии, расположенные в train_and_evaluate
папка. Запустите пример:
python train.py --model OmniSQL-7B --data SynSQL-2.5M
В той же папке находятся сценарии оценки, позволяющие воспроизвести официальные результаты.
Советы и рекомендации
- Поддержка баз данных: В настоящее время поддерживается только SQLite; если требуются другие базы данных, можно использовать Data Generation Framework для синтеза новых данных.
- требования к оборудованиюДля модели 7B требуется около 14 ГБ видеопамяти, а для 32B - более высокая конфигурация.
- Посмотреть пример: Проекты
examples
В папке содержатся примеры шаблонов подсказок.
Выполнив эти шаги, вы сможете быстро сгенерировать SQL с помощью OmniSQL или изучить методы преобразования текста в SQL.
сценарий применения
- анализ данных
Аналитики данных вводят вопрос, например "Найти 10 самых продаваемых товаров", и OmniSQL генерирует соответствующий SQL, экономя время. - Моделирование исследований
Исследователи обучают новую модель с помощью SynSQL-2.5M, чтобы улучшить возможности преобразования текста в SQL. - Образовательное обучение
Студенты изучают операции с базами данных, вводя вопросы и наблюдая за сгенерированным SQL.
QA
- Какие базы данных поддерживает OmniSQL?
В настоящее время поддерживается только SQLite, но в будущем может быть расширен синтетическими данными. - Насколько велик набор данных?
SynSQL-2.5M содержит 2,5 миллиона образцов, охватывающих 16 000 баз данных. - Насколько прочны модели?
OmniSQL превосходит такие модели, как GPT-4o, в таких бенчмарках, как Spider и BIRD.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...