论文:DIN-SQL: Decomposed In-Context Learning of Text-to-SQL with Self-Correction
⭐⭐⭐⭐
NeurIPS 2023, arXiv:2304.11015
文章目录
一、论文速读
这篇论文通过对 LLM 做 prompt 来实现 Text2SQL,过程中通过 prompt 让 LLM 分解任务来降低难度,每个子任务通过 in-context learning 让 LLM 来完成,并在完成 SQL 生成后,通过 self-correction 来检查和纠正可能有错误的 SQL。最终,在执行精确度指标上超越了现有的 SOTA 模型。
生成 SQL 被分成四个阶段:
- Schema Linking:输入 NL query 和 DB schema,找出与 query 相关的 tables、columns 以及不同表之间的外键关系
- Classification & Decomposition:将 query 分成了三种不同的难度:EASY、NON-NESTED、NESTED
- SQL Generation:根据不同类型的 query,按照不同的策略来生成对应的 SQL
- Self-correction:通过 prompt 来让 LLM 检查和纠正可能错误的 SQL
1.1 Schema Linking Module
这个 module 输入 NL query 和 DB 的 schema 信息,输出的是将 query 链接到 DB 中的一些信息,具体来说输出就是:
- table 和 columns 的名称:找到 query 中涉及到的 DB 的 table 和 columns 的名称
- 条件值:从查询中提取出用于条件过滤的值,比如在查询“Find the departments with a budget greater than 500”中,需要提取出条件值“500”。
- 外键关系的确定:如果查询涉及到多个表,需要确定它们之间的关系,如通过外键连接。
下面是使用 in-context learning + CoT 来让 LLM 做 schema-linking 的示例:
demostration 的一个示例如下:
Table advisor, columns = [*,s_ID,i_ID]
Table classroom, columns = [*,buildi