【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 进行自我校正的能力。
相关文章:

【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 的 p…...

2024 年 8 款最佳建筑 3D 渲染软件
你现在使用的3D 渲染软件真得适合你吗? 在建筑和室内渲染当中,市面上有许多3D渲染软件可供选择。然而,并不是每款软件都适合你的需求。本指南将重点介绍2024年精选的8款最佳建筑3D渲染软件,帮助你了解不同的选项,并选…...

MAB规范(3):Chapter6 Glossary 术语表
第6章 - 术语表 此章不做过多的批注,都是些简单的术语解释。...

40python数据分析numpy基础之diag处理矩阵对角线元素
1 python数据分析numpy基础之diag处理矩阵对角线元素 python的numpy库的diag(v,k0)函数,以一维数组的形式返回方阵的对角线元素,或将一维数组转换为方阵(非对角线元素为0)。 方阵:方形矩阵,行数和列数相等…...

ffmpeg+nginx+video实现rtsp流转hls流,web页面播放
项目场景: 最近调试海康摄像头需要将rtsp流在html页面播放,因为不想去折腾推拉流,所以我选择ffmpeg转hls流,nginx转发,html直接访问就好了 1.首先要下载nginx和ffmpeg 附上下载地址: nginx nginx news ffmpeg htt…...

1、Redis系列-Redis高性能原理详解
Redis高性能原理详解 Redis是一款高性能的内存数据库,广泛应用于需要快速读写访问的数据密集型应用中。它的高性能得益于多方面的设计和优化。以下是Redis高性能实现的详细解释: 1. 单线程架构 Redis采用单线程架构来处理客户端请求,这与传…...

18.枚举
学习知识:枚举类型、相关的使用方法 Main.java: public class Main {public static void main(String[] args) {myenum[] colorlist myenum.values();//获取枚举中所有对象的引用数组for (myenum one : colorlist){System.out.println(one.toString(…...

全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展
6月21日,省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春,四川邮电职业技术学院党委副书记、校长冯远洪,四川邮电职业技术学院党委委员、副校长程德杰等出席…...

2-16 基于matlab的动载荷简支梁模态分析程序
基于matlab的动载荷简支梁模态分析程序,可调节简支梁参数,包括截面宽、截面高、梁长度、截面惯性矩、弹性模量、密度。输出前四阶固有频率,任意时刻、位置的响应结果。程序已调通,可直接运行。 2-16 matlab 动载荷简支梁模态分析 …...

AI大模型的核心
前言 没错,AI大模型的核心成功因素通常可以归结为三大要素:大数据、大算力和强算法。这三个因素相辅相成,共同推动了现代人工智能技术的发展。 1. 大数据 • 定义:指的是涵盖广泛领域的海量数据,包括文本、图像、音…...

【Android面试八股文】ViewHolder为什么要被声明成静态内部类?
文章目录 ViewHolder为什么要被声明成静态内部类?1. 避免隐式引用导致的内存泄漏2. 提高性能3. 代码可读性和维护性实例代码总结ViewHolder为什么要被声明成静态内部类? 将 ViewHolder 声明为静态内部类有几个重要的原因,这样做可以提高性能并避免潜在的内存泄漏。下面是详…...

Android 11 系统OTA升级到旧版本(去除升级时间戳校验)
简介 由于客户要求能够通过OTA升级到旧版本因此探寻反向升级的方法。 方法一:进入recover模式 adb reboot recovery 点击Apply update from SD card 然后选择以前的OTA升级包就可以了。这种方式实测可以升级到旧的版本。但是我们的客户是通过在线升级软件进行更新…...

更新表的统计信息并清空缓存--DM8达梦数据库
更新表的统计信息并清空缓存--DM8达梦数据库 环境介绍1 收集 <表> 上所有对象信息,含索引2 清理缓存的执行计划3 达梦数据库学习使用列表 环境介绍 在某些环境刚完成数据迁移, 10万行以上大表数据量有修改1/3 ,查询条件已经创建索引,执行计划不好,或执行计划…...

【前后端实现】AHP权重计算
AHP权重计算: 需求:前端记录矩阵维度、上三角值,后端构建比较矩阵、计算权重值并将结果返回给前端 比较矩阵构建 如果你想要根据上三角(不包括对角线)的值来构建对称矩阵,那么你可以稍作修改上述的generate…...

K8S日常运维手册
Kubernetes(简称 K8S)是一种广泛使用的容器编排平台,能够自动化部署、扩展和管理容器化应用。对于运维人员来说,掌握 Kubernetes 的日常运维技能是确保系统稳定运行的关键。本文将介绍一些 Kubernetes 日常运维的基本操作与技巧&a…...

现在的Java面试都这么扯淡了吗?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!开发兼过半年面试官 刚开始…...

安全加固 MariaDB 和 MySQL 数据库
安全加固 MariaDB 和 MySQL 数据库 在今天的网络环境中,保护数据库安全至关重要,特别是像 MariaDB 和 MySQL 这样的流行数据库。本文将介绍一些关键的安全加固步骤,以确保数据库系统的安全性和稳定性。 1. 数据库版本和基础设置 首先&…...

【计算机毕业设计】167校园失物招领微信小程序
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...

yum的概念、相关命令、ftp http部署步骤;NFS共享文件操作步骤
目录 yum 配置文件 缓存功能操作步骤 创建并配置本地仓库文件 yum相关命令 yum install __ yum repolist yum list __ yum info __ yum search __ yum whatprovides __ yum remove __ yum -y update __ yum history yum grouplist yum groupinstall "__&q…...

Spire.PDF for .NET【文档操作】演示:如何删除 PDF 中的图层
借助Spire.PDF,我们可以在新建或现有pdf文档的任意页面中添加线条、图像、字符串、椭圆、矩形、饼图等多种图层。同时,它还支持我们从pdf文档中删除特定图层。 Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PD…...

【c语言】二级指针
1,定义 本质还是从指针的角度去理解,只不过存的指针的值 2,使用方法...

心理健康测试系统设计
心理健康测试系统设计需要综合考虑多个方面,以确保系统的准确性、易用性和有效性。以下是一个心理健康测试系统设计方案: 一、设计目标 准确性:确保测试结果能够准确反映被测者的心理健康状况。 易用性:设计简洁明了的界面和操作…...

webcomponents学习
一、新建index.html文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>…...

2024会展行业发展趋势预测
在当今这个数字化浪潮汹涌的时代,会展行业也迎来了自己的变革时刻。 根据《2023中国会展主办机构数字化调研报告》,我们可以清晰地看到几个显著的趋势: 首先,数字化转型已经不再是一道选择题,而是必答题。 超过90%的…...

达梦(DM8)数据库备份与还原(逻辑备份)二
一、达梦数据库的逻辑备份分四种级别的导出(dexp)与导入(dimp)的备份 第一种是:数据库级:导出或导入数据库中所有的对象。主要参数是:FULL 第二种是:用户级别:导出或导…...

ThreeJS-截屏下载pdf或者图片时白屏
JS-页面截图下载为pdf 关于如何下载为 pdf 在上面的这篇文章中有写,大家可以看下,下载图片代码在最下面 这时我们发现 three 部分是空白的如下: 这就多少有点尴尬了,这时我们习惯性的看下后台报错 是不是发现了惊喜,…...

redis以后台的方式启动
文章目录 1、查看redis安装的目录2、Redis以后台的方式启动3、通过客户端连接redis4、连接后,测试与redis的连通性 1、查看redis安装的目录 [rootlocalhost ~]# cd /usr/local/redis/ [rootlocalhost redis]# ll 总用量 112 drwxr-xr-x. 2 root root 150 12月 6…...

力扣随机一题 哈希表 排序 数组
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2491.划分技能点相等的团队【中等】 题目: 给你一个正整数数组…...

昇思25天学习打卡营第01天|基本介绍
作为曾经的javaer,本着不断学习的初心,报名了昇思25天的课程,希望自己能学会点东西的目的。 昇思MindSpore介绍 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,…...

问题:1、金属基复合材料界面的物理结合是指 #学习方法#媒体
问题:1、金属基复合材料界面的物理结合是指 A.与化学作用有关,既有化学键力存在,又有范德华力存在 B.是一种纯的物理作用,与化学作用无关,即无化学键力存在,但有范德华力存在 C&a…...