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解析的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/435358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue+SpringBoot打造考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

【Flutter 面试题】什么是Flutter里的Key?有哪些分类有什么使用场景?

【Flutter 面试题】什么是Flutter里的Key?有哪些分类有什么使用场景? 文章目录 写在前面解答补充说明ValueKey 示例ObjectKey 示例UniqueKey 示例GlobalKey 示例 写在前面 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者&am…

Docker-自定义镜像

目录 1 前言 2 构建java应用的步骤及镜像结构图 2.1 构建步骤 2.2 镜像结构图 3 Dockerfile常用指令 4 Dockerfile的内容举例 4.1 一般形式 4.2 一般形式的优化 5 构建镜像 5.1 指令 5.2 实操 5.2.1 加载jdk镜像(基础镜像) 5.2.2 构建我们的镜像 5.2.3 使用我们的…

Excel中怎么求排名

使用Rank函数 1.在需要显示排名的单元格内,输入“RANK(数值,数值列表,排序方式)” 2.将“数值”替换为需要计算排名的单元格的地址,例如E2单元格。 3.将“数值列表”替换为排名的数值范围,例…

C++写食堂菜品管理系统

说明:本博文来自CSDN-问答板块,题主提问。 需要:学校拟开发一套食堂菜品管理系统,以便对菜品和同学们的评价进行管理,其中包含如下信息: 商户:商户名称、柜面位置、电话…… 菜品:菜品编号、菜品名称、价格、所属商户…… 学生:注册账号、昵称、电话…… 食堂里的商户…

ubuntu 20.04 安装 huggingface transformers 环境

1. 安装 cuda 大多数新发布的大语言模型使用了较新的 PyTorch v2.0 版本,Pytorch 官方认为 CUDA 最低版本是 11.8 以及匹配的 GPU 驱动版本。详情见Pytorch官方 如下图: 1.1 下载 cuda cuda 12.1 官方网站: 下载: $wget htt…

答题pk小程序源码技术大解析

答题pk小程序源码解析 在数字化时代,小程序因其便捷性、即用性而受到广泛欢迎。其中,答题pk小程序更是成为了一种寓教于乐的现象。它不仅为用户提供了趣味性的知识竞技平台,还为企业、教育机构等提供了互动营销和知识传播的新途径。本文将对…

异步编程实战:使用C#实现FTP文件下载及超时控制

博客标题: 异步编程实战:使用C#实现FTP文件下载及超时控制 如果你的函数不是async,你仍然可以实现相同的超时功能,但你将不得不依赖更多的同步代码或使用.Result或.GetAwaiter().GetResult()来阻塞等待任务完成,这可能导致死锁的风…

【C语言】Infiniband驱动mlx4_load_one函数

一、中文注释 以下是针对mlx4_load_one函数的主要代码路径的中文注释。该函数是用于加载并初始化Mellanox网络设备的驱动函数。通过注释,可以了解函数在初始化过程中执行的关键步骤。 /* mlx4_load_one函数:用于加载并初始化PCI设备(例如网…

Rust入门:Rust如何调用C静态库的函数

关于Rust调用C,因为接口比较复杂,貌似Rust不打算支持。而对于C函数,则相对支持较好。 如果要研究C/Rust相互关系的话,可以参考: https://docs.rs/cxx/latest/cxx/ Rust ❤️ C 这里只对调用C静态库做一个最简短的介…

安卓部分手机使用webview加载链接后白屏(Android低版本会出现的问题)

前言 大爷:小伙我这手机怎么打开你们呢这个是白屏什么都不显示。 大娘:小伙我这也是打开你们呢这功能,就是一个白屏什么也没有,你们呢的应用不会有病毒吧。 小伙:我的手机也正常; 同事:我的也正…

4.Rust中的所有权(Rust成名绝技)

Rust成名绝技 Rust 之所以能成为万众瞩目的语言,就是因为其内存安全性。在以往,内存安全几乎都是通过 GC 的方式实现,但是 GC 会引来性能、内存占用以及全停顿等问题,在高性能场景、实时性要求高和系统编程上是不可接受的&#x…

seo蜘蛛池的概念!蚂蚁SEO

蜘蛛池是一种特殊的网络营销技术,它的主要作用是吸引搜索引擎爬虫,提高网站的收录和排名,从而增加网站的流量和曝光度。 蚂蚁SEO是一个SEO工具,可以帮助您提高网站权重,吸引更多的搜索引擎爬虫,提高网站的…

idea2023版使用废弃类没有删除线处理方法

idea2023版使用废弃类没有删除线处理方法 新版Idea使用废弃类时,默认是黄色警告处理方法1. 打开file -> setting2. 编辑(Editor) -> 检查(Inspections) -> 搜索Deprecated API usage 新版Idea使用废弃类时,默认是黄色警告 处理方法 1. 打开file -> setting 2. 编…

Igraph入门指南 2

3、图的基本要素——边(Edge|Arc) 图的最本质的内容是一种二元关系,如果给这种二元关系赋予一个方向,就产生了有向图和无向图的分类,在教材中,无向的边叫Edge,有向的边叫Arc,另外,根据两个顶点…

【数据集】MSWEP(多源加权集合降水)再分析数据

MSWEP全球降水数据 数据概述数据下载参考数据概述 MSWEP(Multi-Source Weighted-Ensemble Precipitation)降水数据集是一种高分辨率、全球覆盖的降水数据产品,它融合了多种来源的降水信息,包括卫星遥感数据、雷达观测、地面气象站观测数据以及数值天气预报模型的输出。MSW…

Java基于微信小程序的校园失物招领小程序

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

超分辨率(1)--基于GAN网络实现图像超分辨率重建

目录 一.项目介绍 二.项目流程详解 2.1.数据加载与配置 2.2.构建生成网络 2.3.构建判别网络 2.4.VGG特征提取网络 2.5.损失函数 三.完整代码 四.数据集 五.测试网络 一.项目介绍 超分辨率(Super-Resolution),简称超分&#xff08…

智慧安防视频远程监控平台EasyCVR集成后播放只有一帧画面是什么原因?

智慧安防视频监控平台EasyCVR能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,平台可支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议…

利用GPT开发应用002:Transformer架构及其在LLMs中的作用

文章目录 一、交叉注意力(cross-attention)二、自注意力(self-attention)三、Transformer优势四、Transformer组件五、LLMs演变过程 Transformer架构彻底改变了自然语言处理。它大量采用了名为交叉注意力(cross-attent…