はじめに
OmniSQLはRUCKBReasoningチームによって開発されたオープンソースプロジェクトで、GitHubでホストされている。その中心的な機能は、ユーザが入力した自然言語の質問を高品質なSQLクエリ文に変換し、ユーザがデータベースを簡単に操作できるようにすることである。自動化されたテキストからSQLへのデータ生成フレームワークに基づいて、このプロジェクトは250万サンプルを含むSynSQL-2.5Mデータセットをリリースしました。 OmniSQLは3つのモデルサイズ、7B、14B、32Bを提供し、異なるニーズを持つユーザーに適しています。OmniSQLは、7B、14B、32Bの3つのモデルサイズを提供し、様々なニーズに対応します。 データ分析、データベース管理、モデル研究を強力にサポートします。このプロジェクトはApache 2.0プロトコルを使用しており、ユーザは無料でダウンロードして改良に参加することができます。
機能一覧
- 自然言語をSQLに変換:ユーザーが質問を入力すると、モデルが正確なSQLクエリを生成します。
- 複雑なクエリのサポート:単純な単一テーブルのクエリから複数テーブルの結合まで、高度なSQLを生成します。
- データセット生成:SynSQL-2.5Mが提供され、250万個の高品質サンプルが含まれる。
- マルチスケールモデル:7B、14B、32Bの3つのパラメータスケールを持つモデルを提供。
- オープンソースで無料:コードとデータセットは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ライブラリがインストールされる。モデル推論が必要な場合は ブイエルエルエム またはTransformersを以下のコマンドで実行する:
pip install vllm
もしかしたら
pip install transformers torch
- モデルとデータセットのダウンロード
OmniSQLは3つのモデルとSynSQL-2.5Mデータセットを提供しており、以下のリンクからダウンロードできる:
- ランニング・プロジェクト
プロジェクト・ディレクトリに移動し、以下を実行する。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に変換するテクニックを調べたりすることができる。
アプリケーションシナリオ
- データ分析
データアナリストが「売れ筋トップ10を探せ」といった質問を入力すると、OmniSQLが対応するSQLを生成し、時間を節約する。 - モデリング研究
研究者はSynSQL-2.5Mで新しいモデルを訓練し、テキストからSQLへの変換能力を向上させる。 - 教育的学習
学生は、質問を入力し、生成されたSQLを観察することで、データベース操作について学びます。
品質保証
- OmniSQLはどのデータベースをサポートしていますか?
現在はSQLiteのみをサポートしているが、将来的には合成データで拡張することができる。 - データセットの大きさは?
SynSQL-2.5M には、16,000 のデータベースをカバーする 250 万のサンプルが含まれています。 - モデルの強度は?
OmniSQLはSpiderやBIRDなどのベンチマークでGPT-4oなどのモデルを凌駕しています。