AIパーソナル・ラーニング
と実践的なガイダンス
ビーンバッグ・マースコード1

OmniSQL: 自然言語を高品質なSQLクエリに変換するモデル

はじめに

OmniSQLはRUCKBReasoningチームによって開発されたオープンソースプロジェクトで、GitHubでホストされている。その中心的な機能は、ユーザが入力した自然言語の質問を高品質なSQLクエリ文に変換し、ユーザがデータベースを簡単に操作できるようにすることである。自動化されたテキストからSQLへのデータ生成フレームワークに基づいて、このプロジェクトは250万サンプルを含むSynSQL-2.5Mデータセットをリリースしました。 OmniSQLは3つのモデルサイズ、7B、14B、32Bを提供し、異なるニーズを持つユーザーに適しています。OmniSQLは、7B、14B、32Bの3つのモデルサイズを提供し、様々なニーズに対応します。 データ分析、データベース管理、モデル研究を強力にサポートします。このプロジェクトはApache 2.0プロトコルを使用しており、ユーザは無料でダウンロードして改良に参加することができます。

OmniSQL: 自然言語を高品質なSQLクエリに変換するモデル-1


 

機能一覧

  • 自然言語をSQLに変換:ユーザーが質問を入力すると、モデルが正確なSQLクエリを生成します。
  • 複雑なクエリのサポート:単純な単一テーブルのクエリから複数テーブルの結合まで、高度なSQLを生成します。
  • データセット生成:SynSQL-2.5Mが提供され、250万個の高品質サンプルが含まれる。
  • マルチスケールモデル:7B、14B、32Bの3つのパラメータスケールを持つモデルを提供。
  • オープンソースで無料:コードとデータセットはGitHubで自由に利用できる。

 

ヘルプの使用

OmniSQLは、プログラミングの知識があるユーザー向けのコードベースのツールです。以下は、すぐに使い始められるように、インストールと使用方法の詳細なガイドです。

設置プロセス

  1. 環境を整える
    コンピュータにPython 3.8以降がインストールされていることを確認する。コマンドラインを開き python --version 確認してください。インストールされていない場合は、Pythonのウェブサイトからダウンロードできます。
  2. ダウンロード・プロジェクト
    インタビュー https://github.com/RUCKBReasoning/OmniSQLCode "ボタンをクリックし、"Download ZIP "を選択してプロジェクトのZIPファイルをダウンロードします。解凍してプロジェクト・フォルダーを入手してください。または、Gitコマンドでクローンすることもできます:
git clone https://github.com/RUCKBReasoning/OmniSQL.git
  1. 依存関係のインストール
    プロジェクトのディレクトリに移動し、コマンドラインから実行する:
pip install -r requirements.txt

これで実行に必要なPythonライブラリがインストールされる。モデル推論が必要な場合は ブイエルエルエム またはTransformersを以下のコマンドで実行する:

pip install vllm

もしかしたら

pip install transformers torch
  1. モデルとデータセットのダウンロード
    OmniSQLは3つのモデルとSynSQL-2.5Mデータセットを提供しており、以下のリンクからダウンロードできる:
  • SynSQL-2.5M. ハグ顔
  • OmniSQL-7B. ハグ顔
  • OmniSQL-14B. ハグ顔
  • OmniSQL-32B。 ハグ顔
    ダウンロード後、ファイルをプロジェクト・ディレクトリに置きます。
  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データセットの使用

このデータセットには250万個のサンプルが含まれており、それぞれデータベース構造、質問、SQLクエリ、思考プロセスを含んでいます。トレーニングや研究に直接ダウンロードしてご利用ください。サンプルを見る

  • データセットファイルを解凍する。
  • 任意の形式のJSONファイルを開く {"db": ..., "question": ..., "sql": ..., "cot": ...}.

3.トレーニングと評価

このプロジェクトでは、以下のようなトレーニングスクリプトを提供している。 train_and_evaluate フォルダに保存されます。サンプルを実行する:

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

公式結果を再現するための評価スクリプトも同じフォルダにある。

ヒントとコツ

  • データベースのサポート他のデータベースが必要な場合は、データ生成フレームワークを使用して新しいデータを合成することができます。
  • ハードウェア要件7Bモデルは約14GBのビデオメモリを必要とし、32Bはそれ以上の構成が必要となる。
  • 例を見るプロジェクト examples このフォルダには、プロンプト・テンプレートの例が用意されている。

これらのステップを踏めば、OmniSQLを使ってSQLを素早く生成したり、テキストからSQLに変換するテクニックを調べたりすることができる。

 

アプリケーションシナリオ

  1. データ分析
    データアナリストが「売れ筋トップ10を探せ」といった質問を入力すると、OmniSQLが対応するSQLを生成し、時間を節約する。
  2. モデリング研究
    研究者はSynSQL-2.5Mで新しいモデルを訓練し、テキストからSQLへの変換能力を向上させる。
  3. 教育的学習
    学生は、質問を入力し、生成されたSQLを観察することで、データベース操作について学びます。

 

品質保証

  1. OmniSQLはどのデータベースをサポートしていますか?
    現在はSQLiteのみをサポートしているが、将来的には合成データで拡張することができる。
  2. データセットの大きさは?
    SynSQL-2.5M には、16,000 のデータベースをカバーする 250 万のサンプルが含まれています。
  3. モデルの強度は?
    OmniSQLはSpiderやBIRDなどのベンチマークでGPT-4oなどのモデルを凌駕しています。
無断転載を禁じます:チーフAIシェアリングサークル " OmniSQL: 自然言語を高品質なSQLクエリに変換するモデル
ja日本語