DB-GPT-Hub 是一个利用 LLMs 实现 Text-to-SQL 解析的实验项目,主要包含数据集收集、数据预处理、模型选择与构建和微调权重等步骤,通过这一系列的处理可以在提高 Text-to-SQL 能力的同时降低模型训练成本,让更多的开发者参与到 Text-to-SQL 的准确度提升工作当中,最终实现基于数据库的自动问答能力,让用户可以通过自然语言描述完成复杂数据库的查询操作等工作。
目前我们已经基于多个大模型打通从数据处理、模型 SFT 训练、预测输出和评估的整个流程,代码在本项目中均可以直接复用。
截止 20231010,我们利用本项目基于开源的 13B 大小的模型微调后,在 Spider 的评估集上的执行准确率,已经超越 GPT-4 !
数据集
本项目案例数据主要以 Spider 数据集为示例 :
Spider: 一个跨域的复杂 text2sql 数据集,包含了 10,181 条自然语言问句、分布在200 个独立数据库中的 5,693 条 SQL,内容覆盖了 138 个不同的领域。
其他数据集:
WikiSQL: 一个大型的语义解析数据集,由 80,654 个自然语句表述和 24,241 张表格的 sql 标注构成。WikiSQL 中每一个问句的查询范围仅限于同一张表,不包含排序、分组、子查询等复杂操作。
CHASE: 一个跨领域多轮交互 text2sql 中文数据集,包含 5459 个多轮问题组成的列表,一共 17,940 个
<query, SQL>
二元组,涉及 280 个不同领域的数据库。BIRD-SQL:数据集是一个英文的大规模跨领域文本到 SQL 基准测试,特别关注大型数据库内容。该数据集包含 12,751 对文本到SQL数据对和 95 个数据库,总大小为 33.4GB,跨越 37 个职业领域。BIRD-SQL 数据集通过探索三个额外的挑战,即处理大规模和混乱的数据库值、外部知识推理和优化 SQL 执行效率,缩小了文本到 SQL 研究与实际应用之间的差距。
CoSQL: 一个用于构建跨域对话文本到 sql 系统的语料库。它是 Spider 和 SParC 任务的对话版本。CoSQL 由 30k+ 回合和 10k+ 带注释的 SQL 查询组成,这些查询来自 Wizard-of-Oz 的 3k 个对话集合,查询了跨越 138 个领域的 200 个复杂数据库。每个对话都模拟了一个真实的 DB 查询场景,其中一个工作人员作为用户探索数据库,一个 SQL 专家使用 SQL 检索答案,澄清模棱两可的问题,或者以其他方式通知。
按照 NSQL 的处理模板,对数据集做简单处理,共得到约 20w 条训练数据,链接详见附录 Healthy13/Text2SQL。
基座模型
DB-GPT-HUB 目前已经支持的 base 模型有:
- CodeLlama
- Baichuan2
- LLaMa/LLaMa2
- Falcon
- Qwen
- XVERSE
- ChatGLM2
- internlm
- Falcon
模型可以基于 quantization_bit 为 4 的量化微调 (QLoRA) 所需的最低硬件资源,可以参考如下:
模型参数 | GPU RAM | CPU RAM | DISK |
---|---|---|---|
7B | 6GB | 3.6GB | 36.4GB |
13B | 13.4GB | 5.9GB | 60.2GB |
其中相关参数均设置为最小,batch_size 为 1 ,max_length 为 512。根据经验,如果计算资源足够,为了效果更好,建议相关长度值设置为 1024 或者 2048。
使用方法
环境准备
git clone https://github.com/eosphoros-ai/DB-GPT-Hub.git
cd DB-GPT-Hub
conda create -n dbgpt_hub python=3.10
conda activate dbgpt_hub
pip install -r requirements.txt
最后编辑:Jeebiz 更新时间:2025-05-12 09:20