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

导语

本文介绍了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,通过利用这些混合数据源(领域外示例和领域内合成示例)进行参数高效微调,留待未来研究探索。

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

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

相关文章

深度学习系列57: 清华大模型MiniCPM上手

MiniCPM 是面壁智能与清华大学自然语言处理实验室共同开源的系列端侧大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量 1. 上手对比测试 mps比cpu大概快了9倍左右。 也可以在modelspore上测试:

XUbuntu22.04之如何创建、切换多个工作区(二百零九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-13-playwright操作iframe-下篇

1.简介 通过前边两篇的学习,想必大家已经对iframe有了一定的认识和了解,今天这一篇主要是对iframe做一个总结,主要从iframe的操作(输入框、点击等等)和定位两个方面进行总结。 2.iframe是什么? iframe 简…

【Simulink系列】——动态系统仿真 之 离散系统线性离散系统

一、离散系统定义 离散系统是指系统的输入与输出仅在离散的时间上取值,而且离散的时间具有相同的时间间隔。满足下列条件: ①系统(的输入输出)每隔固定时间间隔才更新一次。固定时间间隔称为采样时间。 ②系统的输出依赖当前的…

python+flask人口普查数据的应用研究及实现django

作为一款人口普查数据的应用研究及实现,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多…

C语言第十八弹---指针(二)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 指针 1、const修饰指针 1.1、const修饰变量 1.2、const修饰指针变量 2、指针运算 2.1、指针- 整数 2.2、指针-指针 2.3、指针的关系运算 3、野指针 3.1、…

【数据结构】----先来聊聊【排序】(先导片)

作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共…

Vite+Vue3使用Vue-i18n笔记

一、下载依赖 vue-i18n yarn add vue-i18n创建存放语言文件的目录 以及配置文件的配置 我是在src/lang 新建index.ts、cn.ts、en.ts以及test文件夹其中再分别新建cn.ts以及en.ts /lang/index.ts 用于导出vue-i18n需要的配置对象 import en from "./en.ts"; import…

C#验证字符串是否包含汉字:用正则表达式 vs 用ASCII码 vs 用汉字的 Unicode 编码

目录 一、使用的方法 1.使用正则表达式验证字符串 2.使用正则表达式验证字符 3.用ASCII码判断 4.用汉字的 Unicode 编码范围判断 二、实例 1.源码 2.生成效果 验证一个字符串是否是纯汉字或者包含有汉字的前提,是VS编辑器的默认编码格式设置为:选…

项目02《游戏-05-开发》Unity3D

基于 项目02《游戏-04-开发》Unity3D , 【任务】UI背包系统, 首先将Game窗口设置成1920 * 1080, 设置Canvas的缩放模式,:这样设置能让窗口在任意分辨率下都以一个正确的方式显示, 设置数值&…

Apollo

一. 部署说明 apollo配置中心由三个组件组成: ConfigService 配置中心,客户端从这个服务拉配置,同时内置了Eureka、MetaService。每个环境要有一个 AdminService 配置管理服务,管理数据库配置,Portal调这个服务修改、…

缓存的概念

文章目录 一、系统缓存buffer与cachecache 的保存位置cache 的特性 二、用户层缓存DNS缓存 三、浏览器缓存过期机制最后修改时间Etag标记过期时间 expires混合使用和缓存刷新缓存刷新 cookie和session 四、CDN缓存什么是CDN用户请求CDN流程利用 302 实现转发请求重定向至最优服…

引流技术-通过文件中增加联系方式并传播

文章目录 前言文档增加联系方式扩散网盘扩散自建网站借力 注意 前言 很多人在找资料的时候可能都遇到过下图情况: 1、文档最后面留一个自己的联系方式; 2、找的一堆文件中都有相同的情况; 3、一段时间全网搜到的很多相同文件也有这个联系方式…

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ,RocketMQ,Kafka等。Zookeeper作为一个分布式的小文件管理系统,同样能实现简单的队列功…

【LeetCode: 2670. 找出不同元素数目差数组 + 哈希表 + 前后缀处理】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

问题:下列哪些属于历史文化资源的特征( ). #学习方法#学习方法

问题:下列哪些属于历史文化资源的特征( ). A、稀缺性 B、脆弱性 C、可再生性 D、多样性 参考答案如图所示

Apple Vision Pro:新的隐私噩梦?

长期以来,苹果被誉为最注重隐私的科技公司之一,但如今,凭借售价 3499 美元的 Vision Pro,苹果可能已经打造出了一款终极监控机器。 作为苹果首款头戴式“空间计算”显示设备,号称将打造数字世界与物理世界交汇的新空间…

STL篇三:list

文章目录 前言1.list的介绍和使用1.1 list的介绍1.2 list的使用1.3 list的迭代器的失效 2.list的模拟实现2.1 结点的封装2.2 迭代器的封装2.2.1 正向迭代器2.2.2 反向迭代器 2.3 list功能的实现2.3.1 迭代器的实例化及begin()、end() 2.3.2 构造函数2.3.3 赋值运算符重载2.3.4 …

Axure RP9原型设计工具使用记录:基础操作

Axure RP9使用记录一 📚第一章 前言📗背景📗目的 📚第二章 基础介绍及操作📗页面功能总览📗基础操作📕设置样式📕设置交互📕设置组合📕设置动态面板&#x1f…