【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 进行自我校正的能力。

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

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

相关文章

计算机组成原理课程设计报告

有关计算机组成原理课程设计报告如下题材,其包含报告和代码 16位ALU设计 动态LED动态显示屏设计 海明码编码设计编码流水传输 单周期MIPS控制器设计 阵列乘法器设计 Cache映射机制与逻辑实现 我们以6x6位阵列乘法器设计的报告为例为大家讲述一下我们这次的课程设计 …

网络爬虫Xpath开发工具的使用

开发人员在编写网络爬虫程序时若遇到解析网页数据的问题,则需要花费大量的时间编 写与测试路径表达式,以确认是否可以解析出所需要的数据。为帮助开发人员在网页上直接 测试路径表达式是否正确,我们在这里推荐一款比较好用的 XPath 开发工…

关于关闭防火墙后docker启动不了容器

做项目的时候遇到个怪事,在Java客户端没办法操作redis集群。反复检查了是否运行,端口等一系列细节的操作,结果都不行。 根据提示可能是Linux的防火墙原因。于是去linux关闭了防火墙。 关闭后果不其然 可以操作reids了,可是没想到另…

浏览器断点调试(用图说话)

浏览器断点调试(用图说话) 1、开发者工具2、添加断点3、查看变量值 浏览器断点调试 有时候我们需要在浏览器中查看 html页面的js中的变量值。1、开发者工具 打开浏览器的开发者工具 按F12 ,没反应的话按FnF12 2、添加断点 3、查看变量值

高考填报志愿攻略,5个步骤选专业和院校

在高考完毕出成绩的时候,很多人会陷入迷茫中,好像努力了这么多年,却不知道怎么规划好未来。怎么填报志愿合适?在填报志愿方面有几个内容需要弄清楚,按部就班就能找到方向,一起来了解一下正确的步骤吧。 第…

【C语言】解决C语言报错:Dangling Pointer

文章目录 简介什么是Dangling PointerDangling Pointer的常见原因如何检测和调试Dangling Pointer解决Dangling Pointer的最佳实践详细实例解析示例1:释放内存后未将指针置为NULL示例2:返回指向局部变量的指针示例3:指针悬空后继续使用示例4&…

37岁,被裁员,失业三个月,被面试官嫌弃“太水”:就这也叫10年以上工作经验?

今年部门要招两个自动化测试,这几个月我面试了几十位候选人。发现一个很奇怪的现象,面试中一问到元素定位、框架api、脚本编写之类的,很多候选人都对答如流。但是一问到实际项目,比如“项目中UI自动化和接口自动化如何搭配使用&am…

【研究】国内外大模型公司进展

2022年11月,OpenAI推出基于GPT-3.5的ChatGPT后,引发全球AI大模型技术开发与投资热潮。AI大模型性能持续快速提升。以衡量LLM的常用评测标准MMLU为例,2021年底全球最先进大模型的MMLU 5-shot得分刚达到60%,2022年底超过70%&#xf…

JAVA小知识29:IO流(上)

IO流是指在计算机中进行输入和输出操作的一种方式,用于读取和写入数据。IO流主要用于处理数据传输,可以将数据从一个地方传送到另一个地方,例如从内存到硬盘,从网络到内存等。IO流在编程中非常常见,特别是在文件操作和…

正版软件 | Copywhiz 6:革新您的文件复制、备份与管理体验

在数字化时代,文件管理的效率直接影响到我们的生产力。Copywhiz 6 最新版本,带来了前所未有的文件处理能力,让复制、备份和组织文件变得轻而易举。 智能选择,只复制更新内容 Copywhiz 6 的智能选择功能,让您只需几次点…

10--7层负载均衡集群

前言:动静分离,资源分离都是在7层负载均衡完成的,此处常被与四层负载均衡比较,本章这里使用haproxy与nginx进行负载均衡总结演示。 1、基础概念详解 1.1、负载均衡 4层负载均衡和7层负载均衡是两种常见的负载均衡技术&#xff…

docker 容器设置中文环境

1.容器中安装和设置 1.1.进入容器查看已有语言包 locale -a 默认情况下: 1.2 安装中文语言环境 如果没有zh_CN.utf8就安装。 方式1: #直接安装中文语言包 apt-get install -y language-pack-zh-hans 方式2: #安装中文语言环境 apt-g…

小白学python(第二天)

哈喽,各位小伙伴们我们又见面了,昨天的文章吸收得如何?可有不懂否?如有不懂可以在品论区留言哦,废话不多说,开始今天的内容。 字符及字符串的续讲 字符:英文字母,阿拉伯数字&#x…

引领AI新时代:深度学习与大模型的关键技术

文章目录 📑前言一、内容概述二、作者简介三、书籍特色四、学习平台与资源 📑前言 在数字化浪潮席卷全球的今天,人工智能(AI)和深度学习技术已经渗透到我们生活的方方面面。从智能手机中的智能语音助手,到…

高考填报志愿(选专业),为什么要尊重孩子的选择 ?

没有哪一位父母不希望自己的孩子能够考到理想的大学,甚至光宗耀祖,然而一些比较专制的家长,往往在孩子填报志愿的时候表现出很强的控制欲,希望将自己的意愿强加于孩子身上,并没有考虑到他们的兴趣是什么。其实&#xf…

ARM day1练习 求1~100内的和

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

oracle11g rac静默dbca创建实例反复报监听问题

问题 处理方法 手动创建监听程序 重新静默dbca建库

XSS漏洞—XSS平台搭建与打cookie

一、跨站脚本攻击漏洞接收平台 推荐两个: 1)xsser : XSS平台 - (支持http/https)XSS Platform 2)蓝莲花 :GitHub - firesunCN/BlueLotus_XSSReceiver xsser: BlueLotus&#xff…

LLC开关电源开发:如何使用信号发生器与示波器设计环路

如何使用信号发生器与示波器设计环路 一、主回路二、小信号注入三、LLC 数字环路计算书一、主回路 如下图所示为系统整体架构,包括 LLC 主功率线路,采集线路、RC 滤波线路,DSP 运算。DSP 通过采集由差分运放转化而来的输出电压量(一阶 RC 滤除线路杂波),经数字环路产生特…

【嵌入式Linux】<总览> 进程间通信(更新中)

文章目录 前言 一、管道 1. 概念 2. 匿名管道 3. 有名管道 二、内存映射区 1. 概念 2. mmap函数 3. 进程间通信(有血缘关系) 4. 进程间通信(没有血缘关系) 5. 拷贝文件 前言 在文章【嵌入式Linux】<总览&a…