【Text2SQL】PET-SQL:在Spider基准测试中取得了SOTA

news2024/9/21 11:56:19

解读: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 包括以下几个关键部分:

  1. 优化规则(Optimization Rule, OR):提示中加入了一个多任务约束规则,要求 LLM 在确保正确性的同时最小化 SQL 执行时间。这有助于避免生成冗余字符和操作符,从而减少异常。

  2. 单元格值引用(Cell Value References, CV):在提示中随机采样并插入表中的几行数据,作为参考,帮助 LLM 理解数据库的格式和规范。这有助于解决由于不同表中数据格式不一致而导致的查询条件不明确的问题。

  3. 外键声明(Foreign Key Declarations, FK):在提示中添加了模式中外键关系,帮助 LLM 识别数据库中表之间的连接,从而更好地理解用户的意图并自动选择合适的连接。

1.2 基于问题骨架的 PreSQL 生成

这一模块的目标是从已知数据集中检索与目标问题具有相似意图的领域不可知样本,这些检索到的样本可以作为 LLM 的上下文学习示例。具体步骤如下:

  1. 问题去语义化:根据数据库模式,将问题中的域相关标记(如表名、列名和值)用特殊标记 <mask> 替换,得到代表问题意图的问题骨架。

  2. 检索示例:使用预训练的句子 Transformer 模型,基于问题骨架的语义嵌入,从示例池中检索与目标问题最相似的 K 个样本。

  3. 构建提示:将选定的示例与 REp 结合,作为少量上下文(few-shot context)添加到提示中,然后使用这个提示来生成初步的 SQL(PreSQL)。

1.3 模式链接和 FinSQL 生成

为了减少可能阻碍 LLM 性能的冗长模式信息,作者提出了基于 PreSQL 的模式链接方法,以识别与数据库模式和自然语言问题相关的引用(表/列)。具体步骤包括:

  1. 模式链接:直接从 PreSQL 中解析出与问题相关的表/列实体作为链接结果,而不是设计策略让 LLM 输出相关的数据库引用。

  2. 简化提示:使用解析出的模式信息简化提示,去除与链接表无关的所有上下文,包括模式属性、数据库引用和外键声明。

  3. 生成 FinSQL:将简化后的提示输入 LLM,生成最终的 SQL(FinSQL)。

1.4 交叉一致性

这一部分详细描述了基于数据库引擎执行 SQL 查询结果的一致性模块,包括两种可行的实现策略:

  1. 简单投票:使用多个 LLM 生成 SQL,并根据执行结果进行投票,以多数结果作为最终答案。

  2. 基于 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局限性
  1. 模型复杂性和计算成本:PET-SQL 框架涉及多个阶段的处理,包括预 SQL 生成、模式链接和交叉一致性检查,这可能导致较高的计算成本,尤其是在需要多个 LLM 协作时。

  2. 数据集依赖性:尽管在 Spider 基准测试中取得了良好的性能,但 PET-SQL 框架可能对数据集的特定特征敏感。在不同的数据库模式或领域特定的数据集上,性能可能会有所不同。

  3. 提示设计:尽管论文提出了一种有效的提示设计方法,但提示的设计可能需要针对不同的 LLM 进行调整,以实现最佳性能。

  4. 错误处理和异常情况:在处理复杂的用户意图或数据库模式时,PET-SQL 可能在某些情况下无法生成正确的 SQL 查询,尤其是在处理模糊或不明确的自然语言输入时。

  5. 模型多样性:虽然交叉一致性利用了不同 LLM 之间的差异,但实际应用中可能需要更多的模型和更广泛的多样性来进一步提高性能。

3.2未来方向
  1. 优化计算效率:未来的工作可以探索减少计算成本的方法,例如通过改进算法或使用更高效的 LLM 架构。

  2. 泛化能力:研究如何提高 PET-SQL 在不同数据库模式和领域数据集上的泛化能力,使其更加灵活和适应性强。

  3. 提示自动化:开发自动化工具来生成和优化提示,减少手动调整的需要,并提高框架的易用性。

  4. 错误分析和修正:深入分析 PET-SQL 在特定情况下失败的原因,并开发有效的错误处理和异常情况修正机制。

  5. 增强模型多样性:探索更多的 LLM 选项,并研究如何更有效地结合它们的输出,以进一步提高交叉一致性的效果。

  6. 交互式学习:考虑用户反馈循环,使 PET-SQL 能够在与用户的交互中学习和改进,以更好地理解复杂的用户意图。

  7. 多模态输入:扩展 PET-SQL 以处理多模态输入,如结合自然语言和视觉信息,以支持更丰富的应用场景。

  8. 可解释性和透明度:提高 PET-SQL 的可解释性,让用户理解模型的决策过程,增加对模型结果的信任。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络篇】电路交换,报文交换,分组交换

本文主要介绍计算机网络中的电路交换&#xff0c;报文交换&#xff0c;分组交换&#xff0c;文中的内容是我认为的重点内容&#xff0c;并非所有。参考的教材是谢希仁老师编著的《计算机网络》第8版。跟学视频课为河南科技大学郑瑞娟老师所讲计网。 目录 &#x1f3af;一.划分…

科研绘图系列:R语言误差连线图(errobar linechart)

文章目录 介绍加载R包导入数据数据预处理画图系统信息介绍 误差连线图是一种在数据可视化中常用的图表,它通过在数据点处添加线段(误差线)来表示数据的变异性或不确定性。这些误差线可以基于不同的统计度量,如标准差(Standard Deviation)、标准误差(Standard Error)或…

Redis 执行 Lua,能保证原子性吗?

前言 小张目前在使用分布式锁 Redisson 实现一个需求。那我在想我能否自己手撸一个能用于分布式环境的锁呢&#xff1f;于是果然尝试。 历经一天后&#xff0c;小张手撸的锁终于写出来了&#xff0c;再次给各位看看&#xff0c;看给位有没有什么优化的建议&#xff1a; // 加…

任务管理与守护进程【Linux】

文章目录 进程组前台进程&后台进程守护进程daemon 进程组 组长是多个进程的第一个&#xff0c;组长进程的标识是&#xff0c;其进程组ID等于其进程ID 前台进程&后台进程 前台进程&#xff1a;能获取键盘输入&#xff0c;即拥有键盘文件 后台进程&#xff1a;不能获取…

淘宝商品评论电商API接口全方位解析

随着电子商务的蓬勃发展&#xff0c;API接口在电商领域扮演着越来越重要的角色。淘宝作为国内最大的电商平台之一&#xff0c;其商品评论电商API接口为开发者提供了获取商品评论信息、进行数据分析等重要功能。本文将对淘宝商品评论电商API接口进行全方位解析&#xff0c;帮助开…

商品出库单打印怎么设置打印格式 佳易王商品批发出库单打印票据管理系统操作教程

一、前言 商品出库单打印怎么设置打印格式 佳易王商品批发出库单打印票据管理系统操作教程 佳易王商品出库打印纸张建议使用 241*140 &#xff0c;可根据需要更改或定制 二、软件程序图文说明 1、软件已经内置数据库&#xff0c;解压即可。 2、出库单可以打印两联或三联单或…

Android Kotlin 中的 `groupBy` 方法详解

在 Kotlin 中&#xff0c;groupBy 是一个非常有用的集合操作函数。我们可以使用它按照某个标准&#xff0c;将集合中的元素分组&#xff0c;形成一个 Map&#xff0c;其中 key 是我们分组的标准&#xff0c;value 是符合这个标准的元素列表。本文将通过几个实际例子&#xff0c…

微服务架构中的负载均衡与服务注册中心(Nacos)

1. 负载均衡&#xff1a;解决实际业务问题 1.1 业务场景思考 想象一个电子商务平台的微服务架构。我们有一个订单服务和多个用户服务实例。当订单服务需要调用用户服务时&#xff0c;它如何选择具体调用哪一台用户服务器&#xff1f;这就是负载均衡要解决的核心问题。 1.2 常…

【CAPL实战】system variables系统变量的基础与应用

基础 在CANoe系统中&#xff0c;变量可以用来对内部参数进行建模。系统变量既不描述节点的外部输入/输出信号&#xff0c;也不用于真实节点间的信号通信。系统变量用于开发和测试&#xff0c;提供改变和分析内部变量和参数的机会。通过还可以表示未在数据库中定义的IO信号。&a…

MUR6060PT-ASEMI高压快恢复二极管MUR6060PT

编辑&#xff1a;ll MUR6060PT-ASEMI高压快恢复二极管MUR6060PT 型号&#xff1a;MUR6060PT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 安装方式&#xff1a;插件 批号&#xff1a;最新 恢复时间&#xff1a;35ns 最大平均正向电流&#xff08;IF&#xff09;&…

构建高效心理辅导平台:Spring Boot实践

1绪 论 1.1研究背景 随着计算机和网络技术的不断发展&#xff0c;计算机网络已经逐渐深入人们的生活&#xff0c;网络已经能够覆盖我们生活的每一个角落&#xff0c;给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代&#xff0c;计算机网络的发展…

昇思量子计算系列教程-Grover搜索算法

基于MindSpore Quantum的Grover搜索算法 概述 如果你听过量子计算&#xff0c;那么你一定听说过Grover搜索算法。1996年&#xff0c;Lov Grover [1] 提出了Grover搜索算法&#xff0c;它是一种利用量子状态的叠加性进行并行计算并实现加速的算法。Grover搜索算法被公认为是继…

快手店铺多开甜羊浏览器

甜羊浏览器是一款专为电商从业者设计的专业浏览器&#xff0c;其最大的特色在于支持多开功能和具备智能的自动回复系统&#xff0c;尤其适合快手店铺等电商平台的多店铺管理及自动化客服需求。 **多开功能**&#xff1a;甜羊浏览器的多开功能允许用户在同一界面上登录和操作多…

电脑ip地址怎么换地区:操作步骤与利弊分析

在当今全球化的信息时代&#xff0c;人们经常需要访问不同地区的网络资源。然而&#xff0c;由于地理位置的限制&#xff0c;某些内容或服务可能只对特定地区的用户开放。这时&#xff0c;更换电脑IP地址的地区就成为了一个实用的解决方案。本文将详细介绍两种更换电脑IP地址地…

DataGrip在Windows和MacOS平台上的快捷键

0. 背景信息 No.说明1测试DataGrip版本号 : 2024.2.2 1. Windows下快捷键 2. MacOS下快捷键

麒麟银河桌面版,成功安装cuda12.6,mysql

一、 要卸载并禁用 nouveau 驱动程序&#xff0c;可以按照以下步骤进行&#xff1a; 1. 确认 nouveau 驱动的当前状态&#xff1a; 首先&#xff0c;你可以使用以下命令查看 nouveau 驱动是否正在运行&#xff1a; lsmod | grep nouveau如果有输出&#xff0c;说明 nouveau …

Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行

1. Unity3D介绍 Unity3D是虚拟现实行业中&#xff0c;使用率较高的一款软件。 它有着强大的功能&#xff0c;是让玩家轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台、综合型 虚拟现实开发工具。是一个全面整合的专业引擎。 2. Unity安装 官网 : Unity…

【有啥问啥】OpenAI o1的思考之前训练扩展定律、后训练扩展定律与推理扩展定律:原理与应用详解

OpenAI o1的思考之前训练扩展定律、后训练扩展定律与推理扩展定律&#xff1a;原理与应用详解 随着深度学习技术的不断发展&#xff0c;模型的规模和复杂度也迅速提升。研究人员发现了模型训练和推理过程中性能变化的规律&#xff0c;这些规律为我们提供了优化模型设计与训练的…

C++ STL全面解析:六大核心组件之一----序列式容器(vector和List)(STL进阶学习)

目录 序列式容器 Vector vector概述 vector的迭代器 vector的数据结构 vector的构造和内存管理 vector的元素操作 List List概述 List的设计结构 List的迭代器 List的数据结构 List的内存构造 List的元素操作 C标准模板库&#xff08;STL&#xff09;是一组高效的…

利用 IDEA 快速管理 k8s 集群

简介 前置条件&#xff1a; minikube 已安装&#xff0c;JetBrains k8s 官方插件已安装&#xff0c;Helm 已安装&#xff0c;kubectl 已安装 打开插件面板 检查可执行文件 添加配置文件 添加集群 验证