Text2SQL准确率暴涨22.6%!3大维度全拆
最近,Text2SQL领域迎来了一次令人瞩目的突破——执行准确率一口气提升了22.6%,困扰业界已久的三大核心难题终于有了系统性解决方案。本文将完整拆解这一成果背后的关键思路:从技术演进的脉络到具体创新方法(J-Schema设计、Iterative DPO训练、自洽性投票机制),再到BIRD数据集上从56.6%跃升至69.2%执行准确率的实证结果。
摘要
技术背景:Text2SQL 是将自然语言查询转为 SQL 的任务,经历了基于规则、神经网络、预训练语言模型、大语言模型四个阶段。当前面临提示优化、模型训练、推理时增强三大难题,研究基于 BIRD 数据集展开。
方法:提出 J-Schema 呈现数据库结构并合理提供示例值,结合思维链引导模型推理。采用 Iterative DPO 迭代训练,多轮迭代提升性能。用自洽性方法,通过硬/软投票从多个候选答案中选最优,软投票更优。
结果:解决 Text2SQL 性能提升的三大难题,将模型在 BIRD 数据集上的执行准确率从 56.6% 提升至 69.2%。
一、Text2SQL挑战
自然语言到 SQL(Text-to-SQL),也称为 NL2SQL,是将自然语言查询转换为可在关系数据库上执行的相应SQL查询的任务。具体来说,给定一个自然语言和一个关系数据库,Text-to-SQL 的目标是生成一个SQL,该SQL能够准确反映用户的意图,并在数据库上执行时返回适当的结果。通过将
自然语言查询转换为结构化查询语言
Text-to-SQL 解决方案的演进,经历了四个不同阶段:
1. 基于规则阶段
2. 基于神经网络阶段
3. 预训练语言模型阶段
4. 大语言模型阶段
Text2SQL性能的提升,面临着以下三个难题。
提示优化:
模型训练:
推理时增强:
从这三个维度,本文给出了相应的答案。实验使用的数据集来自BIRD(BIg Bench for LaRge-scale Database Grounded Text-to-SQL Evaluation)。BIRD考察了大规模数据库内容对文本到 SQL 解析的影响。BIRD 包含超过12,751个独特的[问题-SQL]对,95 个大型数据库,还涵盖了超过 37 个专业领域,例如区块链、冰球、医疗保健和教育等。
二、Prompt & J-Schema
要让 LLM 理解数据库结构,需在提示中提供数据库模式。为此,
本文提出一种名为 J-Schema 的新型数据库表达方式
完全结构化
对于单一模型而言,在无法执行值检索的情况下,提供尽可能丰富的示例值有助于模型深化对列的理解。然而,示例值过多会受限于上下文长度。为平衡示例值数量与上下文长度之间的关系,本文为值建立了新的显示规则。
1.“DATE”、“TIME”、“DATETIME”、“TIMESTAMP”等表示
时间的数据类型
2.“REAL”
浮点数据类型
3.针对“INTEGER”
整型
4.针对“TEXT”
文本类型
在这套规则背后,包含了大量
错误样本的分析
实验验证J-Schema在多个模型上均有执行准确率较大提升
思维链(Chain of Thought, CoT)是一种提升大语言模型复杂推理能力的提示工程技术,核心是引导模型在输出最终答案前,先生成连贯的中间推理步骤,模拟人类逐步思考的过程。在
提示中首先给出完整的数据库信息,然后添加用户查询和外部知识,并给出引导大模型分步进行推理的提示
三、训练方法
Iterative DPO
偏好优化已被证明,在将预训练语言模型与人类需求对齐时,相较于单独的监督微调能带来巨大的收益。DPO等离线方法因其简单性和效率而越来越受欢迎。最近的研究结果表明,迭代应用这种离线流程是有益的,其中更新后的模型被用来构建更具有信息量的新偏好关系,从而进一步改善结果。
为了提高模型的基础能力,本文采用迭代式的DPO训练方法
具体而言,在每次迭代中,从训练提示中采样多个思维链推理步骤和最终答案,通过验证最终答案,构建正例池和负例池,在正、负例池根据距离挑选来构建偏好对,然后进行DPO训练。在训练新模型后,通过生成新偏好对并重新训练来迭代该过程。推理性能在多次迭代后逐渐提高,最终达到饱和。
每一轮迭代中Text2SQL准确率提升如下表所示。在第三轮迭代中执行准确率达到最高,并饱和,继续迭代执行准确率下降。并且随着迭代轮次的增加,思维链的长度也在不断增加。
| 模型 | 平均CoT token长度 | 执行准确率EX |
|---|---|---|
| Qwen2.5-Coder-32B | 334 | 63.69% |
| iterative stage1 | 377 | 65.78% |
| iterative stage2 | 377 | 67.08% |
| iterative stage3 | 380 | 67.60% |
| iterative stage4 | 384 | 67.40% |
超参数扫描
通过DPO方法进行训练,beta是DPO Loss中的权重系数,数值越小越忽略参考模型,通常取0.1~0.5。DPO对齐算法对这一参数特别敏感。本文设置了beta从0.1、0.2、...、0.6变化。所有实验均训练两个epoch。每次运行时,其他超参数保持不变,包括随机种子。不同beta值对应的执行准确率如下图所示。当beta取0.5时,达到最高的执行准确率,后续的DPO迭代中都延续使用该beta值。
四、自洽性(Self-consistency)
自一致性的核心思想是:
让模型对同一问题生成多个候选答案,然后通过投票机制选择最优解,而不是只依赖单次生成结果
在实现自洽性的过程中,使用了硬投票和软投票两种方式。硬投票直接根据模型生成结果的最终表现(如执行结果是否正确,二元判断)进行投票,不考虑结果之间的相似程度。软投票的决策依据是根据结果之间的相似程度(连续值)。如下图所示。
在某些场景下,硬投票可能过于严格:
•
语义等价但结果有细微差异:例如 SQL 查询结果的顺序不同,但逻辑上是等价的。
•
近似正确的结果:例如模型生成了一个接近正确答案的解,但存在小误差。软投票通过相似度计算,可以将这些 “近似正确” 的结果纳入考虑,从而提高最终答案的可靠性。
不同的checkpoint模型使用自洽性均获得了1%以上的执行准确率提升,其中软投票方法要优于硬投票方法。
| 模型 | 无自洽性 | 硬投票 | 软投票 |
|---|---|---|---|
| iterative stage3 | 67.60% | 67.93% | 68.97% |
| iterative stage4 | 67.40% | 67.40% | 68.45% |
五、未来探索
1. 数据构造
SynSQL-2.5M是百万规模的文本到 SQL 数据集,包含超过250万份多样且高质量的数据样本,涵盖来自不同领域的 16000 多个数据库。如何从250万份样本中筛选出对于BIRD有益的数据将会是未来的重点尝试方向。
2. 其他训练方法
•GRPO通过组内相对奖励来优化策略模型,在Text2SQL任务中,只需要定义奖励函数(例如执行正确奖励为1,执行错误奖励为0),而不需要预先构建偏好数据对。9N LLM的新镜像中提供了提交GRPO的训练任务可作尝试。在目前的尝试中,GRPO的训练时长主要受到reward验证的影响,采样n次时,每一个SQL样本都需要连接数据库执行验证来获取奖励。为了缩短训练时间,可以事先删除执行时长过长的样本。
•在BIRD训练集中,针对多轮DPO后的模型,进行多次采样时,仍然全错的样本,经过检查有很大部分是自身标签错误,使用LLM-as-Judge训练方法,使模型能够具备判断正负样本的能力,并且进一步删除标签错误的样本,保留正确样本。
3. 增加测试该优化方法的数据集和真实场景
用多个测试数据集有助于鲁棒性,能够更加全面地检验模型的性能。其中知名的数据集还有SPIDER、ScienceBenchmark、EHRSQL等。本文将在这些测试集验证优化方案,并逐步推广到DataAgent的真实应用中。对于企业级的大型数据库来说,还会有哪些新的挑战?团队会持续关注,不断探索和改进!