?紙 ?リーダーボード
ここでは、開発データセットの Lite バージョンであるMini-Devを提供します。このミニ開発データセットは、特に SQL クエリ生成モデルのテストと改良において、効率的でコスト効率の高い開発サイクルを促進するように設計されています。このデータセットはコミュニティからのフィードバックから生まれ、開発環境の 11 の異なるデータベースから派生した 500 の高品質の text2sql ペアのコンパイルにつながりました。業界環境における BIRD システムの実用性をさらに強化し、text-to-SQL モデルの開発をサポートするために、 MySQLとPostgreSQL の両方で Mini-Dev データセットを利用できるようにしました。
さらに、Mini-Dev データセットに 2 つの新しい評価指標、報酬ベースの有効効率スコア (R-VES)とソフト F1 スコアを導入しました。これらのメトリクスは、それぞれ text-to-SQL モデルの効率と精度を評価することを目的としています。現在ベータ版にある両方のメトリクスは、ベースライン モデルを使用する Mini-Dev データセットにのみ適用されることに注意することが重要です。
これらの指標を強化するための、特に既存のリーダーボードへの統合に関する貢献や提案を歓迎します。これらの開発にご興味がございましたら、または改善のご提案がございましたら、お気軽にお問い合わせください。
以下は、ミニ開発データセットの主要な統計の一部です。
データセットには、次の主なリソースが含まれています。
database
: データベースは./mini_dev_data/dev_databases/
に保存する必要があります。各データベース フォルダーには、次の 2 つのコンポーネントがあります。database_description
: csv ファイルは、探索または参照するモデルのデータベース スキーマとその値を記述するために作成されます。sqlite
: BIRD のデータベースの内容。 注記
MySQL および PostgreSQL でデータベースを構築するには、最新の開発データベースをダウンロードする必要があります。 SQLite バージョンのみを使用する場合は、元の開発データベースを使用できます。
data
: Oracle ナレッジ証拠を含む各テキストと SQL のペアは、json ファイルとして保存されます。つまり、 mini_dev_sqlite.json
は./mini_dev_data/mini_dev_sqlite.json
に保存されます。各 json ファイルには、次の 3 つの主要な部分があります。db_id
: データベースの名前question
: データベースの説明、データベースの内容に従って人間のクラウドソーシングによってキュレーションされた質問。evidence
: モデルまたは SQL アノテーターの支援のために専門家によって注釈が付けられた外部知識証拠。SQL
: 質問に正確に答えるために、データベースの説明、データベースの内容を参照するクラウドソースによって注釈が付けられた SQL。ground-truth SQL file
: SQL ファイルは./llm/mini_dev_data/mini_dev_sqlite_gold.sql
に保存する必要があります。llm
: GPT35-turbo-instruct
、 gpt-35-turbo
、 gpt-4
、 gpt-4-32k
、 gpt-4-turbo
などの LLM から API を呼び出してテキストを SQL に変換するソース コードが含まれています。 SQL クエリは、 mini_dev_mysql.json
およびmini_dev_postgresql.json
ファイル内で見つけることができます。これらのクエリは、sqlglot パッケージを使用して元の SQLite バージョンからトランスパイルされ、手動および GPT-4 Turbo を使用して洗練されました。 Mini-Dev データセットをダウンロードすると、各データベース フォルダーに .sql ファイルと command.script ファイルが含まれます。 MySQL および PostgreSQL でデータベースをセットアップするには、以下の手順に従ってください。
export PATH=$PATH:/usr/local/mysql/bin
sudo /usr/local/mysql/support-files/mysql.server start
mysql -u root -p
CREATE DATABASE BIRD ;
MINIDEV_mysql
フォルダーに MySQL バージョン データベースBIRD_dev.sql
があります)。 mysql -u root -p BIRD < BIRD_dev.sql
Python (pymysql を使用) で mysql クエリを実行する方法の例はexamples/mysql_example.ipynb
ファイルにあります。
「これは sql_mode=only_full_group_by と互換性がありません」というエラーが発生した場合は、次のコマンドを実行して sql_mode を無効にすることができます。
select @@ global . sql_mode ;
SET GLOBAL sql_mode = ' {EVERYTHING SHOW IN THE ABOVE COMMAND EXCEPT ONLY_FULL_GROUP_BY} ' ;
BIRD
という新しいデータベースを作成します。BIRD_dev.sql
はMINIDEV_postgresql
フォルダーにあります)。 psql -U USERNAME -d BIRD -f BIRD_dev.sql
examples/postgresql_example.ipynb
ファイルにあります。 まず、次の方法で Python 環境に openai をインストールする必要があります。
conda create -n BIRD python=3.11.5
pip install requirements.txt
このスクリプトを使用して、Azure クラウド上で OpenAI モデルを実行します。 (好みに応じてパラメータとパスを調整する必要がある場合があります):
cd ./llm/
sh ./run/run_gpt.sh
収集した結果を次の形式で後処理してください: SQL とそのdb_id
。これは't----- bird -----t'
で分割されます。例は./llm/exp_result/turbo_output/predict_mini_dev_gpt-4-turbo_cot_SQLite.json
に示されています。グラウンドトゥルース SQL ファイルを./data/
に置きます。また、ChatGPT タグを独自に設計する必要がある場合もあります。 ex 評価のメイン ファイルは./llm/src/evaluation_ex.py
にあります。
次に、次のコマンド ラインで結果を評価できます。
cd ./llm/
sh ./run/run_evaluation.sh
R-VES 評価のメイン ファイルは./llm/src/evaluation_ves.py
にあります。 R-VES と EX は同じシェルで評価できるため、次の方法で効率を評価できます。
cd ./llm/
sh ./run/run_evaluation.sh
(R-VES を安定させるには、 timeout
を拡大するか、結果を繰り返して平均する必要がある場合があります。テスト評価では、 timeout
3 秒/ex に拡大します。その後、VES の計算を 5 回繰り返し、最も高い結果のみが報告されます。 。)
最新バージョンでは、VES 評価がより安定して信頼できるように調整されています。予測 SQL とグラウンドトゥルース SQL の間の時間比率を単に測定するのではなく、時間比率に基づいて報酬ポイントを割り当てるようになりました。 R-VES は次のように計算されます。
ソフト F1 スコア評価のメイン ファイルは./llm/src/evaluation_f1.py
にあります。 Soft-F1、VES、および EX は同じシェルで評価できるため、次の方法で効率を評価できます。
cd ./llm/
sh ./run/run_evaluation.sh
Mini-Dev セットの更新に加えて、新しい評価指標であるソフト F1 スコアを導入しました。このメトリクスは、予測された SQL クエリによって生成されたテーブルとグランド トゥルースからのテーブルの間の類似性を測定することによって、text-to-SQL モデルのパフォーマンスを評価するために特別に設計されています。一言で言えば、ソフト F1 スコアは、予測された SQL クエリによって生成されるテーブル内の列の順序と欠損値の影響を軽減する、より寛大なメトリックです。
以下は、ソフト F1 スコアを計算する方法を示しています。
グラウンド トゥルース SQL 結果テーブル:
行 | ||
---|---|---|
1 | 'りんご' | 325 |
2 | 'オレンジ' | |
3 | 'バナナ' | 119 |
予測された SQL 結果テーブル:
行 | ||
---|---|---|
1 | 325 | 'りんご' |
2 | 191 | 'オレンジ' |
3 | 'バナナ' |
ソフト F1 スコアは次のように計算されます。
一致しました | プレドのみ | ゴールドのみ | |
---|---|---|---|
行1 | 2 | 0 | 0 |
行 2 | 1 | 1 | 0 |
3行目 | 1 | 0 | 1 |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
ミックストラル-8x7b | 21.60 | 13.60 | 12.40 |
ラマ3-8b-命令 | 24.40 | 24.60 | 18.40 |
phi-3-medium-128k-instruct | 30.60 | 25.00 | 21.60 |
gpt-35-ターボ指示 | 33.60 | 31.20 | 26.60 |
gpt-35-ターボ | 38.00 | 36.00 | 27.40 |
ラマ3-70b-指示 | 40.80 | 37.00 | 29.40 |
TA + gpt-35-ターボ | 41.60 | - | - |
TA + ラマ3-70b-命令 | 42.80 | - | - |
gpt-4-ターボ | 45.80 | 41.00 | 36.00 |
gpt-4-32k | 47.00 | 43.20 | 35.00 |
gpt-4 | 47.80 | 40.80 | 35.80 |
TA + gpt-4-ターボ | 58.00 | - | - |
TA + gpt-4o | 63.00 | - | - |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
ミックストラル-8x7b | 20.41 | 12.99 | 14.16 |
ラマ3-8b-命令 | 23.27 | 23.66 | 17.90 |
phi-3-medium-128k-instruct | 29.54 | 12月24日 | 7月21日 |
gpt-35-ターボ指示 | 32.28 | 30.39 | 26.14 |
gpt-35-ターボ | 37.33 | 34.94 | 26.80 |
ラマ3-70b-指示 | 39.02 | 35.82 | 28.80 |
TA + gpt-35-ターボ | 40.59 | - | - |
TA + ラマ3-70b-命令 | 41.37 | - | - |
gpt-4-ターボ | 44.79 | 39.37 | 35.23 |
gpt-4-32k | 45.29 | 42.79 | 34.59 |
gpt-4 | 45.91 | 39.92 | 35.24 |
TA + gpt-4-ターボ | 56.44 | - | - |
TA + gpt-4o | 60.86 | - | - |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
ミックストラル-8x7b | 22.95 | 13.79 | 14.70 |
ラマ3-8b-命令 | 27.87 | 27.49 | 19.35 |
phi-3-medium-128k-instruct | 35.33 | 28.73 | 11月24日 |
gpt-35-ターボ指示 | 36.34 | 33.85 | 28.30 |
gpt-35-ターボ | 41.84 | 40.75 | 30.22 |
TA + gpt-35-ターボ | 44.25 | - | - |
ラマ3-70b-命令 | 44.38 | 40.95 | 31.43 |
TA + ラマ3-70b-命令 | 46.66 | - | - |
gpt-4-ターボ | 50.08 | 45.96 | 38.36 |
gpt-4-32k | 51.92 | 47.38 | 39.55 |
gpt-4 | 52.69 | 45.78 | 38.96 |
TA + gpt-4-ターボ | 62.40 | - | - |
TA + gpt-4o | 66.97 | - | - |
参照用に、ベースライン モデルの予測 SQL を./llm/exp_result/sql_output_kg/
にドロップします。
Mini-Dev プロジェクトの主な貢献者: Xiaolong Li、Jinyang Li、Ge Qu、Binyuan Hui、Reynold Cheng、Chenhao Ma。
私たちは、github レビュアー (@freiz @nnarodytska @josem7 @wbbeyourself @ronch99 @tshu-w ) や貴重な提案を電子メールで連絡してくださった方々を含む、オープン コミュニティからの貴重なフィードバックに心から感謝いたします。
ご質問がございましたら、[email protected] までお問い合わせください。
TA-SQL
ICL 推論ベースラインとして実装します。 私たちの取り組みが役立つと思われる場合は、リポジトリを引用してください。
@article{li2024can,
title={Can llm already serve as a database interface? a big bench for large-scale database grounded text-to-sqls},
author={Li, Jinyang and Hui, Binyuan and Qu, Ge and Yang, Jiaxi and Li, Binhua and Li, Bowen and Wang, Bailin and Qin, Bowen and Geng, Ruiying and Huo, Nan and others},
journal={Advances in Neural Information Processing Systems},
volume={36},
year={2024}
}