从领域外到领域内:LLM在Text-to-SQL任务中的演进之路

news2024/10/7 12:19:40

导语

本文介绍了ODIS框架,这是一种新颖的Text-to-SQL方法,它结合了领域外示例和合成生成的领域内示例,以提升大型语言模型在In-context Learning中的性能。

  • 标题:Selective Demonstrations for Cross-domain Text-to-SQL
  • 会议:EMNLP 2023 Findings
  • 链接:https://arxiv.org/abs/2310.06302
  • 机构:The Ohio State University

1 引言

LLMs(如GPT-3、Codex、PaLM和LLaMA)在上下文学习(ICL)中展现了处理各种语言任务的强大能力。ICL依赖于包含任务指令和零或几个关于任务的示例演示的提示。近期研究已经评估了LLMs在跨领域文本到SQL任务上的性能,该任务将自然语言问题(NLQ)转换为新数据库的SQL查询。以往的工作让LLMs使用仅包含数据库信息而没有任何演示的提示,或利用与测试数据库不同的数据库相关联的领域外注释的NLQ-SQL对作为演示示例。

注意:这里的领域内就是指我们提供给LLM的Few-shot样例是和我们要解决的问题Question为同一个数据库的情形;领域外则是指使用的样例是其他数据库的情形。

然而,Rajkumar等人发现,使用领域内注释示例作为演示可以显著提升LLMs的性能,但获取此类数据可能成本较高,因为注释过程需要SQL专业人员。更重要的是,为每个新数据库注释示例会降低文本到SQL应用的泛化能力。这些观察自然引发了两个问题:

  1. 领域内注释示例中的哪些关键因素有助于性能提升?
  2. 我们能否在不依赖领域内注释的情况下利用领域内演示的好处?

本文首先研究领域内演示示例的作用,然后开发新技术在不利用领域内注释的情况下创建演示。作者评估了领域内注释中的三个方面:文本到SQL任务知识和格式、输入NLQ分布和输出SQL分布。实验表明,SQL分布在领域内演示中起着关键作用。这一发现启发作者通过生成采样SQL查询来合成领域内数据的想法。本文是首个利用合成示例进行文本到SQL的上下文学习的。此外,作者引入了一个新颖的演示选择框架ODIS,它利用领域外演示和领域内合成数据。通过自动从领域外和合成领域内数据中选择演示示例,并采用SQL引导的检索方法,该方法在两个跨领域文本到SQL数据集上一致优于微调和上下文学习的最先进模型。

总体而言,本文贡献包括三个方面:

  • 对领域内演示的不同方面对文本到SQL的影响进行了全面分析。
  • 提出了一个演示选择框架ODIS,它利用领域外和合成生成的领域内演示。
  • 通过采用SQL引导的检索方法来选择领域外和合成领域内演示,ODIS一致优于基线方法和最先进的方法。

2 领域内示例的分析

这部分分析了领域内注释演示的作用和贡献。

2.1 实验设置

使用Spider和KaggleDBQA数据集。采用留一法评估领域内演示。具体来说,对于给定的测试示例,从与同一数据库关联的其余示例中随机选择演示,条件是所选演示示例不与测试示例共享相同的SQL模板,遵循模板分割方法。还要求所选演示具有不同的模板。图1展示了一个包含Spider数据库concert_singer中两个领域内演示的提示示例。使用Codex的Code-davinci-002作为LLM。

image.png

image.png

2.2 领域内注释的有效性

图3展示了Codex在Spider和KaggleDBQA上的执行准确度。Zero-shot设置下,Codex在Spider和KaggleDBQA上分别达到了75.7%和26.8%的执行准确度。使用领域内示例显著提高了Codex的性能。值得注意的是,随着领域内演示示例数量的增加,Codex的性能持续提升。

为了了解领域内演示中的关键因素,本文进行实验分析领域内演示的三个方面:

  • 文本到SQL任务知识和格式、
  • 领域内NLQ分布
  • 领域内SQL查询分布。

第一个方面涉及领域无关的知识,而后两个方面特定于领域。

image.png

文本到SQL任务知识和格式

作者使用注释的领域外数据作为提供任务格式和知识的替代来源,让模型从与其他数据库相关联的注释NLQ和SQL对中学习正确的任务格式和知识。实验结果表明(图3中的OOD Examples),接触具有相同任务格式和知识的领域外示例确实可以提升模型的性能,但这种提升与领域内示例相比较小。此外,使用领域内演示实现的性能提升在一定数量的示例后趋于收敛,这与领域外示例所观察到的持续性能提升形成对比。另一个实验显示(图7),当使用不匹配的NLQs和SQLs作为演示时,模型的性能显著降低,强调了在演示中包含正确任务知识和格式的必要性。

image.png

领域内输入NLQ分布

除了任务知识,领域内示例还向LLMs展示了输入NLQ的分布。最近的研究表明,LLMs可以从了解输入分布中受益,特别是在分类任务中。为了评估输入分布的重要性,作者用Codex在Zero-shot设置下生成的预测替换演示示例中的gold SQL查询。这样,模型可以了解输入NLQ的分布,而不需要接触注释的SQL或超出其自身预测的任何额外知识。图3中的“ID NLQ分布”表明,对于Spider,提供领域内NLQ分布带来了一些好处,但与使用完整领域内数据相比不相上下。此外,对于KaggleDBQA数据集,提供领域内NLQ和自我预测的SQL查询并未显示出与不使用任何示例相比的任何优势,作者认为这是由于Codex在KaggleDBQA的零次示例设置下的准确度较低。

领域内输出SQL分布

领域内演示示例还具有向LLMs揭示输出SQL分布的作用。为了评估这一方面的重要性,使用相同的LLM(Codex)从oracle SQL查询生成合成NLQ。在演示示例中,用这些合成NLQ替换注释的NLQ,同时保持SQL查询不变。这种设置允许LLMs接触领域内SQL分布,同时不了解注释的领域内NLQ或超出其自身生成的NLQ的其他输入。图3中的“ID SQL分布”结果表明,提供带有合成NLQ的注释SQL查询可以大幅提升模型在Spider和KaggleDBQA数据集上的性能。此外,随着包含更多演示示例,性能提升继续增加,与使用实际领域内示例获得的结果一致。

3 方法

3.1 领域外演示创建

考虑到LLMs对演示示例选择的敏感性,作者提出了基于预测SQL查询相似性的检索策略SimSQL。该策略目标是从一组领域外注释示例中检索与测试数据库和问题相似的演示示例。

对于一个测试数据库d和一个问题x,目标是从一组领域外注释示例 e 1 , . . . , e N e_1 , ..., e_N e1,...,eN 中检索M个数据库,每个数据库包含K个NLQ和SQL对,其中 e i = ( d b i , x i , y i , y ^ i ) e_i = (db_i , x_i , y_i , \hat{y}_i ) ei=(dbi,xi,yi,y^i),分别代表数据库、输入NLQ、注释的SQL查询和LLM在零次示例场景下预测的SQL查询。所选的M个数据库及其相关示例将在测试数据库和问题之前展示,如图2所示。

算法1展示了整体过程:

  1. 首先在Zero-shot场景下生成一个初始SQL预测 y ^ i \hat{y}_i y^i(第1行);
  2. 根据它们的预测SQL查询 y ^ i \hat{y}_i y^i y ^ \hat{y} y^的相似性对领域外示例进行排序(第2行);
  3. 从高相似性到低相似性扫描领域外示例。一旦在数据库中找到K个示例,该数据库及其K个示例就被选为演示数据库和示例(第7-9行)。当选择M个数据库时,算法停止(第10-12行)。使用BM25对SQL查询中的SQL关键词和模式标记进行相似性度量。

3.2 领域内合成演示创建

领域内合成演示选择包括两个阶段:(1) 合成数据生成,和 (2) 合成数据检索。

合成数据生成:首先采样合成SQL查询{ y i y_i yi },然后将SQL查询转换为自然语言问题{ x i x_i xi }。使用SHiP来采样合成SQL查询,从领域外数据库中提取模板,并从测试数据库中采样列和值来填充这些模板。接着,使用Codex来生成相应的合成NLQ。为提高合成数据的质量,添加一个验证过程。使用Codex将合成NLQ x i x_i xi 反向转换为SQL y ^ i \hat{y}_i y^i,并过滤掉 y ^ i \hat{y}_i y^i y i y_i yi 执行结果不同的示例。

合成数据检索:考虑到oracle SQL分布通常依赖于领域特定的先验知识,因此,本文的重点不是寻找与测试问题高度相似的SQL查询,而是检索涵盖预期SQL查询不同方面的多个查询。采用了Levy等人(2022)提出的算法启发的贪婪算法。算法2概述了从合成领域内示例中检索演示的过程:

  1. 创建一个需要覆盖的标记集合 S u n c o v e r S_{uncover} Suncover ,它以测试问题的初始SQL预测中提到的SQL关键词和模式标记为初始化(第3行)。
  2. 检索与S uncover 相似度最高的合成SQL,相似度用BM25分数测量(第5行)。 S u n c o v e r S_{uncover} Suncover 将通过移除检索到的SQL查询中的标记和添加检索到的示例到演示列表来更新(第8 - 9行)。重复这个过程,直到 S u n c o v e r S_{uncover} Suncover 变为空(第17行)或无法检索到包含 S u n c o v e r S_{uncover} Suncover 中任何标记的合成SQL(第14行)。
  3. 如果选择的示例数量少于最大期望值,再次重复步骤(1)和(2)(第2行)。

4 实验

4.1 基准方法与前期工作

  • 基于微调的方法:SmBoP、T5+Picard、ShiP+Picard和RESDSQL。
  • 上下文学习方法:包括Rajkumar等人、Chang和Fosler-Lussier、Lan等人提出的方法,还包括了SYNCHROMESH和SKILLKNN、LEVER、Self-Debug和DIN-SQL。
  • 我们的方法:将其与仅使用领域外数据或合成领域内源的演示示例的基准方法进行比较。此外,通过将SimSQL和CovSQL与随机检索策略以及基于输入NLQ相似度的SimNLQ方法进行比较,以评估这些策略。使用SentenceBERT编码的句子嵌入的余弦距离来衡量相似度。

4.2 实验设置

使用Spider的训练集作为选择领域外演示示例的池,在最终预测中使用了闭源LLMs Codex和ChatGPT,以及开源LLM CodeLLama进行实验3。由于资源限制,仅使用Codex来检索演示示例。

5 结果

5.1 主要结果

表1和表2展示了ODIS在Spider和KaggleDBQA数据集上与最新方法的执行准确度。ODIS展示了比仅依赖领域外或合成领域内演示示例的基准方法更优越的性能,无论使用哪种LLM。这些结果强调了在ODIS框架中利用两种来源的演示示例的有效性。

5.2 分析

领域外检索:基于预测SQL查询相似性的检索方法优于随机选择和基于NLQ相似性的方法。使用oracle SQL查询进一步提高了性能。

领域内合成演示检索:检索覆盖初始SQL预测不同部分的合成SQL查询表现更优。CoverSQL和SimSQL方法在KaggleDBQA数据集上取得了相同的结果,超过随机选择和基于NLQ相似性的方法。

合成数据的影响:合成数据的质量对ODIS框架至关重要。使用不同的SQL合成方法(如SHiP和GAZP)对性能有显著影响。

鲁棒性评估:在Dr. Spider测试中,ODIS表现出较高的鲁棒性,尤其在NLQ扰动情况下,性能超过监督学习和其他上下文学习方法。

6 相关工作

7 总结和未来工作

本研究深入分析了领域内演示示例的关键方面,并确定SQL分布为关键因素。本文提出了一个新颖的演示选择框架ODIS,它利用基于SQL的检索方法结合领域外演示和领域内合成示例的优势。在不同的大型语言模型上取得的显著性能表明,与基线和最新方法相比,本文的框架非常有效。

未来工作方面,计划从以下方向考虑:

  • 统一检索策略:将探索一个统一的检索策略,打破领域外和领域内合成数据之间的界限,实现它们之间的自动选择。
  • 提升初始模型性能:考虑使用更高性能的初始文本到SQL模型以进一步提高性能,如第5.2节通过使用oracle SQL查询所展示的。
  • 参数高效微调:考虑将ODIS扩展到Few-shot Learning,通过利用这些混合数据源(领域外示例和领域内合成示例)进行参数高效微调,留待未来研究探索。

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

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

相关文章

Qt设计师中(没有现成的控件):如何添加QToolBar工具栏

1、在QtCreator设计师界面中,在MainWindow上右键,有“添加工具栏”菜单项 2、但只有在MainWindow上右键才有,在其它控件上方点击则没有,那么怎么在对话框上添加呢? 可以添加一个QWidget,然后手动在ui文件里把class改为QToolBar就…

ONLYOFFICE 桌面编辑器8.0上新!六大更新内容等你来用!

各位铁铁,相信你们对ONLYOFFICE都不陌生了,那么今天咱们具体来看看ONLYOFFICE桌面编辑器8.0的上的六大新内容吧~ 更新一:可填写的PDF表单 8.0版本中最引人瞩目的改进之一,是具备创建高度复杂的PDF表单的能力,并允许用…

CSS的Day05(浮动+flex布局)

跟着黑马程序员的课,稍稍对CSS的了解 常见的显示模式:行内、块级、行内块 在HTML中,标准流也称为文档流或普通流,是指元素按照其在HTML文档中的出现顺序依次排列的方式。在标准流中,元素会自动占据父容器的空间&#…

什么是TCP三次握手、四次挥手?

🎬作者简介:大家好,我是小徐🥇☁️博客首页:CSDN主页小徐的博客🌄每日一句:好学而不勤非真好学者 📜 欢迎大家关注! ❤️ 1、三次握手 你(客户端)给一个朋友(服务器)打电…

前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-http的加密过程- 浏览器缓存

前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-如果ajax请求-http的加密过程 http和其他协议之间的区别http和tcp之间的区别http和websocket协议有什么区别 Ajax请求的步骤什么是XSS,CSRF攻击https加密的过程浏览器缓存 http和其他协议之间…

BUGKU-WEB Simple_SSTI_1

02 Simple_SSTI_1 题目描述 没啥好说的~ 解题思路 进入场景后&#xff0c;显示&#xff1a; You need pass in a parameter named flag。ctrlu 查看源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

函数对象(仿函数)的相关基本概念及用法

函数对象&#xff08;仿函数&#xff09; 基本概念 重载函数调用操作符的类&#xff0c;其对象称为函数对象 函数对象使用重载的&#xff08;&#xff09;时&#xff0c;行为类似函数调用&#xff0c;因此也被称为仿函数 本质 函数对象&#xff08;仿函数&#xff09;是一…

机器学习本科课程 大作业 多元时间序列预测

1. 问题描述 1.1 阐述问题 对某电力部门的二氧化碳排放量进行回归预测&#xff0c;有如下要求 数据时间跨度从1973年1月到2021年12月&#xff0c;按月份记录。数据集包括“煤电”&#xff0c;“天然气”&#xff0c;“馏分燃料”等共9个指标的数据&#xff08;其中早期的部分…

yarn/npm certificate has expired

目录 报错 原因&#xff1a;HTTPS 证书验证失败 方法 a.检查网络安全软件&#xff1a;可能会拦截或修改 HTTPS 流量 b.strict-ssl:false关闭验证【临时方法】 报错 info No lockfile found. [1/4] Resolving packages... error Error: certificate has expired at TLS…

【华三】GRE VPN 实验配置

【华三】GRE VPN 实验配置 前言报文格式实验需求配置思路配置拓扑GRE配置步骤R1基础配置GRE 配置ISP_R2基础配置R3基础配置GRE 配置PCPC1PC2抓包检查OSPF建立GRE隧道建立配置文档前言 VPN :(Virtual Private Network),即“虚拟专用网络”。 它是一种通过公用网络(通常是互…

骨传导耳机是什么原理?适合什么场景使用?

骨传导耳机是一种非常特殊的蓝牙耳机&#xff0c;它们通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机&#xff0c;它不通过空气传送声音&#xff0c;而是通过头骨的振动来传送声音。 骨传导耳机的传声原理跟传统耳机有所不同&#xff0c;传统耳机通过空气振动将…

爱上算法:每日算法(24-2月2号)

&#x1f31f;坚持每日刷算法&#xff0c;将其变为习惯&#x1f91b; 题目链接&#xff1a;101. 对称二叉树 最开始肯定是比较简单的想法&#xff0c;就是遍历左右节点呀&#xff0c;不相等我就直接返回false。 但是这样错了&#xff0c;我们要的是以根节点为轴&#xff0c;而…

使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队

作者&#xff1a;来自 Jessica Garson 大约一年前&#xff0c;我经历了一段压力很大的时期&#xff0c;最后参加了一场篮球比赛。 在整个过程中&#xff0c;我可以以一种我以前无法做到的方式断开连接并找到焦点。 我加入的第一支球队是波士顿凯尔特人队。 波士顿凯尔特人队是…

【Linux】文件周边002之初步理解文件管理(打开的文件)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.&#xff08;打开…

PMP资料怎么学?PMP备考经验分享

PMP考试前大家大多都是提前备考个一两个月&#xff0c;但是有些朋友喜欢“不走寻常路”&#xff0c;并不打算去考PMP认证&#xff0c;想要单纯了解PMP&#xff0c;不管要不要考证&#xff0c;即使是仅仅学习了解一下我个人都非常支持&#xff0c;因为专业的基础的确能提高工作效…

【Linux系统 02】Shell脚本

目录 一、Shell概述 二、输入输出 三、分支控制 1. 表达式 2. if 分支 3. case 分支 四、循环控制 1. for 循环 2. while 循环 3. select 循环 五、函数 一、Shell概述 Shell是Linux系统连接用户和操作系统的外壳程序&#xff0c;将用户的输入和请求选择性传递给操…

Unity笔记:相机移动

基础知识 鼠标输入 在Unity中&#xff0c;开发者在“Edit” > “Project Settings” > “Input Manager”中设置输入&#xff0c;如下图所示&#xff1a; 在设置了Mouse X后&#xff0c;Input.GetAxis("Mouse X")返回的是鼠标在X轴上的增量值。这意味着它会…

考勤|基于Springboot的大学生考勤系统设计与实现(源码+数据库+文档)

大学生考勤系统目录 目录 基于Springboot的大学生考勤系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、系统登录注册 2、管理员功能模块 3、教师功能模块 4、学生功能模块 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码…

【CSS + ElementUI】更改 el-carousel 指示器样式且隐藏左右箭头

需求 前三条数据以走马灯形式展现&#xff0c;指示器 hover 时可以切换到对应内容 实现 <template><div v-loading"latestLoading"><div class"upload-first" v-show"latestThreeList.length > 0"><el-carousel ind…

@所有人 您需要的 幻兽帕鲁服务器搭建教程 已上线

所有人 您需要的 幻兽帕鲁服务器搭建教程 已上线 幻兽帕鲁一键购买及部署体验购买及部署购买云服务器ECS部署幻兽帕鲁 创建账户并登录Steam其他操作更新服务器修改游戏参数其他操作释放资源 一直拖到今天才来写这篇幻兽帕鲁服务器搭建教程&#xff0c;确实是因为前段时间有事耽…