OmniSQL: модель для преобразования естественного языка в высококачественные SQL-запросы

Общее введение

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

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

 

Список функций

  • Превращение естественного языка в SQL: пользователь вводит вопрос, а модель генерирует точный SQL-запрос.
  • Поддержка сложных запросов: генерируйте расширенный SQL от простых запросов к одной таблице до объединений нескольких таблиц.
  • Формирование набора данных: предоставляется SynSQL-2.5M, содержащий 2,5 миллиона высококачественных образцов.
  • Многомасштабная модель: предоставляет модели с тремя шкалами параметров: 7B, 14B и 32B.
  • Открытый и бесплатный исходный код: код и набор данных находятся в свободном доступе на GitHub.

 

Использование помощи

OmniSQL - это инструмент, основанный на коде, для пользователей, обладающих некоторыми знаниями в области программирования. Ниже приведено подробное руководство по установке и использованию, которое поможет вам быстро начать работу.

Процесс установки

  1. Подготовка среды
    Убедитесь, что на вашем компьютере установлен Python 3.8 или более поздней версии. Откройте командную строку и введите python --version Проверьте. Если он у вас не установлен, вы можете загрузить его с сайта Python.
  2. Скачать проект
    интервью https://github.com/RUCKBReasoning/OmniSQLНажмите кнопку "Code" и выберите "Download ZIP", чтобы загрузить zip-файл проекта. Распакуйте его и получите папку с проектом. Или вы можете клонировать ее с помощью команды Git:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
  1. Установка зависимостей
    Перейдите в каталог проекта и запустите его из командной строки:
pip install -r requirements.txt

Это позволит установить библиотеки Python, необходимые для работы. Если вам нужен вывод модели, вам также потребуется установить vLLM или трансформеров с помощью следующей команды:

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:

-- Ваш 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.

 

сценарий применения

  1. анализ данных
    Аналитики данных вводят вопрос, например "Найти 10 самых продаваемых товаров", и OmniSQL генерирует соответствующий SQL, экономя время.
  2. Моделирование исследований
    Исследователи обучают новую модель с помощью SynSQL-2.5M, чтобы улучшить возможности преобразования текста в SQL.
  3. Образовательное обучение
    Студенты изучают операции с базами данных, вводя вопросы и наблюдая за сгенерированным SQL.

 

QA

  1. Какие базы данных поддерживает OmniSQL?
    В настоящее время поддерживается только SQLite, но в будущем может быть расширен синтетическими данными.
  2. Насколько велик набор данных?
    SynSQL-2.5M содержит 2,5 миллиона образцов, охватывающих 16 000 баз данных.
  3. Насколько прочны модели?
    OmniSQL превосходит такие модели, как GPT-4o, в таких бенчмарках, как Spider и BIRD.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...