Text-to-SQL任务中的思维链(Chain-of-thought)探索

2024-03-06 20:04

本文主要是介绍Text-to-SQL任务中的思维链(Chain-of-thought)探索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导语

在探索LLM在解决Text-to-SQL任务中的潜能时,本文提出了一种创新的‘问题分解’Prompt格式,结合每个子问题的表列信息,实现了与顶尖微调模型(RASAT+PICARD)相媲美的性能。

  • 会议:EMNLP 2023
  • 链接:https://arxiv.org/abs/2305.14215
  • 机构:The Ohio State University

1 引言

在探索大型语言模型(LLMs)处理文本到SQL解析任务的研究中,少数示例学习(in-context learning)的潜力引人注目。虽然这种方法在许多NLP任务上展现了出色的性能,但在文本到SQL解析上,它还有很大的提升空间。研究表明,提升LLMs在此任务上的性能关键在于增强其多步推理能力。即使是简单问题,LLMs也需要理解与数据库模式的联系,并构造正确的SQL子句。

本文聚焦于如何通过思维链(CoT)风格的提示来提升LLMs的多步推理能力。作者特别探索了两种CoT风格提示方法:

  • 直接提供所有推理步骤的思维链提示(Chain-of-thought prompting),
  • 分阶段逐步解决问题的从简到繁提示(Least-to-most prompting)。

通过对比这两种方法,作者发现直接应用它们在文本到SQL解析中容易产生错误传播,并且从简到繁的方法在计算上更加昂贵。因此,本文提出了一种新的CoT风格提示方法:问题分解提示(QDecomp)。与思维链提示相似,QDecomp一次性生成一系列推理步骤和问题,但避免了产生中间执行步骤。作者还提出了QDecomp的一个变体(QDecomp+InterCOL),它在每个子问题中逐步引入表和列名,以帮助LLMs更好地理解数据库模式。

image.png

在Spider和Spider Realistic这两个跨领域文本到SQL数据集上的评估显示,与标准提示方法相比,QDecomp+InterCOL在Spider开发集上带来了5.2点,而在Spider Realistic集上带来了6.5点的绝对提升。这一发现表明,迭代式提示可能不是必需的,而且提供关键模式信息的较少详细的推理步骤在减少错误传播方面更有效。

2 相关工作

大型语言模型(LLMs)和思维链(CoT)风格提示在自然语言处理中显示出巨大潜力,特别是在需要多步推理的任务上。虽然LLMs在少数示例学习中表现出色,但它们在处理需要多步推理的任务,如文本到SQL解析时,仍面临挑战。为了提升LLMs在这一领域的性能,思维链提示方法被提出,通过在提示中明确描述中间推理步骤来改善LLMs的准确性。此外,从简到繁提示也被提出来解决复杂问题,它通过先生成问题的子问题列表,再逐个解决子问题来得出正确答案。然而,如何有效地将这些CoT风格提示方法应用于文本到SQL解析尚未被充分探索。

3 Prompting for Multi-Step Reasoning in Text-to-SQL、

3.1 思维链提示

思维链提示旨在通过生成一系列中间步骤来提升LLMs的推理能力,进而预测最终答案。对于文本到SQL解析,这意味着需要构建出预测SQL查询的推理步骤。本研究中,每个SQL子句都被用来构成思维链的一个推理步骤,通过自然语言模板描述每个SQL子句,并按照SQL查询的逻辑执行顺序串联起来。

3.2 从简到繁提示

与思维链提示不同,从简到繁提示通过两阶段来处理复杂问题:问题简化和问题解决。在问题简化阶段,提示LLM从原始复杂问题中生成一系列子问题。在问题解决阶段,LLM逐个处理每个子问题,逐步构建最终解决方案。通过这种方法,LLM能够专注于解析每个子问题,从而降低原始问题的复杂度。

3.3 问题分解提示

本研究提出了一种新的提示方法:问题分解提示(QDecomp)。与思维链相似,QDecomp一次性生成中间推理步骤和最终SQL查询。不同的是,QDecomp不使用SQL的逻辑执行过程,而是遵循从简到繁提示中的问题简化阶段,指导LLM将原始复杂问题分解为推理步骤。此外,还提出了QDecomp的一个变体QDecomp+InterCOL,以缓解文本到SQL解析中众所周知的表/列链接问题。在这个变体中,增加了上下文示例,提示LLM在生成每个子问题时识别任何相应的表/列名称。

除了上述提示方法外,实验中还包括标准提示方法作为基线。这种方法使用问题-SQL对作为上下文示例,直接提示LLM将自然语言问题解析为其对应的SQL查询,而不生成任何中间推理步骤。

4 实验

  • 数据集
    • Spider(Yu et al., 2018)
    • Spider Realistic(Deng et al., 2021)
  • 上下文示例选择:为了展示问题分解提示的鲁棒性,考虑了两种选择上下文示例的方式:
    • 随机选择;
    • 基于难度的选择,一共设计了3种选取策略:
      • G1:各个难度(Easy、Medium、Hard、Extra Hard)平均选择;
      • G2:Hard、Extra Hard平均选择;
      • G3:只选取Extra Hard。
  • 提示格式:探索了Rajkumar等人(2022)引入的两种提示格式(如下图):
    • API文档格式;
    • Create Table + Select 3。
  • 评估指标:使用执行准确性来评估。

image.png

5 结果分析

5.1 主要结果

在Spider开发集和Spider Realistic上的综合实验表明,作者提出的问题分解(QDecomp)提示方法及其变体(QDecomp+InterCOL)一致地优于思维链和从简到繁提示。QDecomp+InterCOL在Spider开发集上达到68.4%的测试套件准确率,而在Spider Realistic集上达到56.5%。相比标准提示,分别带来了5.2%和6.5%的绝对增益。此外,使用极难(G3)上下文示例时,可以将QDecomp+InterCOL提示的执行准确率提高到78.2%,与强大的微调文本到SQL解析器RASAT+PICARD相当。

image.png

image.png

5.2 错误分析

对四种提示方法进行了量化错误分析,使用Spider开发集上的组件匹配准确度作为细粒度的精确匹配度量。分析显示,思维链提示由于提供了非常详细的推理步骤,导致更多的错误传播问题。QDecomp+InterCOL提示优于这两种方法,因为它不指导Codex生成详细的推理步骤或中间SQL查询。

5.3 提示设计的鲁棒性

为了验证主要实验中的结论,作者进行了额外实验,测试了所有四种提示方法的鲁棒性。实验结果表明,QDecomp+InterCOL提示在所有设置下均表现最佳,展现了其鲁棒性。然而,从简到繁提示并没有从G1或G3示例中受益,反而显示了准确度下降。

image.png

image.png

5.4 其他文本到SQL数据集上的结果

除了Spider数据集外,作者还在其他数据集上比较了QDecomp(+InterCOL)与标准和从简到繁提示,包括GeoQuery、IMDB和Yelp。实验结果显示,QDecomp(+InterCOL)在所有三个数据集上始终实现最佳性能。

6 总结和未来工作

本文系统地探讨了CoT风格提示方法,以增强LLMs在文本到SQL解析任务中的推理能力。作者设计了推理步骤,以适用于两种现有方法——思维链和从简到繁提示,并提出了新的问题分解提示方法。通过全面的实验展示了:(1) 在文本到SQL解析中,迭代式提示可能并非必要;(2) 使用详细的推理步骤(在思维链中)或中间SQL查询(在从简到繁提示中)容易出错,从而加剧了错误传播问题。

本文的问题分解提示是减轻LLMs多步推理中错误传播问题的首次尝试之一,作者强调这个问题是一个有意义的未来研究方向。例如,可以通过将本文的方法整合到交互式语义解析框架中来进一步减少中间推理步骤中的错误。由于分解后的子问题是用自然语言表述的,这种交互式方法使数据库用户能够轻松发现每个子问题中的错误。然后,他们可以通过直接编辑子问题或提供自然语言反馈与LLMs合作,这应该会进一步提高文本到SQL解析的准确性。

这篇关于Text-to-SQL任务中的思维链(Chain-of-thought)探索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781170

相关文章

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例