DB-GPT-Hub: Towards Open Benchmarking Text-to-SQL Empowered by Large Language Models

绫波波 发布于 2026-02-11 160 次阅读


Meta Data

Abstract

大语言模型(LLMs)已成为极具挑战性的文本转 SQL 任务的主流解决方案。大语言模型赋能的文本转 SQL 方法主要分为基于提示学习和基于微调两类。与基于提示学习的方法相比,对微调后的大语言模型开展文本转 SQL 基准测试具有重要意义,但相关研究仍较为欠缺,这在一定程度上是由于微调所需的计算成本过高。本文提出了 DB-GPT-Hub—— 一个面向大语言模型赋能的文本转 SQL 开放基准测试套件,重点聚焦于大尺度大语言模型的微调。该基准测试套件包含两部分核心内容:1. 对中大型开源大语言模型进行微调,实现文本转 SQL 任务的标准化、全面化评估;2. 搭建模块化、易扩展的代码库,支持主流大语言模型和各类实验场景,以微调方法为核心,同时可轻松拓展至提示学习场景。本文对比了微调方法与提示学习方法的性能增益和性能边界,探索了适用于特定场景的最优解决方案。我们希望 DB-GPT-Hub 及相关研究发现,能够为文本转 SQL 领域的后续研究和广泛应用提供支撑 —— 此前该领域因缺乏专用的开放基准测试,相关研究和应用推进受阻。本项目代码已开源至:https://github.com/eosphoros-ai/DB-GPT-Hub

Introduction

Text-to-SQL任务旨在将自然语言表述转换为SQL查询语句,现已成为自然语言处理和数据库领域的研究热点。该任务有效拉近了非专业用户与数据库系统之间的距离,显著提升了数据处理效率。本质上,Text-to-SQL可被定义为序列到序列的建模任务:将数据库模式和自然语言问题整合为序列化输入,以目标 SQL 查询语句作为序列化输出。早期研究主要聚焦于微调领域专用的 Transformer 模型,并针对该任务开发专属解码技术,充分利用 SQL 的语法、语义特征,以及问题与数据库之间的复杂关联。
近年来,ChatGPT、GPT-4 等大语言模型展现出卓越的类人交互能力和复杂查询理解能力,也成为文本转 SQL 任务的全新解决方案。值得注意的是,2023 年以来,Spider 排行榜上的主流最优解决方案均为基于大语言模型的方法。
该领域近期的研究进展主要为利用大语言模型的上下文学习(ICL)技术生成准确的 SQL 查询语句,其中零样本和少样本提示学习是核心技术手段。除了自然语言本身的模糊性和复杂性带来的挑战外,领域专家标注的SQL query - response示例需要耗费大量人力,这也限制了数据密集型大语言模型在Text-to-SQL场景的规模化应用。与此同时,另一类主流方法是利用任务专属的训练数据对大语言模型进行微调,以提升其在text-to-SQL任务中的性能。相关研究取得的优异性能,证明了微调方法的巨大潜力。然而,与提示学习方法相比,微调方法的相关研究仍较为欠缺,这在一定程度上源于其极高的计算成本。近期的系统性研究仍主要关注大语言模型的上下文学习能力,以及其在相关任务中生成SQL查询语句的准确性。
迄今为止,学界尚未形成公认的、面向微调方法的开放基准测试,这使得研究人员和从业者难以对各类方法进行对比,也无法复现相关实验结果,可能延缓该领域的发展进程。为解决上述问题,本文首次提出了一套整体框架 ——DB-GPT-Hub。与现有多聚焦于少样本提示学习策略或小尺度大语言模型微调的研究不同,本文重点研究大尺度大语言模型的微调方法。总体而言,DB-GPT-Hub 整合了文本转 SQL 领域的核心研究资源(如数据、模型服务、评估方法、文档等),并具备以下显著优势:

  • 标准化:在开源代码库中搭建标准化流程,设置统一的实验环境和容器化部署方案,实现微调后大语言模型在文本转 SQL 任务中性能的透明、一致对比;
  • 全面性:开展大规模基准测试,覆盖各类实验场景下的中大型微调大语言模型,对比其与提示学习方法的性能差异,是目前实用性最强、覆盖范围最广的基准测试套件之一;
  • 可扩展性:文本转 SQL 领域发展迅速,新的大语言模型相关方法不断涌现,最优实践也在持续更新。基于本项目的文档和协议,研究人员可轻松将新内容(新数据集、新模块、新模型 / 模型服务、新评估程序)集成至代码库中。此外,该框架还可与各类提示学习技术良好兼容。这种高度的可扩展性,最终将推动文本转 SQL 领域的研究发展。

研究背景与问题建模

通用框架设定

文本转SQL任务的输入为自然语言问题q和数据库信息D,输出为该问题对应的 SQL 语句S。数据库D={S,K_p,K_f}包含数据库模式S、主键K_p和外键K_f,其中模式S通常包含多张数据表T_k,即S={T_1,T_2,...,T_s,...}。每张数据表T_k包含表名N_k、列名c_j和列数据类型t_j,因此T_k={N_k,(c_{k1},t_{k1}),(c_{k2},t_{k2}),...}。考虑到查询语句可能来自不同的数据库领域,本文将数据构建为三元组集合M={(q_i,s_i,D_i)},其中/hat{z}为查询语句、输出结果和源数据库的索引。

提示学习和微调场景

根据大语言模型在文本转 SQL 生成任务中的应用方式,可将问题场景分为两类:零样本 / 少样本提示学习(zero-shot/few-shot prompting)、微调(fine-tuning)。
零样本 / 少样本提示学习:零样本场景下不提供任何示例,少样本场景下则提供少量输入 - 输出示例以引导大语言模型生成结果。形式化地,给定由参数θ表征的预训练大语言模型、问题q_ik个示例(k≥0),任务目标是最大化大语言模型生成正确 SQL 语句s_i的概率:

\max_{s_{i}} \mathbb {P}{LLM{\theta}}\left (s_{i} | \sigma\left (q_{i}, \mathcal {M}\right)\right), \quad|\mathcal {M}|=k

其中σ(q_i,M)表示融合示例相关信息后,目标问题q_i的表征空间。

微调:微调过程通过文本转 SQL 数据集对预训练大语言模型LLM_θ进行调优,使其能够从输入序列生成对应的 SQL 语句。该数据集包含序列化输入q_i和对应 SQL 输出s_i的样本对。微调的目标是最小化经验损失:

\min {\theta} \mathcal{L}\left(\hat{s}{i}\left (LLM_{\theta}\right), s_{i} | \sigma\left (q_{i}\right)\right)

其中L为损失函数,用于衡量生成的 SQL 语句与真实标签之间的差异。
尽管大语言模型的少样本提示学习已取得显著进展,但预训练大语言模型仅依靠自身参数化知识和提示学习,仍难以准确处理高度复杂的 SQL 查询语句,这仍是一项极具挑战性的任务。
参数高效微调:拥有数十亿参数的中大型大语言模型,其全量微调到特定任务或领域的成本极高。参数高效微调(PEFT)方法通过仅微调模型的少量(额外)参数,而非所有参数,实现大尺度预训练模型向各类下游任务的高效适配。目前两种最常用的技术为 LoRA 及其量化版本 QLoRA:LoRA 方法冻结预训练模型的权重,在每个 Transformer 块中注入可训练的低秩分解矩阵。本文的基准测试中,均采用这两种策略对大语言模型进行微调,具体的微调基准测试设计和实验结果见第 3 节和第 4 节。

基准测试设计与研究资源

实验设置

数据集:本文主要基于两个公认的公开数据集开展实验:

  • Spider:一个大规模跨领域数据集,包含 10181 条自然语言查询语句、5693 条唯一的复杂 SQL 查询语句,覆盖 200 个数据库、138 个领域。该数据集的标准划分方式为:8659 个训练样本,以及包含 34 个数据库的 2147 个测试样本。SQL 查询语句按难度分为四个等级:简单、中等、困难、极难。
  • BIRD:包含 12751 条唯一的问题 - SQL 样本对,覆盖 95 个大型数据库。SQL 查询语句按难度分为三个等级:简单、中等、挑战。值得注意的是,BIRD 数据集中的 SQL 查询语句复杂度整体高于 Spider 数据集。
    此外,本文的代码库可兼容各类主流文本转 SQL 数据集的微调,如 WikiSQL、CoSQL、Chase。受篇幅限制,更多更新的实验结果将持续发布在项目官网。
    查询 - 响应样本构建:本文基于现有数据集构建查询 - 响应样本对,用于大语言模型的微调。参考现有研究方法,所有数据集的训练集、验证集和测试集均采用目前广泛使用的文本表征提示(Text Rep-
    resentation Prompt TRP)格式构建样本对。
    如清单 1 所示,文本表征提示格式采用自然语言同时描述数据库模式和查询问题,并在提示语开头添加指令以引导大语言模型生成结果。完整示例见附录的相关清单。

    Spider 数据集上基于文本表征提示格式的查询 - 响应样本对

    评估指标:本文采用两种常用指标评估所有模型的性能:精确集合匹配准确率(exact-set-match accuracy,EM)和执行准确率(execution accu-
    racy,EX)。精确集合匹配准确率通过对比生成 SQL 语句与真实标签的关键词匹配情况进行评估;执行准确率则通过在数据库实例上,对比生成 SQL 语句与真实标签的执行结果进行评估。由于一个问题可能对应多个有效 SQL 语句,执行准确率能更精准地评估模型性能。两种指标的数值均越高越好,本文主要采用执行准确率评估 SQL 语句的生成准确性,详细说明见附录。
    基础大语言模型:本文选取 4 个主流大语言模型家族的多款中大型变体开展基准测试:GLM、通义千问(Qwen)、百川(Baichuan)和 Llama,具体模型包括:
    ChatGLM3-6B:基于 GLM 框架的开源双语大语言模型 ChatGLM 的最新开源版本;
    Qwen-7B/14B/72B-Chat:通义千问系列对齐模型;
    Baichuan2-7B/13B-Chat:百川系列最新对齐模型;
    LLaMA2-7B/13B/70B-Chat:Llama2 系列最新对齐模型;
    CodeLLaMA-7B/13B/70B-Instruct:基于 LLaMA-2-13B,经代码数据微调的对齐模型。
    为保证对比的公平性,所有大语言模型均设置最大上下文长度为 2048,预留 512 个 token 用于生成响应结果,并将温度系数设为 0,以消除随机性对实验结果的影响。
    微调方法:由于文本转 SQL 数据集的规模远小于大语言模型的参数量,本文分别采用 LoRA 和 QLoRA 两种参数高效微调策略对模型进行微调。对于中型模型(7B/13B),采用 1 块英伟达 A100 张量核心 GPU 完成训练和推理;对于大型模型(70B),则采用 8 块 A100 GPU。
    基准测试流程:图 1 展示了 DB-GPT-Hub 中实现的开放基准测试流程,该流程将为该领域的后续研究提供支撑,推动实验结果的可复现性。

    DB-GPT-Hub的benchmark流水线

代码库

为助力社区创新,DB-GPT-Hub 搭建了模块化、易扩展的优质代码库,实现了Text-to-SQL 方法的标准化实现、评估和消融实验。
软件架构:图1示展示了代码库的流程和架构,整体流程分为以下四个模块:

  • 数据集构建:将原始text-to-SQL数据处理为适用于大语言模型微调的格式(如清单 1 中的文本表征提示格式),包括将数据库模式和描述整合为指令式提示语,并设计多种问题表征方式,提升模型训练和评估的性能。此外,本文还将选取不同的少样本策略(如示例选择、示例组织)构建评估数据集;
  • 模型训练:代码库支持采用参数高效微调策略对开源大语言模型进行微调,兼容目前主流的各类架构,覆盖从小型到大型的多尺度模型,如通义千问、Llama、百川、ChatGLM 等;
  • 模型推理:代码库支持基于微调后的开源大语言模型,以及闭源大语言模型,完成SQL查询语句的推理生成,同时支持少样本和零样本方法,以适配不同的应用场景;
  • 性能评估:代码库内置多种评估指标(执行准确率、精确集合匹配准确率、有效效率得分alid efficiency score VES),从多个维度评估生成 SQL 语句的性能。
  • 实现细节:该代码库基于 PyTorch 框架构建,并基于开源项目 DB-GPT 进行开发,采用 Apache License 2.0 开源协议发布,且项目团队将持续维护该代码库。

实验结果

本节基于 DB-GPT-Hub 开展文本转 SQL 任务的系统性评估,对比不同大语言模型的性能差异,探索影响模型微调性能的训练范式。

核心实验结果

表 1 和表 2 分别展示了模型在 Spider 和 BIRD 数据集上以执行准确率为指标的评估结果,两个数据集上以精确集合匹配准确率为指标的结果见附录相关表格。

在Spider数据集上的评测结果,L代表LoRA微调,QL代表QLoRA微调

在BIRD数据集上的评测结果,L代表LoRA微调,QL代表QLoRA微调

最优模型:不出所料,经微调的 CodeLlama 系列模型在两个数据集上的性能均显著优于其他模型 —— 该系列模型的基础版本已针对代码生成和补全任务做了优化。具体而言,本文得到以下核心结论:
如表 1 和表 2 最后一列所示,经微调的小尺度 CodeLlama 模型(如 CodeLlama-7B-LoRA),其性能与其他经微调的中大型开源大语言模型(如 Qwen-14B/72B-LoRA)相当,在部分场景下甚至更优;
CodeLlama-70B-LoRA 是所有模型中的最优选择,在两个数据集上均表现出最优性能。
微调带来的性能提升:表 1、表 2 及附录相关表格展示了参数高效微调策略在两个数据集上为模型带来的性能提升,证明了大语言模型对高质量文本转 SQL 训练数据的适配能力。值得注意的是,以执行准确率为指标,微调在 Spider 数据集上带来的性能提升高于 BIRD 数据集,这表明在复杂度较低的任务中,微调的价值更为突出。
不同 SQL 难度下的模型性能:图2以三个 7B 尺度的模型为例,展示了微调后模型在不同难度 SQL 生成任务中的性能表现。结果显示,对于所有三个微调模型,微调带来的性能提升幅度与任务复杂度呈负相关 —— 微调在简单任务上的性能提升更为显著,这说明相较于复杂任务,微调对简单任务的优化效果更明显。

LoRA微调在不同难度测评组上的提升表现

LoRA 与 QLoRA 的对比:表 3 汇总了两种方法在执行准确率、精确集合匹配准确率、训练时间和 GPU 显存占用四个维度的指标。首先,两种方法在生成性能(执行准确率、精确集合匹配准确率)上的差异极小;其次,与量化机制的特性一致,QLoRA 的收敛时间更长,但显存占用更低。例如,与 Qwen-14B-LoRA 相比,Qwen-14B-QLoRA 的训练时间是其 2 倍,但显存占用仅为其 50%。

LoRA 和 QLoRA 在 Spider 数据集上的多维度对比:EX 和 EM 为性能指标;训练时间和最大 GPU 显存消耗为资源指标。

综上,在计算资源受限的场景下,QLoRA 是一种高效的微调方案,能够在不损失模型性能的前提下节省显存。
注:对于 70B 尺度的大型模型,研究发现 DeepSpeed 优化与 QLoRA 不兼容,因此相关实验数据暂未补充。本文中模型名称后缀 “-LoRA/QLoRA” 表示该模型采用了对应的参数高效微调策略。

分析一:微调与少样本提示学习的对比

本节探索微调方法相对少样本提示学习方法的性能提升。
实验设置:选取 Llama2 和通义千问两个模型家族,主要在 Spider 数据集上开展实验。采用目前在 Spider 排行榜上排名第二的开源方法 ——DAIL 示例选择法构建少样本提示语,该方法选择与问题和响应均具有高相似度的示例,能更好地保留查询 - 响应对之间的映射关系。
核心结论:受篇幅限制,完整实验结果见附录相关表格。结果显示,在零样本和少样本(1/3/5 样本)评估场景下,微调后的模型性能均显著更优,再次证明了大语言模型对高质量文本转 SQL 训练数据的良好适配能力。

Spider上的Few-shot示例

提示学习中示例数量的影响:除了微调模型的性能优势外,相关图示还显示,对于性能较强的大型模型,微调模型相对基础模型的执行准确率优势,在少样本场景下会逐渐缩小。例如,Qwen-72B-LoRA 与 Qwen-72B 在 3 样本场景下的执行准确率分别为 68.5 和 64.8,在 5 样本场景下则为 68.4 和 65.0,差距逐步缩小。这一点从另一幅图示中也能更直观地看出 —— 通义千问 13B/72B 模型的性能曲线在低样本数时趋于平缓。

Spider上的few-shot示例,不同尺寸Qwen/Llama2模型的EX指标表现

这一现象的原因可能在于,Qwen-72B 这类模型本身已具备较强的 SQL 推理能力,这一点在其他文本转 SQL 基准测试研究中鲜有提及。
综上,微调模型在少样本生成场景中的 SQL 推理能力仍优于未微调模型;但随着大语言模型尺度的增大,两者的性能差距会逐渐缩小。
模型尺度的影响:从上图示中可分析不同模型尺度下的少样本性能,得到以下结论:

  • 在少样本场景下,模型尺度越大,性能表现越优;
  • 在同一少样本场景下,随着模型尺度的增大,微调方法相对提示学习方法的性能优势会逐渐缩小。例如,在 1 样本场景下,通义千问 7B、14B、72B 模型经 LoRA 微调后的执行准确率提升幅度分别为 31.0、24.1 和 3.5。
    完整的少样本评估结果见附录相关表格。总体而言,微调方法的性能始终优于提示学习方法,但两者的性能差距会随模型尺度的增大而逐渐缩小。

分析二:基于更多示例的微调

本节探索在微调过程中加入更多上下文示例,提升模型性能的可行性。
实验设置:以 Qwen-7B 为基础模型,构建额外的三个少样本(1/3/5 样本)训练集对模型进行微调。具体而言,1/3/5 样本训练集在原有查询 - 响应对的基础上,分别增加了 1/3/5 个示例。同时,与 4.2 节一致,评估该模型在不同少样本场景下的性能。
核心结论:相关表格的实验结果主要得出以下两点结论:

  • 在零样本评估场景下,加入额外示例的微调并未带来显著的性能提升,原因可能在于训练语料(含更多示例)与评估场景(无示例)的提示语格式不匹配;
  • 在 1/3/5 样本评估场景下,加入更多上下文示例的微调模型,性能显著优于基于零样本训练集微调的模型。这表明,零样本训练的模型在少样本评估中出现的性能损失,源于训练集与评估集的提示语格式不匹配;
  • 随机样本策略(即在训练语料中随机加入 0/1/3/5 个示例)的模型取得了最高的精确集合匹配准确率。这一发现与现有研究结论一致:多样化的训练语料有助于提升大语言模型的微调效果。

相关工作

大语言模型赋能的文本转 SQL 方法

受大语言模型成功应用的推动,大语言模型赋能的文本转 SQL 已成为自然语言处理和数据库领域的研究热点。基于大语言模型的文本转 SQL 方法主要分为两类:有监督微调方法和提示学习方法。主流的微调模型包括 SQL-PaLM、PICARD 和 RESDSQL。与有监督微调模型不同,提示学习模型无需在任务专属的训练数据上进行额外微调,仅依靠大语言模型本身的零样本和少样本能力完成任务。在提示学习范式中,提示语的设计是影响查询表征效果的关键因素。其中,DIN-SQL 通过任务分解设计自适应提示策略,有效解决了模式链接的难题;DAIL-SQL 则提出了优化的提示示例选择和组织策略,提升了模型性能。
在 DB-GPT-Hub 中,本文提供了相关脚本,支持研究人员基于 SQL-PaLM 的方法对大语言模型进行微调,同时也集成了 DAIL-SQL 中使用的主流提示学习技术。

文本转 SQL 基准测试

高质量基准测试的构建,是推动文本转 SQL 领域发展的关键因素。早期的基准测试主要针对单一数据库,包括 ATIS、GeoQuery、Academic、Advising,以及近年来的 SEDE 和 MIMICSQL。这些基准测试和数据集大多源于实际应用,包含大量领域专用知识,难以泛化到未见过的 SQL 领域。因此,研究人员提出了包含专业 SQL 查询语句的大规模跨领域数据集,如 Squall、Spider、Spider-Syn、WikiSQL 和 SparC,为各类方法的全面分析提供了支撑。
经调研,本文发现有两项同期研究也对文本转 SQL 方法开展了系统性基准测试。本文研究与这两项研究的核心差异在于:

  1. 基准测试场景的全面性:本文以端到端的方式,同时评估了上下文学习方法和中大型模型的微调方法,而相关研究仅聚焦于上下文学习方法,另一项研究则针对文本转 SQL 的各子任务开展评估;
  2. 代码库的开源性:本文在 GitHub 上发布了维护良好的开源代码库,包含所有代码和数据资源,是目前文本转 SQL 领域最受欢迎的基准测试代码库之一(目前已获得超 1000 个星标),而上述两项研究均未实现相关资源的开源。

结论

本文对文本转 SQL 流程中的各类大语言模型开展了系统性基准测试,从精细化的视角剖析了文本转 SQL 的处理流程,为研究人员提升大语言模型的语义理解能力提供了策略支撑。

研究局限性

大语言模型训练需要大量的计算资源,并非所有研究人员和从业者都能获取,这可能会限制本文研究发现的可复现性。