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

  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.rhkb.cn/news/428460.html

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

相关文章

数据结构--双链表

目录 一、引言 二 、链表的分类 1.单向或双向 2.带头或不带头 3.循环或不循环 三、双链表的概念与基本结构 1.概念 2.基本结构 三、双链表的常见操作 1.创建节点 2.初始化 3.头插 4.尾插 5.头删 6.尾删 7.打印 8.查找 9.插入节点 10.删除节点 11.销毁链…

OpenAi assistant run always fails when called from PHP

题意&#xff1a;从 PHP 调用时&#xff0c;OpenAI 助理运行总是失败。 问题背景&#xff1a; The runs I create with the openai-php library fail direct in 100% of cases. What am I doing wrong? I do not have much experience with php but this is the test script.…

Codeforces Round 973 (Div. 2) - D题

传送门&#xff1a;Problem - D - Codeforces 题目大意&#xff1a; 思路&#xff1a; 尽量要 最大值变小&#xff0c;最小值变大 即求 最大值的最小 和 最小值的最大 -> 二分答案 AC代码&#xff1a; 代码有注释 #include<bits/stdc.h> using namespace std; #…

neo4j(spring) 使用示例

文章目录 前言一、neo4j是什么二、开始编码1. yml 配置2. crud 测试3. node relation 与java中对象的关系4. 编码测试 总结 前言 图数据库先驱者 neo4j&#xff1a;neo4j官网地址 可以选择桌面版安装等多种方式,我这里采用的是docker安装 直接执行docker安装命令: docker run…

Git之如何删除Untracked文件(六十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

基于Springboot的助学金管理系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、研究背景 利用计算机来实现助学金管理系统&#xff0c;已经成为一种趋势&#xff0c;相比传统的手工管理方式&#xff0c;利用软件进行助学金管理系统&#xff0c;有着执行快&#xff0c;可行性高、容量存储大&#xff0c;…

【C#】内存的使用和释放

在 C# 中&#xff0c;内存管理主要是由 .NET 的垃圾回收器&#xff08;Garbage Collector, GC&#xff09;自动处理的。然而&#xff0c;了解如何正确地使用和释放内存对于编写高效且可靠的代码非常重要。以下是一些关键点和最佳实践&#xff1a; 1. 内存分配 托管资源&#x…

CSS——弹性盒子布局(display: flex)

CSS——弹性盒子布局&#xff08;display: flex&#xff09; 我们经常听说一种布局&#xff1a;Flexbox或者是弹性布局&#xff0c;它的全称叫做弹性盒子布局&#xff08;Flexible Box Layout&#xff09;&#xff0c;那么它到底该如何实现呢&#xff1f;从我们熟悉的 display…

大模型训练实战经验总结

在当今AI技术飞速发展的背景下&#xff0c;定制化大模型的自主训练已成为满足特定行业需求、保障数据安全、提升模型应用效能的关键途径。本文将深度剖析这一过程的核心价值与实践智慧&#xff0c;从数据隐私保护、模型透明度增强&#xff0c;到数据预处理的精细操作&#xff0…

Packet Tracer - IPv4 ACL 的实施挑战(完美解析)

目标 在路由器上配置命名的标准ACL。 在路由器上配置命名的扩展ACL。 在路由器上配置扩展ACL来满足特定的 通信需求。 配置ACL来控制对网络设备终端线路的 访问。 在适当的路由器接口上&#xff0c;在适当的方向上 配置ACL。…

Python编码系列—Python外观模式:简化复杂系统的快捷方式

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

ZYNQ FPGA自学笔记~操作PLL

一 时钟缓冲器、管理和路由 垂直时钟中心&#xff08;clock backbone&#xff09;将设备分为相邻的左侧和右侧区域&#xff0c;水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧&#xff0c;从而将某些时钟资源扩展到水平相邻区域。BUFG不…

windows下编译MicroRTS-Py

1.microRTS&#xff08;java&#xff09; microRTS是java写的跨平台的小型即时战略模拟器。 Farama-Foundation/MicroRTS: A simple and highly efficient RTS-game-inspired environment for reinforcement learning (github.com)https://github.com/Farama-Foundation/Micr…

Kubeadm快速安装 Kubernetes集群

1. Kubernetes简介 Kubernetes&#xff08;k8s&#xff09;是谷歌开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它具有以下特点&#xff1a; 开源容器化自动部署扩展高可用 2. Kubernetes架构 Kubernetes遵循主从式架构设计&#xff0c;主要分…

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...

原文链接&#xff1a;https://tecdat.cn/?p37724 在当今世界&#xff0c;粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率&#xff0c;但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时&#xff0c;在学术领域&#xff0c;准确评估…

OpenAI GPT o1技术报告阅读(3)-英文阅读及理解

✨继续阅读报告&#xff1a;使用大模型来学习推理(Reason) 原文链接&#xff1a;https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个英文阅读理解的案例。 原问题&#xff1a; The following passage is the draft of an excerpt from a contempora…

基于OpenCV的YOLOv5图片检测

利用OpenCV的DNN模块加载onnx模型文件进行图片检测。 1、使用的yolov5工程代码&#xff0c;调用export.py导出onnx模型。 2、下载opencv版本&#xff0c;https://opencv.org/releases/ 使用opencv版本4.5.3或以上&#xff0c;本文使用的opencv4.6.0 3、使用vc20…

css设置overflow:hiden行内元素会发生偏移的现象

父级元素包含几个行内元素 <div id"box"><p><span>按钮</span><span>测试文字文字文字测试文字文字文字</span><span>看这里</span></p></div>#box p{width: 800px;font-size: 30px;}#box p span{disp…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景&#xff1a; VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析&#xff1a; 虚拟机开启后会对部分文件继续加密&#xff0c;关闭时虚拟机会自动对其解密&…

css设置动态数组渲染及中间线平均分开显示

效果图&#xff1a; <template><div class"container"><div v-for"(item, index) in items" :key"index" class"item-container"><span class"item">{{ item }}</span><span v-if"in…