DIN-SQL

关注
义项:文本到SQL的提示框架

DIN-SQL是一种面向文本到SQL任务的提示框架,全称可译为分解式上下文学习的文本到SQL生成与自我修正(Decomposed In-Context Learning of Text-to-SQL with Self-Correction)。它由Mohammadreza Pourreza与Davood Rafiei提出,2023年发表于神经信息处理系统大会[1][2]。该框架不依赖对模型微调,而是用提示把自然语言问题到SQL查询的转换拆成模式链接、查询分类与分解、SQL生成、自我修正4个模块[3],并在Spider与BIRD两个跨域数据集上大幅提升了提示方法的执行准确率[4]。

百科 图文
目录
  1. 定义
  2. 背景
  3. 内容
  4. 影响与争议
  5. 参见

定义

DIN-SQL是一种面向文本到SQL任务的提示框架,全称可译为分解式上下文学习的文本到SQL生成与自我修正[1][2]。它并不来自对某个模型进行微调,而是把一条自然语言问题转换为SQL查询的过程拆分为模式链接、查询分类与分解、SQL生成、自我修正4个模块,每个模块都用提示方式实现[3][4]。

该框架由Mohammadreza Pourreza与Davood Rafiei提出,论文于2023年发表在神经信息处理系统大会,收录于该会议论文集第36卷,页码为36339至36348[1][2]。名称中的分解与自我修正分别对应其两项主要设计:把复杂查询化整为零,以及让模型检查并修补自己生成的SQL[5][3]。

背景

在DIN-SQL提出之前,用提示工程驱动大语言模型完成文本到SQL任务的效果,普遍不及针对该任务专门微调的模型[4]。作者在分析少样本提示的失败样本时发现,模型最容易出错的环节是判断自然语言问题对应数据库中的哪些表和列,也就是常说的模式链接,其次是连接操作与嵌套查询[4]。

当时的研究通常把零样本提示作为对照基准,而DIN-SQL与MAC-SQL等被后续工作归为更进一步的提示方法;这两者都要求按事先规定的格式把数据库模式写入提示,零样本模型则不做这类处理[6]。DIN-SQL的出发点就是通过任务分解,弥补提示方法与微调方法之间的这一性能差距[4]。

内容

DIN-SQL把文本到SQL任务拆成4个依次执行的模块:模式链接、查询分类与分解、SQL生成、自我修正[3]。

模式链接模块负责找出问题中提到的数据库表名、列名以及条件取值,这一环节在作者的失败分析中出错最多[4]。该模块的提示中放入了从数据集训练部分随机抽出的10个样例,并采用思维链式的模板引导模型逐步推理[4]。

查询分类与分解模块按复杂度把问题分成简单、非嵌套复杂、嵌套复杂3类,同时判断是否需要连接多张表[4]。对于嵌套复杂类,模型被要求先解出各个子查询,再以子查询结果为基础生成最终查询,中间还借助NatSQL这种中间表示来组织推理步骤[4]。

SQL生成模块根据前一模块给出的类别采用不同策略:简单类使用简单的少样本学习提示,非嵌套复杂与嵌套复杂两类则使用分解式的思维链提示[4]。

自我修正模块在零样本设置下运行,只把存在缺陷的SQL交给模型,要求其找出并改正其中的问题[4]。该模块提供通用与温和两种提示,前者在CodeX系列模型上效果较好,后者更适合GPT-4,框架默认对两者使用不同的提示[4]。

作者在Spider与BIRD两个跨域数据集上进行了评测。在Spider的留出测试集上,使用GPT-4的执行准确率为85.3%,使用CodeX Davinci为78.2%;在BIRD测试集上使用GPT-4为55.9%,开发集为50.72%[4]。其中Spider上的成绩是在没有使用数据库内容的情况下取得的[4]。

影响与争议

DIN-SQL常被后续研究选作比较基线,原因之一是它支持与评测相同的底层模型,便于直接对照[7]。也有后续工作在评测数据与问题难度时,直接以DIN-SQL的模型准确率作为挑选领域的依据[6];在另一些评测中,它的执行准确率被记为83.5%[8]。

在其基础上出现了多项改进工作。DFIN-SQL把聚焦模式与DIN-SQL结合,用于提升大规模数据库上的准确率[9];面向临床领域的文本到SQL研究也采用了DIN-SQL的自我修正方法[10]。

作者指出了该框架的两点局限:各查询类别使用的示例是固定构造的,未来可探索更细粒度、自适应和自动生成的示例;此外,用GPT-4回答Spider数据集中一个问题约需0.5美元成本,延迟约60秒[4]。

消融实验显示,去掉4个模块中的任何一个,执行准确率都会下降;但即便设置了专门模块,失败样本中占比最大的仍属模式链接这一类[4]。

参见

  • 文本到SQL —— DIN-SQL所处理的核心任务,即把自然语言问题转换为SQL查询。

  • 上下文学习 —— 该框架各模块所依赖的提示范式。

  • 少样本学习 —— DIN-SQL在模式链接与简单查询生成中采用的提示方式。

  • 思维链 —— 处理复杂查询时用于组织推理步骤的提示方法。

  • DFIN-SQL —— 在DIN-SQL基础上引入聚焦模式的后续改进工作。

参考资料

  1. * Lin et al . aclanthology.org [引用日期2026-09-27]
  2. [42] Mohammadreza Pourreza and Davood Rafiei . arxiv.org [引用日期2026-09-27]
  3. github.io 上的网页 . Microsoft Tech Blog解説: LLM推論最適化スタック — エンタープライズ向け優先順位付きプレイブック [引用日期2026-09-27]
  4. arxiv.org 上的网页 . arxiv.org [引用日期2026-09-27]
  5. semanticscholar.org 上的网页 . Semantic Scholar [引用日期2026-09-27]
  6. Noise in DatasetsThe contemporaneous works of Wang et al . aclanthology.org [引用日期2026-09-27]
  7. We use OpenAI's GPT- 4o API to implement all LLM agents . vldb.org [引用日期2026-09-27]
  8. 2024.findings-acl.641(PDF) . aclanthology.org [引用日期2026-09-27]
  9. semanticscholar.org 上的网页 . Semantic Scholar [引用日期2026-09-27]
  10. 2024.clinicalnlp-1.43(PDF) . aclanthology.org [引用日期2026-09-27]
  11. p3718-zhou(PDF) . vldb.org [引用日期2026-09-27]
  12. arxiv.org 上的网页 . arXiv [引用日期2026-09-27]
  13. pdf . openreview.net [引用日期2026-09-27]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-09-27T14:24:11Z

历史版本

完成率 = 阅读完成量 ÷ 阅读量,分母是阅读量不是浏览次数 —— 关了 JS 的、秒退的都在浏览次数里、不在阅读量里。 详细口径在后台的「数据统计」页。

本条目引用的词条
提示工程 思维链 少样本学习 文本到SQL 上下文学习 少样本学习 思维链 DFIN-SQL
红色的还不存在。红链不是错误——它标出"这个概念被引用了但还没人写"。