?ورقة ?المتصدرين
نقدم هنا إصدارًا بسيطًا من مجموعة بيانات التطوير: Mini-Dev . تم تصميم مجموعة البيانات المصغرة هذه لتسهيل دورات التطوير الفعالة والفعالة من حيث التكلفة، خاصة لاختبار نماذج إنشاء استعلام SQL وتحسينها. تنتج مجموعة البيانات هذه من تعليقات المجتمع، مما يؤدي إلى تجميع 500 زوج text2sql عالي الجودة مشتق من 11 قاعدة بيانات متميزة في بيئة التطوير. لتعزيز التطبيق العملي لنظام BIRD في إعدادات الصناعة ودعم تطوير نماذج تحويل النص إلى SQL، قمنا بتوفير مجموعة بيانات Mini-Dev في كل من MySQL و PostgreSQL .
بالإضافة إلى ذلك، نقدم مقياسين تقييميين جديدين لمجموعة بيانات Mini-Dev: درجة الكفاءة الصالحة القائمة على المكافأة (R-VES) و Score F1-Score . تهدف هذه المقاييس إلى تقييم كفاءة ودقة نماذج تحويل النص إلى SQL، على التوالي. من المهم ملاحظة أن كلا المقياسين، الموجودين حاليًا في نسختهما التجريبية، ينطبقان حصريًا على مجموعة بيانات Mini-Dev باستخدام النماذج الأساسية.
نحن نرحب بالمساهمات والاقتراحات لتعزيز هذه المقاييس، لا سيما فيما يتعلق بدمجها في لوحات الصدارة الحالية. من فضلك لا تتردد في الاتصال بنا إذا كنت مهتما بهذه التطورات أو لديك أي مقترحات للتحسينات.
فيما يلي بعض الإحصائيات الأساسية لمجموعة بيانات التطوير المصغرة:
تحتوي مجموعة البيانات على الموارد الرئيسية التالية:
database
: يجب أن يتم تخزين قاعدة البيانات ضمن ./mini_dev_data/dev_databases/
. يحتوي كل مجلد قاعدة بيانات على مكونين:database_description
: يتم تصنيع ملفات CSV لوصف مخطط قاعدة البيانات وقيمها للنماذج التي سيتم استكشافها أو المراجع.sqlite
: محتويات قاعدة البيانات في BIRD. ملحوظة
يجب عليك تنزيل أحدث قواعد بيانات التطوير لإنشاء قاعدة بيانات في MySQL وPostgreSQL. إذا كنت تستخدم إصدار SQLite فقط، فيمكنك استخدام قواعد بيانات التطوير الأصلية.
data
: يتم تخزين كل زوج من تحويل النص إلى SQL مع دليل معرفة Oracle كملف json، أي يتم تخزين mini_dev_sqlite.json
على ./mini_dev_data/mini_dev_sqlite.json
. يحتوي كل ملف json على ثلاثة أجزاء رئيسية:db_id
: أسماء قواعد البياناتquestion
: الأسئلة التي ينظمها التعهيد الجماعي البشري وفقًا لأوصاف قاعدة البيانات ومحتويات قاعدة البيانات.evidence
: أدلة المعرفة الخارجية المشروحة من قبل الخبراء للمساعدة في النماذج أو تعليقات SQL.SQL
: SQLs مشروحة بواسطة التعهيد الجماعي بالإشارة إلى أوصاف قاعدة البيانات ومحتويات قاعدة البيانات للإجابة على الأسئلة بدقة.ground-truth SQL file
: يجب تخزين ملف SQL في ./llm/mini_dev_data/mini_dev_sqlite_gold.sql
.llm
: يحتوي على أكواد المصدر لتحويل النصوص إلى SQL عن طريق استدعاء واجهات برمجة التطبيقات من LLMs، مثل 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 في بيئة بايثون الخاصة بك عن طريق:
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
. ضع ملف Ground-Truth SQL في ملف ./data/
. وقد تحتاج إلى تصميم علامة ChatGPT بنفسك. الملف الرئيسي للتقييم السابق موجود في ./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 ليكون أكثر استقرارًا وموثوقية. بدلاً من مجرد قياس النسبة الزمنية بين SQLs للتنبؤ والحقيقة الأرضية، نقوم الآن بتعيين نقطة مكافأة بناءً على النسبة الزمنية. يتم حساب 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 الناعمة على النحو التالي:
متطابق | Pred_only | الذهب_فقط | |
---|---|---|---|
الصف 1 | 2 | 0 | 0 |
الصف 2 | 1 | 1 | 0 |
الصف 3 | 1 | 0 | 1 |
سكليتي | ماي إس كيو إل | PostgreSQL | |
---|---|---|---|
ميكسترال-8x7b | 21.60 | 13.60 | 12.40 |
llama3-8b-instruct | 24.40 | 24.60 | 18.40 |
فاي-3-متوسط-128k-instruct | 30.60 | 25.00 | 21.60 |
gpt-35-turbo-instruct | 33.60 | 31.20 | 26.60 |
gpt-35-توربو | 38.00 | 36.00 | 27.40 |
llama3-70b-instruct | 40.80 | 37.00 | 29.40 |
تا + جي بي تي-35-تيربو | 41.60 | - | - |
تا + اللاما3-70ب-إرشاد | 42.80 | - | - |
جي بي تي-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 | - | - |
تا + gpt-4o | 63.00 | - | - |
سكليتي | ماي إس كيو إل | PostgreSQL | |
---|---|---|---|
ميكسترال-8x7b | 20.41 | 12.99 | 14.16 |
llama3-8b-instruct | 23.27 | 23.66 | 17.90 |
فاي-3-متوسط-128k-instruct | 29.54 | 24.12 | 21.07 |
gpt-35-turbo-instruct | 32.28 | 30.39 | 26.14 |
gpt-35-توربو | 37.33 | 34.94 | 26.80 |
llama3-70b-instruct | 39.02 | 35.82 | 28.80 |
تا + جي بي تي-35-تيربو | 40.59 | - | - |
تا + اللاما3-70ب-إرشاد | 41.37 | - | - |
جي بي تي-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 | - | - |
تا + gpt-4o | 60.86 | - | - |
سكليتي | ماي إس كيو إل | PostgreSQL | |
---|---|---|---|
ميكسترال-8x7b | 22.95 | 13.79 | 14.70 |
llama3-8b-instruct | 27.87 | 27.49 | 19.35 |
فاي-3-متوسط-128k-instruct | 35.33 | 28.73 | 24.11 |
gpt-35-turbo-instruct | 36.34 | 33.85 | 28.30 |
gpt-35-توربو | 41.84 | 40.75 | 30.22 |
تا + جي بي تي-35-تيربو | 44.25 | - | - |
llama3-70b-instruct | 44.38 | 40.95 | 31.43 |
تا + اللاما3-70ب-إرشاد | 46.66 | - | - |
جي بي تي-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 | - | - |
نقوم بإسقاط SQLs المتوقعة للنماذج الأساسية ضمن ./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}
}