?Бумага ?Таблица лидеров
Здесь мы предоставляем облегченную версию набора данных для разработки: Mini-Dev . Этот мини-набор данных предназначен для облегчения эффективных и экономичных циклов разработки, особенно для тестирования и уточнения моделей генерации SQL-запросов. Этот набор данных является результатом отзывов сообщества, что привело к компиляции 500 высококачественных пар text2sql, полученных из 11 различных баз данных в среде разработки. Чтобы еще больше повысить практичность системы 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
: каждая пара text-to-SQL с доказательствами знаний Oracle хранится в виде файла 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
: содержит исходные коды для преобразования текстов в SQL путем вызова API из LLM, таких как GPT35-turbo-instruct
, gpt-35-turbo
, gpt-4
, gpt-4-32k
и gpt-4-turbo
. Вы можете найти SQL-запросы в файлах mini_dev_mysql.json
и mini_dev_postgresql.json
. Эти запросы были перенесены из исходных версий SQLite с помощью пакета sqlglot, а затем уточнены вручную и с помощью 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 ;
BIRD_dev.sql
в папке MINIDEV_mysql
): mysql -u root -p BIRD < BIRD_dev.sql
Примеры запуска запроса MySQL в Python (с pymysql) можно найти в файле 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
. Во-первых, вам нужно установить openai в среду Python:
conda create -n BIRD python=3.11.5
pip install requirements.txt
Используйте этот скрипт для запуска модели OpenAI в облаке Azure. (возможно, вам придется настроить параметры и пути по своему усмотрению):
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 с/экс; затем мы повторим 5 раз для расчета VES, будут сообщены только самые высокие результаты. .)
В последней версии мы настроили оценку VES, чтобы сделать ее более стабильной и надежной. Вместо того, чтобы просто измерять соотношение времени между прогнозирующими и достоверными 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.
Основная таблица результатов SQL:
Ряд | ||
---|---|---|
1 | 'Яблоко' | 325 |
2 | 'Апельсин' | |
3 | 'Банан' | 119 |
Прогнозируемая таблица результатов SQL:
Ряд | ||
---|---|---|
1 | 325 | 'Яблоко' |
2 | 191 | 'Апельсин' |
3 | 'Банан' |
Мягкий показатель F1 рассчитывается следующим образом:
Соответствует | Пред_только | Gold_only | |
---|---|---|---|
Ряд 1 | 2 | 0 | 0 |
Ряд 2 | 1 | 1 | 0 |
Ряд 3 | 1 | 0 | 1 |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
микстраль-8x7b | 21.60 | 13.60 | 12.40 |
llama3-8b-инструктировать | 24.40 | 24.60 | 18.40 |
фи-3-средний-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 |
ТА + ГПТ-35-турбо | 41,60 | - | - |
ТА+лама3-70б-инструктировать | 42,80 | - | - |
gpt-4-турбо | 45,80 | 41.00 | 36.00 |
гпт-4-32к | 47.00 | 43.20 | 35.00 |
гпт-4 | 47,80 | 40,80 | 35,80 |
ТА + ГПТ-4-турбо | 58.00 | - | - |
ТА + ГПТ-4о | 63.00 | - | - |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
микстраль-8x7b | 20.41 | 12.99 | 14.16 |
llama3-8b-инструктировать | 23.27 | 23,66 | 17.90 |
фи-3-средний-128k-инструктировать | 29.54 | 24.12 | 21.07 |
gpt-35-турбо-инструкция | 32.28 | 30.39 | 26.14 |
gpt-35-турбо | 37.33 | 34,94 | 26.80 |
llama3-70b-инструктировать | 39.02 | 35,82 | 28.80 |
ТА + ГПТ-35-турбо | 40,59 | - | - |
ТА+лама3-70б-инструктировать | 41,37 | - | - |
gpt-4-турбо | 44,79 | 39,37 | 35.23 |
гпт-4-32к | 45,29 | 42,79 | 34,59 |
гпт-4 | 45,91 | 39,92 | 35.24 |
ТА + ГПТ-4-турбо | 56,44 | - | - |
ТА + ГПТ-4о | 60,86 | - | - |
SQLite | MySQL | PostgreSQL | |
---|---|---|---|
микстраль-8x7b | 22.95 | 13,79 | 14.70 |
llama3-8b-инструктировать | 27.87 | 27.49 | 19.35 |
фи-3-средний-128k-инструктировать | 35.33 | 28,73 | 24.11 |
gpt-35-турбо-инструкция | 36.34 | 33,85 | 28.30 |
gpt-35-турбо | 41,84 | 40,75 | 30.22 |
ТА + ГПТ-35-турбо | 44,25 | - | - |
llama3-70b-инструктировать | 44,38 | 40,95 | 31.43 |
ТА+лама3-70б-инструктировать | 46,66 | - | - |
gpt-4-турбо | 50.08 | 45,96 | 38,36 |
гпт-4-32к | 51,92 | 47,38 | 39,55 |
гпт-4 | 52,69 | 45,78 | 38,96 |
ТА + ГПТ-4-турбо | 62,40 | - | - |
ТА + gpt-4o | 66,97 | - | - |
Мы помещаем прогнозируемые SQL-коды базовых моделей в ./llm/exp_result/sql_output_kg/
для справки.
Основные участники проекта Mini-Dev: Сяолун Ли, Цзиньян Ли, Гэ Цюй, Биньюань Хуэй, Рейнольд Ченг, Чэньхао Ма.
Мы выражаем нашу искреннюю благодарность неоценимым отзывам от открытого сообщества, включая рецензентов 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}
}