【Text2SQL】PET-SQL:在Spider基准测试中取得了SOTA
解读:PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency
这篇论文介绍了一个名为 PET-SQL 的文本到 SQL(Text-to-SQL)框架,旨在通过增强提示(prompt)和利用不同大型语言模型(LLM)之间的交叉一致性来提高性能。PET-SQL 框架在 Spider 基准测试中取得了 87.6% 的执行准确率,这是目前已知的最佳结果。
1. 方法论

1.1 Prompting(提示)
在指导大型语言模型(LLM)生成 SQL 查询时,提示(prompt)的风格或模板对模型的性能有显著影响。作者提出了一种称为参考增强表示(Reference-enhanced Representation, REp)的提示方法,它在传统的 OpenAI 示范(OpenAI Demonstration, ODp)基础上进行了增强。REp 包括以下几个关键部分:
-
优化规则(Optimization Rule, OR):提示中加入了一个多任务约束规则,要求 LLM 在确保正确性的同时最小化 SQL 执行时间。这有助于避免生成冗余字符和操作符,从而减少异常。
-
单元格值引用(Cell Value References, CV):在提示中随机采样并插入表中的几行数据,作为参考,帮助 LLM 理解数据库的格式和规范。这有助于解决由于不同表中数据格式不一致而导致的查询条件不明确的问题。
-
外键声明(Foreign Key Declarations, FK):在提示中添加了模式中外键关系,帮助 LLM 识别数据库中表之间的连接,从而更好地理解用户的意图并自动选择合适的连接。
1.2 基于问题骨架的 PreSQL 生成
这一模块的目标是从已知数据集中检索与目标问题具有相似意图的领域不可知样本,这些检索到的样本可以作为 LLM 的上下文学习示例。具体步骤如下:
-
问题去语义化:根据数据库模式,将问题中的域相关标记(如表名、列名和值)用特殊标记
<mask>替换,得到代表问题意图的问题骨架。 -
检索示例:使用预训练的句子 Transformer 模型,基于问题骨架的语义嵌入,从示例池中检索与目标问题最相似的 K 个样本。
-
构建提示:将选定的示例与 REp 结合,作为少量上下文(few-shot context)添加到提示中,然后使用这个提示来生成初步的 SQL(PreSQL)。
1.3 模式链接和 FinSQL 生成
为了减少可能阻碍 LLM 性能的冗长模式信息,作者提出了基于 PreSQL 的模式链接方法,以识别与数据库模式和自然语言问题相关的引用(表/列)。具体步骤包括:
-
模式链接:直接从 PreSQL 中解析出与问题相关的表/列实体作为链接结果,而不是设计策略让 LLM 输出相关的数据库引用。
-
简化提示:使用解析出的模式信息简化提示,去除与链接表无关的所有上下文,包括模式属性、数据库引用和外键声明。
-
生成 FinSQL:将简化后的提示输入 LLM,生成最终的 SQL(FinSQL)。
1.4 交叉一致性
这一部分详细描述了基于数据库引擎执行 SQL 查询结果的一致性模块,包括两种可行的实现策略:
-
简单投票:使用多个 LLM 生成 SQL,并根据执行结果进行投票,以多数结果作为最终答案。
-
基于 PreSQL 复杂度的细粒度投票:根据 PreSQL 的复杂度将问题分为不同等级,并由不同的候选 LLM 解决,以进行投票。这种方法可以最大化 LLM 的潜力,并显著减少投票偏差。
2. 实验

- 数据集和指标:使用 Spider 基准测试进行评估,主要指标是执行准确率(EX)。
- 评估的 LLM:包括 CodeLlama、SQLCoder、InternLM、SenseChat 和 GPT4。
- 实验设置:设置低温(低随机性)以减少 LLM 输出的随机性,输入和输出的最大长度分别为 4096 和 200。
- 整体性能:PET-SQL 在 Spider 测试集上取得了 87.6% 的执行准确率,超过了其他非学习基础方法。
- 提示的影响:提出的提示(REp)在零样本设置下表现出色,比现有的提示方法有显著改进。
- 模式链接的影响:通过模式链接简化提示信息可以提高 LLM 生成 SQL 查询的效率和准确性。
- 交叉一致性的影响:交叉一致性策略比自我一致性更有效,能够提高整体执行准确率。
3.局限性及未来方向
3.1局限性
-
模型复杂性和计算成本:PET-SQL 框架涉及多个阶段的处理,包括预 SQL 生成、模式链接和交叉一致性检查,这可能导致较高的计算成本,尤其是在需要多个 LLM 协作时。
-
数据集依赖性:尽管在 Spider 基准测试中取得了良好的性能,但 PET-SQL 框架可能对数据集的特定特征敏感。在不同的数据库模式或领域特定的数据集上,性能可能会有所不同。
-
提示设计:尽管论文提出了一种有效的提示设计方法,但提示的设计可能需要针对不同的 LLM 进行调整,以实现最佳性能。
-
错误处理和异常情况:在处理复杂的用户意图或数据库模式时,PET-SQL 可能在某些情况下无法生成正确的 SQL 查询,尤其是在处理模糊或不明确的自然语言输入时。
-
模型多样性:虽然交叉一致性利用了不同 LLM 之间的差异,但实际应用中可能需要更多的模型和更广泛的多样性来进一步提高性能。
3.2未来方向
-
优化计算效率:未来的工作可以探索减少计算成本的方法,例如通过改进算法或使用更高效的 LLM 架构。
-
泛化能力:研究如何提高 PET-SQL 在不同数据库模式和领域数据集上的泛化能力,使其更加灵活和适应性强。
-
提示自动化:开发自动化工具来生成和优化提示,减少手动调整的需要,并提高框架的易用性。
-
错误分析和修正:深入分析 PET-SQL 在特定情况下失败的原因,并开发有效的错误处理和异常情况修正机制。
-
增强模型多样性:探索更多的 LLM 选项,并研究如何更有效地结合它们的输出,以进一步提高交叉一致性的效果。
-
交互式学习:考虑用户反馈循环,使 PET-SQL 能够在与用户的交互中学习和改进,以更好地理解复杂的用户意图。
-
多模态输入:扩展 PET-SQL 以处理多模态输入,如结合自然语言和视觉信息,以支持更丰富的应用场景。
-
可解释性和透明度:提高 PET-SQL 的可解释性,让用户理解模型的决策过程,增加对模型结果的信任。
相关文章:
【Text2SQL】PET-SQL:在Spider基准测试中取得了SOTA
解读:PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency 这篇论文介绍了一个名为 PET-SQL 的文本到 SQL(Text-to-SQL)框架,旨在通过增强提示(prompt)和利用不同大型语言…...
python-3n+1数链/233
一:3n1数链题目描述 在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况下我们并不知道哪一类问题可以解决,哪一类问题不可解决。现在我们就有这样一个问题,问题如下&#…...
vue2基础系列教程之v-model及面试高频问题
v-model是表单组件里面的核心知识点,这个指令给我们写表单业务带来了很大的方便。 元素标签上的 v-model 指令用于双向绑定数据,它是一个语法糖,可以用于代替 v-bind:value 和 input 例如:<input v-model"message" placeholder…...
【高分系列卫星简介——高分一号(GF-1)】
高分一号卫星(GF-1) 高分一号(GF-1)是中国高分辨率对地观测系统(简称“高分专项”)的第一颗卫星,具有里程碑式的意义。以下是对高分一号卫星的详细介绍: 一、基本信息 发射时间&…...
Python基于TensorFlow实现时间序列循环神经网络回归模型(LSTM时间序列回归算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着信息技术的发展和传感器设备的广泛应用,时间序列数据的产生量急剧增加。无论是股市价格…...
springboot实战学习(6)(用户模块的登录认证)(初识令牌)(JWT)
接着上篇博客学习。上篇博客是在基本完成用户模块的注册接口的开发以及注册时的参数合法性校验的基础上,基本完成用户模块的登录接口的主逻辑。具体往回看了解的链接如下。 springboot实战学习笔记(5)(用户登录接口的主逻辑)-CSDN博客文章浏览…...
二叉树的顺序存储和基本操作实现
写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储) 基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 基于上述定义,写一个函数 int leftChild ( i…...
python学习-10【模块】
1、认识模块 导入模块 使用 import 语句使用 from … import 语句 1、import modulename [as alias] modulename:表示要导入的模块名as alias:可选参数,为模块起的别名 2、from modulename import name modulename:模块名&#x…...
modbus调试助手/mqtt调试工具/超轻巧物联网组件/多线程实时采集/各种协议支持
一、前言说明 搞物联网开发很多年,用的最多的当属modbus协议,一个稳定好用的物联网组件是物联网平台持续运行多年的基石,所以这个物联网组件从一开始就定位于自研,为了满足各种场景的需求,当然最重要的一点就是大大提…...
数值计算 --- 平方根倒数快速算法(0x5f3759df,这是什么鬼!!!)
平方根倒数快速算法 --- 向Greg Walsh致敬! 1,牛顿拉夫逊 已知x,要计算,假设的值为a,则: ,(式1) 如果定义一个自变量为a的函数f(a): 则,令函数f(a)等于0的a就…...
迭代器和生成器的学习笔记
迭代器 Python 迭代器是一种对象,它实现了迭代协议,包括 __iter__() 和 __next__() 方法。迭代器可以让你在数据集中逐个访问元素,而无需关心数据结构的底层实现。与列表或其他集合相比,迭代器可以节省内存,因…...
ES5 在 Web 上的现状
最后一个支持 ES5 的浏览器 IE 11 在 2022 年被微软停止支持,那么今天 Web 上的 ES5 现状如何?在构建生产代码时,Web 开发者的最佳实践是什么? 本文将通过数据来回答这些问题,并基于这些数据为网站开发者和库作者提供一…...
人话学Python-循环语句
一:while语句 while语句的组成由判断条件和执行语句组成。当满足条件时会不断执行后续语句,然后再循环执行的语句结束之后再次回到条件判断,如此循环。 pos 0 ans 0 while pos < 6:ans pos * 4pos 1 print(ans)>>>84"&…...
初识模版!!
初识模版 1.泛型编程1.1 如何实现一个交换函数呢(使得所有数据都可以交换)?1.2 那可以不可以让编译器根据不同的类型利用该模子来生成代码呢? 2.模版类型2.1 模版概念2.2 函数模版的原理2.3 函数模板的实例化2.4 模板参数的匹配原…...
算法之数学--hash算法 2021-03-11(未完待续)
1.hash算法 刷出一道墙 题目描述 Time Limit: 2000 ms Memory Limit: 256 mb 在一面很长的墙壁上,工人们用不同的油漆去刷墙,然而可能有些地方刷过以后觉得不好看,他们会重新刷一下。有些部分因为重复刷了很多次覆盖了很多层油漆ÿ…...
DHCP工作原理
在学习之前先提出几个问题:什么是DHCP?为什么要使用DHCP?在什么场景中使用DHCP?DHCP报文的目的IP和目的MAC是多少?DHCP报文是基于UDP还是基于TCP?DHCP服务器返回的报文中都包含什么信息? DHCP&a…...
服务发现和代理实例的自动更新
☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…...
Redis的三种持久化方法详解
Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式: 快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 A…...
OpenAI GPT o1技术报告阅读(5)-安全性对齐以及思维链等的综合评估与思考
✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 编码 我们训练了一个模型,在2024年国际信息学奥林匹克竞赛(IOI)中得分213分,排名在第…...
nodejs 012:Babel(巴别塔)语言转换与代码兼容
这里写目录标题 安装 Babel配置presets配置:常见的 Babel Presetsplugins配置:以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器,主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
