【Text2SQL 论文】MAGIC:为 Text2SQL 任务自动生成 self-correction guideline

论文:MAGIC: Generating Self-Correction Guideline for In-Context Text-to-SQL

⭐⭐⭐

莱顿大学 & Microsoft, arXiv:2406.12692

一、论文速读

DIN-SQL 模型中使用了一个 self-correction 模块,他把 LLM 直接生成的 SQL 带上一些 guidelines 的 prompt,让 LLM 进行自我检查并改正这个错误的 SQL。但是这里的 guidelines 是人工手写的,比如下图是 DIN-SQL 中的 self-correction guidelines 的 prompt:

在这里插入图片描述

这篇论文提出了一个可以自动生成 self-correction guidelines 的方法:MAGIC

任务定义:给定 user question、DB schema 和一个错误的 SQL,生成一个 self-correction guidelines,可以 prompt LLM 来纠正错误的 SQL 从而得到纠正正确的 SQL。这个任务就是本论文需要解决的任务——self-correction guideline generation 任务。

输入中的错误的 SQL 就是原先由 LLM 生成的 SQL 但不能正确执行的 SQL。

下图就是 LLM 使用 self-correction guidelines 来纠正错误 SQL 的示例:

在这里插入图片描述

可以看到,LLM 可以根据 guidelines 来检查这个错误 SQL,找出其中的问题从而得到修正后的正确 SQL。

二、MAGIC

假设使用 s ′ s' s 表示 incorrect SQL,使用 s^{gt} 表示 ground-truth SQL。

MAGIC 由 3 个 agent 组成:manager agent、feedback agent 和 correction agent。

2.1 Feedback-correction cycle

给定一个 user question、 s g t s^{gt} sgt s ′ s' s,那 manager agent 就开始一个 feedback-correction cycle,它是一个迭代的过程。

在每一个 iteration 中:

  • manager agent 要求 feedback agent 通过对比 s ′ s' s s g t s^{gt} sgt 来生成一个 feedback 来解释 s ′ s' s 中的错误
  • 之后,manager agent 将接收到的 feedback 给 correction agent,要求它根据 feedback 修正 s ′ s' s 从而生成一个新的 revised SQL

重复进行迭代,直到 revised SQL 正确或者迭代次数达到最大限制。

2.2 Revising agents’ instruction

刚刚 feedback-correction cycle 是说了 manager agent 交互的流程来不断修正 SQL。

这里是在说 manager agent 在于另外两个 agent 交互时,所使用的 prompt 也是在不断被修正的。

在 feedback-correction cycle 的第一个 iteration 中,manager agent 使用了两个 predefined prompts 来与 feedback-agent 和 correction-agent 做的交互。但是如果一次 iteration 后 s ′ s' s 仍然没有被修正正确,那么 manager agent 也要修正这些 predefined prompts。

那 manager agent 怎么修正 prompts 呢?—— 使用一个专门设计的 prompt 来提示 LLM 来修正 predefined prompts。

2.3 Guideline generation

当 correction agent 每次修正成功一个 SQL 后,manager agent 会记下来这一轮 iteration 中由 feedback agent 生成的 feedback。

因为是这一个 feedback 来让 correction agent 修正正确的,所以这一个 feedback 是指出了 SQL 错误的关键,因此让 manager agent 记下来。

每个 data point 会在经过一个 feedback-correction cycle 后记录一个 feedback 到 memory 中,当 manager agent 记录的 feedbacks 累计达到 k k k 个之后,会将这一 batch 的 k 个 feedbacks 一同形成一个 self-correction guideline。

这个 self-correction guideline 会被用于之后的 Text2SQL 的 self-correction 过程中,直到又累积到 k 个 feedbacks 后重新触发生成一个 self-correction guideline。

利用 k 个 feedbacks 来生成 guideline 的方法,就是使用一个专门的 prompt 来提示 LLM 生成。

在第一个 batch 中,还没有可用的 guideline,这时 manager agent 会先初始化一个 guideline,之后的每个 batch,manager agent 会更新现在的 guideline。

三、所有用到的 prompts

这里总结一下整个方法所使用的 prompts:

  • 两个 predefined prompts:这两个 prompts 用来一开始时 manager agent 用来与 feedback agent 和 correction agent 进行交互。
  • manager agent 用来修正 predefined prompts 的两个 prompts:一个 prompt 用来让 manager agent 修正与 feedback agent 交互所用的 prompt,一个是修正与 correction agent 的。
  • manager agent 用来将 k 个 feedbacks 生成出一个 self-correction guideline 的 prompt。

四、实验

以往的 DIN-SQL 中就有一个 self-correction module,这个模块使用一个 guideline 来让 LLM 修正错误的 SQL,但这个模型中的 guideline 是人工设计的。这篇论文尝试将这个模块的 guideline 更换为使用本文提出的自动生成的 guideline,发现整个 Text2SQL 模型的表现得到了很大的提升,从而证明了方法的有效性。

五、总结

这篇论文着重指出了 in-context learning 的 Text2SQL 任务中 self-correction 的新颖视角,将提升 Text2SQL 中的 self-correction 作为一个单独的任务,克服了以往方法需要手工设计 self-correction guideline 的缺点。

同时,这篇论文还解决了自动修复人类生成的错误 SQL 的重要任务,展示了 LLM 进行自我校正的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【跟我学RISC-V】(三)openEuler特别篇

写在前面 这篇文章是跟我学RISC-V指令集的第三期,距离我上一次发文已经过去一个多月了,在这个月里我加入了oerv的实习项目组,并且还要准备期末考试,比较忙,所以更新频率不高,不过对于Linux kernel和RISC-V…

Opencv学习项目6——pyzbar

在之前我们学习了解码图片中的二维码,这次我们开启摄像头来解码视频中二维码 开启摄像头 # 打开摄像头 cap cv2.VideoCapture(0) cap.set(3, 640) # 设置摄像头画面宽度 cap.set(4, 480) # 设置摄像头画面高度 我使用的是笔记本上的摄像头来进行的,…

腰背肌筋膜炎的症状及治疗

腰背肌筋膜炎的症状 一、疼痛特点: 主要表现为腰背部弥漫性钝痛,尤以两侧腰肌及髂嵴上方更为明显。疼痛特点为晨起痛,日间轻,傍晚复重。长时间不活动或活动过度均可诱发疼痛,病程长,且因劳累及气候变化而发…

如何运用Midjourney探究新中式美学?

新中式美学最近真是越来越火了,把传统中式元素和现代设计结合起来,不仅看着舒服,还特别有文化韵味。 1. 研究和准备 首先,得先弄清楚什么是新中式美学。说白了,就是把传统中式元素和现代设计结合起来。你可以看看相关…

#03动态规划

要点: 动态规划方法与贪心法、分治法的异同; 动态规划方法的基本要素与求解步骤; 动态规划方法的应用。 难点: 如何根据问题的最优子结构性质构造构造动态规划方法中的递归公式或动态规划方程。 动态规划的基本思想 动态规…

算法与数据结构面试宝典——迭代与递归详解与示例(C#,C++)

文章目录 一、迭代与递归简介迭代递归 二、迭代与递归的应用场景迭代递归 三、迭代与递归的优缺点迭代优缺点递归优缺点 四、迭代与递归的示例及面试策略示例1:斐波那契数列(迭代实现)示例2:快速排序(递归实现&#xf…

大学网页制作作品1

作品须知:1.该网页作品预计分为5个页面(其中1个登录页面,1个首页主页面,3个分页面),如需要可自行删改增加页面。(总共约800行html,1200行css,100行js) 2.此网页源代码只用于学习和模…

R语言——数据与运算

练习基本运算&#xff1a; v <- c(2,4,6,9)t <- c(1,4,7,9)print(v>t)print(v < t)print(v t)print(v!t)print(v>t)print(v<t) v <- c(3,1,TRUE,23i)t <- c(4,1,FALSE,23i)print(v&t)print(v|t)print(!v)v <- c(3,0,TRUE,22i)t <- c(1,3,T…

【启明智显产品分享】Model4 工业级HMI芯片详解(三):高安全、防抄板

Model4 工业级HMI芯片详解系列专题&#xff08;三&#xff09;【高安全、防抄板】 随着物联网和智能设备的快速发展&#xff0c;设备安全认证的需求日益迫切。硬件安全认证和保护在确保设备和身份安全中发挥着不可替代的作用&#xff0c;需要与软件安全相结合&#xff0c;共同构…

[Python人工智能] 四十六.PyTorch入门 (1)环境搭建、神经网络普及和Torch基础知识

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别研究。这篇文章将介绍PyTorch入门知识。前面我们的Python人工智能主要以TensorFlow和Keras为主,…

STM32--IAP程序升级实验

1. STM32程序升级方法 1.1 ST-link / J-link下载 将编译生成的hex文件使用ST-Link/J-Link工具直接下载进 Flash 即可。Keil中点击下载也能一键下载。下载后的代码会存放在Flash的起始地址0x0800 0000处。 简单补充一句&#xff0c;bin文件和hex文件的区别&#xff1a; bin文…

ARM day1练习 求1~100内的和

题目要求:用ARM汇编语言实现1~100之间之和&#xff08;5050 0x13BA&#xff09; .text 声明以下内容是文本段的内容 .global _start .global声明_start标签是一个全局标签_start:mov r1,#0x0 r1 summov r2,#0x1 r2 ifun: 加法函数cmp r2,#100 r2中的值和100作比较add…

Matlab基础篇:数据输入输出

前言 数据输入和输出是 Matlab 数据分析和处理的核心部分。良好的数据输入输出能够提高工作效率&#xff0c;并确保数据处理的准确性。本文将详细介绍 Matlab 数据输入输出的各种方法&#xff0c;包括导入和导出数据、数据处理和数据可视化。 一、导入数据 Matlab 提供了多种方…

Go自定义数据的序列化流程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【计算机毕业设计】167校园失物招领微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

导出 S 参数扫描结果供 INTERCONNECT 使用

导出 S 参数扫描结果供 INTERCONNECT 使用 正文正文 有时候,对于 FDTD 无法直接进行仿真的大型仿真链路,我们需要使用 FDTD 针对单个小的模块进行仿真,再将得到的 S 参数结果导入到 INTERCONNECT 中使用,最终完成整个链路的仿真。通常完成 S 参数扫描后其状态如下图所示:…

QT拖放事件之八:通过全局剪切板中的接口QClipboard::mimeData()来获取MIME类型数据

1、演示效果 首先向剪切板写入数据,然后点击paste按钮进行从全局剪切板中 获取 MIME数据。。。 2、核心代码 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

非强化学习的对齐方法

在文章《LLM对齐“3H原则”》和《深入理解RLHF技术》中&#xff0c;我们介绍了大语言模型与人类对齐的“3H原则”&#xff0c;以及基于人类反馈的强化学习方法&#xff08;RLHF&#xff09;&#xff0c;本文将继续介绍另外一种非强化学习的对齐方法&#xff1a;直接偏好优化&am…

kafka--发布-订阅消息系统

1. Kafka概述 1. kafka是什么 kafka是分布式的、高并发的、基于发布/订阅模式的消息队列软件系统。 kafka中的重要组件 Producer&#xff1a;消息生产者&#xff0c;发布消息到Kafka集群的终端或服务Consume&#xff1a;消费者&#xff0c;从Kafka集群中消费消息的终端或服…

安达发|生产制造业怎么做好一体化生产计划排产?

在生产制造业中&#xff0c;一体化生产计划排产是确保生产效率和产品质量的关键。要实现这一目标&#xff0c;企业需要采用高级排产软件&#xff08;APS&#xff09;来优化生产流程。以下是如何利用APS软件做好一体化生产计划排产的详细步骤和建议&#xff1a; 1. 需求分析与数…