はじめに
OpenSearch-SQLはオープンソースプロジェクトであり、ユーザーの自然言語記述をSQLクエリ文に変換する強力なText-to-SQLツールである。このプロジェクトはOpenSearch-AIチームによって開発され、Apache 2.0ライセンスに基づいてフリーでオープンです。2024年8月、検証セットで69.3%、テストセットで72.28%の精度で、BIRDベンチマークで1位を獲得しました。OpenSearch-SQLは追加トレーニングなしで実行でき、GPTやDeepSeekなどのモデルをサポートしています。
機能一覧
- 自然言語による質問をSQLクエリに変換する。
SELECT ビル名 FROM ビル ORDER BY 高さ DESC LIMIT 1
. - クエリ生成精度を向上させるための自己学習をサポートするCoT(Chain of Thought)強化手法。
- SQLライクな中間言語を提供し、複雑なSQL生成を最適化する。
- モデル生成時のエラー(錯覚問題)を減らすための入出力アライメントを含む。
- 前処理、抽出、生成、最適化、アライメントの5つのモジュールをサポートし、クエリプロセス全体をカバーする。
- オープンソースで無料なので、ユーザーは必要に応じてコードを変更したり、自分のプロジェクトに組み込んだりすることができる。
ヘルプの使用
OpenSearch-SQLはコマンドラインツールで、動作させるにはインストールと設定が必要です。以下は、ゼロから始めるための詳細な手順です。
設置プロセス
- Python環境の準備
Python 3.8以上がコンピュータにインストールされていることを確認してください。これはpython --バージョン
確認してください。なければ、Pythonの公式サイト(https://www.python.org/)からダウンロードしてインストールしてください。 - プロジェクトファイルのダウンロード
ブラウザーを開き、https://github.com/OpenSearch-AI/OpenSearch-SQL。右上の "Code "ボタンをクリックし、"Download ZIP "を選択する。"をクリックし、"Download ZIP "を選択してソースコードをダウンロードするか、Gitコマンドを使ってクローンしてください:
git clone https://github.com/OpenSearch-AI/OpenSearch-SQL.git
ローカルにダウンロードして解凍する。 C:♪OpenSearch-SQL
もしかしたら /ホーム/ユーザー/OpenSearch-SQL
.
- 依存関係のインストール
プロジェクト・フォルダーに移動し、ターミナルを開いて以下のコマンドを実行し、必要なライブラリをインストールする:
pip install -r requirements.txt
これにより、データを処理したりモデルを呼び出したりするためのライブラリなど、プロジェクトの実行に必要なPythonパッケージがインストールされる。
データ前処理
OpenSearch-SQLでは、クエリの精度を向上させるために、数ショットの例を必要とします。データは提供されている公式スクリプトを使って生成することができます。
- データの準備
このプロジェクトでは、サンプルファイルbird_dev.json
所在地Bird/bird_dev.json
DAIL-SQLの方法論に基づいています。これはDAIL-SQLの方法論に基づいて生成され、数発のクエリー例を含んでいます。もしあなた自身のデータを持っているならば、このファイルを置き換えることができます。 - 前処理スクリプトの実行
プロジェクトのルート・ディレクトリで実行する:
sh run/run_preprocess.sh
このスクリプトは、数ショットのデータ、テーブル構造、その他の情報を処理する。処理が終わると、ターミナルに各ディレクトリの出力が表示される。Windowsユーザーなら、Git BashやWSLで実行したり、スクリプトのコマンドを手動で実行したりできます。
メインプログラムの実行
- トリガ手順
プロジェクトのルート・ディレクトリで実行する:
sh run/run_main.sh
これは src/runner/database_manager.py
ファイルでクエリー処理を開始する。プログラム・パスはスクリプトで設定する。
- 出力チェック
メイン・アプリケーションが実行されると、設定に従ってSQLクエリー結果が生成されます。出力ファイルのパスはsrc/runner/database_manager.py
な_set_paths
関数で定義されており、必要に応じて調整できる。
注目の機能操作
- 自然言語からSQLへ
"売上が最も高い都市はどこですか?" などの質問を入力します。プログラムがそれを生成する:
SELECT city FROM sales ORDER BY amount DESC LIMIT 1
詳しい情報は questions.json
ファイルに独自の質問を追加して実行し、結果を確認する。
- CoTの強化
このプロジェクトはQuery-CoT-SQL形式で例を提供しています。例えば - ユーザー入力:"平均年齢は?"
- CoTプロセス:まず年齢の列を見つけ、次に平均を計算する。
- 出力:
SELECT AVG(age) FROM users
. - アライメント機能
結果が正しく生成されない場合、プログラムは自動的に修正します。例えば、「すべての学生の成績を一覧表示する」と入力しても、データベースが複数のテーブルを持つ場合、JOIN操作が正しいことを確認します:
SELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id
ほら
- BIRDデータセットをテストする必要がある場合は、直接
Bird/fewshot/questions.json
ドキュメンテーション - このプログラムは複数のモデルをサポートしており、デフォルトの設定には API キーが必要な場合があります。GPTまたはDeepSeekを使用する場合は、コードでキーを設定する必要があります。
これらのステップを踏むことで、自然言語をSQLクエリに簡単に変換し、さまざまなデータ分析タスクを処理することができる。
アプリケーションシナリオ
- データ分析
データアナリストはこれを使用して、質問をSQLに変換し、販売データやユーザー行動を素早くカウントすることができる。 - 教育とトレーニング
学生は、質問を入力し、生成されたクエリ文を比較することで、SQLを学ぶために使用することができます。 - 自動化されたレポート
企業はこれを使用して、レポートSQLを自動的に生成し、手作業による記述時間を短縮することができます。
品質保証
- OpenSearch-SQLはインターネットに接続する必要がありますか?
ローカルモデルを使用する場合、ネットワークは必要ありません。ただし、GPTなどのオンラインモデルを使用する場合は、ネットワークとAPIキーが必要です。 - どのようなデータベースに対応していますか?
テーブル構造とデータが提供される限り、SQLをサポートするあらゆるデータベースを対象とする。 - BIRD リストの1位というのはどういう意味ですか?
テストセットでの2024年8月のスコアは72.28%で、Text-to-SQLタスクで最高の精度を持ち、複雑なクエリを処理できることを示している。