?종이 ?리더보드
여기서는 개발 데이터 세트의 Lite 버전인 Mini-Dev를 제공합니다. 이 미니 개발 데이터 세트는 특히 SQL 쿼리 생성 모델을 테스트하고 개선하기 위해 효율적이고 비용 효율적인 개발 주기를 촉진하도록 설계되었습니다. 이 데이터세트는 커뮤니티 피드백을 바탕으로 개발 환경의 11개 개별 데이터베이스에서 파생된 500개의 고품질 text2sql 쌍을 컴파일한 결과입니다. 업계 환경에서 BIRD 시스템의 실용성을 더욱 강화하고 텍스트-SQL 모델 개발을 지원하기 위해 Mini-Dev 데이터 세트를 MySQL 과 PostgreSQL 모두에서 사용할 수 있도록 합니다.
또한 Mini-Dev 데이터 세트에 대한 두 가지 새로운 평가 지표인 보상 기반 유효 효율성 점수(R-VES) 와 소프트 F1-점수를 도입합니다. 이러한 지표는 각각 텍스트-SQL 모델의 효율성과 정확성을 평가하는 것을 목표로 합니다. 현재 베타 버전인 두 지표는 기본 모델을 사용하는 Mini-Dev 데이터 세트에만 적용된다는 점에 유의하는 것이 중요합니다.
특히 기존 순위표와의 통합과 관련하여 이러한 지표를 향상시키기 위한 기여와 제안을 환영합니다. 이러한 개발에 관심이 있거나 개선을 위한 제안이 있으면 주저하지 말고 저희에게 연락해 주십시오.
다음은 미니 개발 데이터 세트의 몇 가지 주요 통계입니다.
데이터세트에는 다음과 같은 주요 리소스가 포함되어 있습니다.
database
: 데이터베이스는 ./mini_dev_data/dev_databases/
아래에 저장되어야 합니다. 각 데이터베이스 폴더에는 다음 두 가지 구성 요소가 있습니다.database_description
: csv 파일은 탐색하거나 참조할 모델에 대한 데이터베이스 스키마와 해당 값을 설명하기 위해 제작됩니다.sqlite
: BIRD의 데이터베이스 내용입니다. 메모
MySQL과 PostgreSQL에서 데이터베이스를 구축하려면 최신 개발 데이터베이스를 다운로드해야 합니다. SQLite 버전만 사용하는 경우 원본 개발 데이터베이스를 사용할 수 있습니다.
data
: Oracle 지식 증거가 포함된 각 텍스트-SQL 쌍은 json 파일로 저장됩니다. 즉, mini_dev_sqlite.json
./mini_dev_data/mini_dev_sqlite.json
에 저장됩니다. 각 json 파일에는 세 가지 주요 부분이 있습니다.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로 변환하는 소스 코드가 포함되어 있습니다. mini_dev_mysql.json
및 mini_dev_postgresql.json
파일 내에서 SQL 쿼리를 찾을 수 있습니다. 이러한 쿼리는 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
라는 새 데이터베이스를 만듭니다.MINIDEV_postgresql
폴더에서 PostgreSQL 버전 데이터베이스: BIRD_dev.sql
을 찾을 수 있음). 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
수집된 결과를 't----- bird -----t'
로 분할된 SQL 및 해당 db_id
형식으로 사후 처리하세요. 예제는 ./llm/exp_result/turbo_output/predict_mini_dev_gpt-4-turbo_cot_SQLite.json
에 나와 있습니다. Ground-Truth 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
3s/ex로 확대한 다음 VES 계산을 위해 5회 반복하고 가장 높은 결과만 보고됩니다. .)
최신 버전에서는 VES 평가를 더욱 안정적이고 신뢰할 수 있도록 조정했습니다. 단순히 예측 SQL과 실제 SQL 간의 시간 비율을 측정하는 대신 이제 시간 비율에 따라 보상 포인트를 할당합니다. R-VES는 다음과 같이 계산됩니다.
Soft F1-Score 평가를 위한 기본 파일은 ./llm/src/evaluation_f1.py
에 있습니다. Soft-F1, VES 및 EX는 동일한 셸에서 평가할 수 있으므로 다음을 통해 효율성을 평가할 수 있습니다.
cd ./llm/
sh ./run/run_evaluation.sh
Mini-Dev 세트 업데이트와 함께 소프트 F1 점수라는 새로운 평가 지표를 도입했습니다. 이 메트릭은 예측된 SQL 쿼리에 의해 생성된 테이블과 실제 테이블 간의 유사성을 측정하여 텍스트-SQL 모델의 성능을 평가하도록 특별히 설계되었습니다. 간단히 말해서, 소프트 F1 점수는 예측된 SQL 쿼리에 의해 생성된 테이블의 열 순서 및 누락된 값의 영향을 줄이는 보다 관대한 메트릭입니다.
다음은 소프트 F1 점수를 계산하는 방법을 보여줍니다.
Ground Truth SQL 결과 테이블:
열 | ||
---|---|---|
1 | '사과' | 325 |
2 | '주황색' | |
3 | '바나나' | 119 |
예측된 SQL 결과 테이블:
열 | ||
---|---|---|
1 | 325 | '사과' |
2 | 191 | '주황색' |
3 | '바나나' |
소프트 F1 점수는 다음과 같이 계산됩니다.
일치함 | Pred_only | Gold_only | |
---|---|---|---|
행 1 | 2 | 0 | 0 |
행 2 | 1 | 1 | 0 |
행 3 | 1 | 0 | 1 |
SQLite | MySQL | 포스트그레SQL | |
---|---|---|---|
믹스트럴-8x7b | 21.60 | 13.60 | 12.40 |
llama3-8b-지시 | 24.40 | 24.60 | 18.40 |
phi-3-medium-128k-지시 | 30.60 | 25.00 | 21.60 |
gpt-35-터보 지시 | 33.60 | 31.20 | 26.60 |
gpt-35-터보 | 38.00 | 36.00 | 27.40 |
llama3-70b-지시 | 40.80 | 37.00 | 29.40 |
TA + gpt-35-터보 | 41.60 | - | - |
TA + llama3-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 | 포스트그레SQL | |
---|---|---|---|
믹스트럴-8x7b | 20.41 | 12.99 | 14.16 |
llama3-8b-지시 | 23.27 | 23.66 | 17.90 |
phi-3-medium-128k-지시 | 29.54 | 12.24 | 21.07 |
gpt-35-터보 지시 | 32.28 | 30.39 | 14.26 |
gpt-35-터보 | 37.33 | 34.94 | 26.80 |
llama3-70b-지시 | 39.02 | 35.82 | 28.80 |
TA + gpt-35-터보 | 40.59 | - | - |
TA + llama3-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 | 포스트그레SQL | |
---|---|---|---|
믹스트럴-8x7b | 22.95 | 13.79 | 14.70 |
llama3-8b-지시 | 27.87 | 27.49 | 19.35 |
phi-3-medium-128k-지시 | 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 | - | - |
llama3-70b-지시 | 44.38 | 40.95 | 31.43 |
TA + llama3-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
구현합니다. 우리 작업이 도움이 된다고 생각하시면 저장소를 인용해 주세요.
@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}
}