Text-to-SQL小白入门(十一)DAIL-SQL教你刷Spider榜单第一

论文概述

学习这篇Text2SQL+LLM的benchmark论文前,可以先学习一下基础的Text2SQL知识。

可以参考GitHub项目:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, Text2DSL、Text2API、Text2Vis and more.

,这个项目收集了Text2SQL+LLM领域的相关简介、综述、经典Text2SQL方法、基础大模型、微调方法、数据集、实践项目等等,持续更新中!

(如果觉得对您有帮助的话,可以star、fork,有问题、建议也可以提issue、pr,欢迎围观)

基本信息

  • 英文标题:Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation
  • 中文标题:基于LLM的Text2SQL:基准评估
  • 发表时间:2023年8月29日 v1版,2023年11月20日v4版
  • 作者单位:阿里巴巴
  • 论文链接:https://arxiv.org/abs/2308.15363
  • 代码链接:GitHub - BeachWang/DAIL-SQL: A efficient and effective few-shot NL2SQL method on GPT-4.

摘要

  • 大型语言模型(LLM)用于Text2SQL任务已成为一种新范式。 然而,缺乏系统的基线benchmark阻碍了基于 LLM 的Text2SQL方案设计。
  • 为了应对这一挑战,在本文中,论文首先进行了系统且广泛的研究,与现有提示工程方法prompt engineering methods比较,包括问题表示question representation、例子选择example selection和例子组织example organization,并通过这些实验结果,论文阐述了它们的优点和缺点。
  • 基于这些发现,论文提出了一种新的综合名为DAIL-SQL的解决方案,刷新Spider排行榜-执行准确率(EX)达到 86.6%,树立了新标杆。
  • 为了探索开源LLM的潜力,论文进行了调查,并进一步使用有监督微调SFT提升其性能。论文的探索突出了开源LLM 在Text2SQL方面的潜力,以及监督微调的优点和缺点。 此外,为了实现一个高效且经济的基于LLM的Text2SQL解决方案,论文强调prompt engineering的token效率并进行比较之前的研究。

86.6现在已经不是spider第一了,不过仍然非常强大,也开源了代码,目前(2024-0104)是MiniSeek的91.2(没有开源代码),可以参考Awesome-Text2SQL开源项目中的榜单汇总

结果

问题表示question representation

有5个类别:

  • Basic Prompt

  • Text Representation Prompt (多了一些文字描述)

  • OpenAI Demostration Prompt

  • Code Representation Prompt

  • Alpaca SFT Prompt

图 1:zero-shot场景下Spider-dev 上不同问题表示的结果。

  • 没有一致的最好question representation,也就是说不同的模型,可能question representation表现最好的不是同一种
  • 具体的数值可以看表5

  • Vicuna-33B:OpenAI Demostration Prompt表现最好
  • GPT-4:Basic Prompt 表现最好
  • GPT-3.5-TURBO:OpenAI Demostration Prompt表现最好
  • TEXT-DAVINCI-003:Code Representation Prompt表现最好

论文做了消融实验,对prompt中的问题表示去掉外键信息,比如图2和表6。

图2 Spider-dev 上外键信息的消融实验。 绿色箭头表示增加,红色箭头表示,表示减少。

  • 大部分问题表示中增加上foreign key后,EX和EM都是有增加的,除了少数,比如Text Representation Prompt With Foreign Keys 在GPT-4下,结果反而还降低了0.2。

同样的,还有关于是否解释explanation的消融实验,如图3和表7。

  • 加上Explanation rule,大部分问题表示结果EX/EM都是上升的,除了OpenAI Demostration Prompt

上下文学习In-Context Learning(ICL)

这里统一选取问题表示为Code Representation Prompt

Example Selection

example的选择分为了5类:

  • Random 随机选example
  • Question Similarity selection 根据和问题的相似性选择
  • Masked Question Similarity selection 把问题的表名、列名mask,再计算问题的相似性
  • Query Similarity selection 查询的相似性
  • DAIL selection 就是这篇论文的方法
  • Upper Limit
    • 这个和DAIL selection类似,只不过计算的是ground truth的query的相似性 (DAIL selection 是predicted query)

  • 1-shot/3-shot/5-shot,DAIL selection方法仅次于Upper Limit,比其他的方法都要好,表明了问题相似性的重要性。
  • 因为比Upper Limit差,表面了生成得query和真实的query之间的差距。

Example Organization

示例的组织方式有3种:

  • Full-Information Organization

  • SQLOnly Organization

  • DAIL Organization

图4 :对不同example organization 的 Spider-dev 进行评估。

Example Selection 固定为 DAIL Selection。

  • 详细数据如表10
    • spider数据集上,在GPT-4上,DAIL Organization 都比另外两种情况好。当为7-shot时,EX最高为83.5。

    • 比如还有Spider-Realistic数据集上

SFT

开源模型-0-shot
  • 不对齐,LLaMA-33B在EX指标表现最好42.8,EM指标最好是13.8
  • 对齐后,codellama-34b在spider-dev表现最好,使用code representation,EX-68.5,EM-27.8

开源模型-few-shot
  • 横坐标是k-shot:比如0-shot、1-shot、3-shot等
  • 纵坐标是EX/EM
  • EM指标上:LLaMA-33B表现最好
  • EX指标上:Vicuna-33B表现最好

开源模型-SFT
  • 不经过SFT模型,few-shot可以提高精度
    • LLaMA -7B-0-shot < LLaMA -7B -1-shot
  • 经过SFT之后,few-shot反而会降低精度
    • LLaMA -7B-SFT-0-shot > LLaMA -7B -1-shot

Token Efficiency

这个比较还是有意思的,不光用精度评估,也要用过程的消耗以及token数量评估

  • token 的数量

  • 花钱多少

  • 花时间多少

论文的数据实验非常扎实,分类别很多,需要很细致的看,附录也有很多实验,值得学习和借鉴。

结论

few-shot + SFT 效果不如SFT,这一点很关键。

  • 在本文中,论文提出了一种新的快速工程方法,名为 DAIL-SQL,刷新 Spider 排行榜EX-86.6%,排名第一
  • 关于监督微调,论文展示了开源 LLM 在Text2SQL方面的巨大潜力,强调了在语料库预训练和模型参数的重要性,并指出微调后上下文学习能力的退化
  • 此外,论文进行对现有解决方案在效率方面的观察,其中表明 DAIL-SQL 效率更高,并强调了标记效率在提示工程中的重要性。

核心方法

DAIL-SQL-步骤

细节去参考源码,这里理解一下大概意思

  • 输入:
    • 目标question和目标database
    • 其他的Text2SQL+LLM的基础信息:比如question、database、三元组(question,answer(就是SQL), dataset)、示例examples、model、相似度阈值等等等
  • 输出:
    • 针对目标quetsion,得到对应的sql
  • 方法
    • 1.对问题进行mask:包括目标question和候选questions
    • 2.初步预测sql
    • 3.解析预测的初步sql骨架
    • 4.计算和mask_question的相似性,排序
    • 5.重新排序:通过优先考虑具有高度的查询相似度的候选者来重新排序 Q
    • 6.重新生成prompt和最后的SQL

一些细节

更加具体的细节:

  • question representation --> Code Representation Prompt
  • example selection --> DAIL Selection
  • example organization --> DAIL Organization
  • 使用 self-consistency -->增长0.4% 【Self-Consistency Improves Chain of Thought Reasoning in Language Models】

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

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

相关文章

前端开发_JavaScript基础

JavaScript介绍 JS是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果 作用&#xff1a; 网页特效 (监听用户的一些行为让网页作出对应的反馈) 表单验证 (针对表单数据的合法性进行判断) 数据交互 (获取后台的数据, 渲染到前端) 服…

漏洞复现-海康威视网络对讲广播系统远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

HackTheBox - Medium - Linux - Socket

Socket Socket 是一台中等难度的 Linux 机器&#xff0c;其特点是反转 Linux/Windows 桌面应用程序以获取其源代码&#xff0c;从那里发现其 Web 套接字服务中的“SQL”注入。转储数据库会显示一个哈希值&#xff0c;一旦破解&#xff0c;就会产生对该框的“SSH”访问。最后&a…

卷麻了,00后测试用例写的比我还好,简直无地自容...........

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 如何编写测试用例&#xff1f; 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很是头疼&#xff0c;无法…

Spring中基于注解的IOC配置项目举例详解

文章目录 Spring中基于注解的IOC配置项目举例详解1、创建如下结构的Spring项目pom.xmldao层service层application.xmllog4j.properties 2、用于创建对象的常用注解2.1、Controller或Controller("user")声明bean,且id"user"2.2、Service或用Service("u…

数据挖掘总结(考试版)

数据挖掘总结&#xff1a; 第一章&#xff1a; 数据挖掘KDD步骤&#xff1a; 数据清理: (消除噪声和删除不一致的数据)数据集成&#xff08;多种数据源可以组合在一起&#xff09;数据选择&#xff08;从数据库中提取与分析任务相关的数据&#xff09;数据变换&#xff08;数…

【基础python】条件语句 | 循环

条件语句 if elif else python中和绝大数语言类似&#xff0c;具有能够判断语句顺序的语法 if elif else 分别对应C的 if else if else if 条件为真进入语句 &#xff0c;反之则不进入 如果if 为假&#xff0c;存在else 则会进入else 如果if 为假 &#xff0c;存在…

(Java企业 / 公司项目)Nacos的怎么搭建多环境配置?(含相关面试题)(二)

上一篇讲了一个单体服务中配置&#xff0c;传统的Nacos配置但是在微服务架构当中肯定都是多环境下配置&#xff0c;比如生产环境&#xff0c;dev测试环境等等。 第一种方式模拟开始&#xff1a; 首先展示在生产环境中nacos如何配置&#xff0c;在模块下新建一个配置文件&…

三段式电流保护与自动重合闸MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 前加速、后加速的区别&#xff1a; 前加速是保护装置不判别是永久性故障还是瞬时故障&#xff0c;直接跳闸&#xff0c;然后经重合闸装置来纠正&#xff1b;后加速是保护装置是先判别故障类型有选择性跳闸 …

AI:112-基于卷积神经网络的美食图片识别与菜谱推荐

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

华为与银联深化合作 /阿里巴巴集团首席执行官兼任淘天集团首席执行官 |魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件&#x1f525;&#xff0c;更新AIGC的最新动态&#xff0c;生成相应的魔法简报&#xff0c;节省阅读时间&#x1f47b; &#x1f525;资讯预览 华为与银联深化合作&#xff0c;推动银联服务全面“鸿蒙化” 阿里巴巴集团首…

即时设计:一键查看设计稿与页面差异,让设计师的工作更便捷高效

设计稿走查 在设计工作中&#xff0c;对设计稿和实际页面进行对比是必不可少的环节。然而&#xff0c;传统的对比方式往往耗时耗力&#xff0c;无法精确测量差异。为了解决这个问题&#xff0c;我们推出了一款强大的工具&#xff0c;它可以通过图片对比&#xff0c;轻松查看设…

vue3+vant4 移动端软键盘弹出 收起导致项目样式布局错乱解决方案,亲测有效!!

问题描述 最近在做vue3 H5的移动端项目 我用的是vue3vant4&#xff0c;然后在使用过程中发现 小米14手机在点击密码输入框软键盘弹出 时会导致项目布局整体向上移动 导致页面布局错乱。 原因分析&#xff1a; 在移动端软键盘弹出收起时&#xff0c;导致项目样式布局错乱的原因…

rtsp解析视频流

这里先说一下 播放rtsp 视频流&#xff0c;尽量让后端转换一下其他格式的流进行播放。因为rtsp的流需要flash支持&#xff0c;现在很多浏览器不支持flash。 先说一下这里我没有用video-player插件&#xff0c;因为它需要用flash ,在一个是我下载flash后&#xff0c;还是无法播放…

C++多态性——(4)纯虚函数与抽象类

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 我们不能选择命运&#xff0c;但我们可…

【Python机器学习】k近邻——k近邻分类

k-NN算法最简单的版本是只考虑一个最近邻&#xff0c;也就是想要预测的数据点最近的训练数据点&#xff0c;预测结果就是这个训练数据点的已知输出。 除了仅考虑最近邻&#xff0c;还可以考虑任意&#xff08;k个&#xff09;邻居&#xff0c;这也是k近邻算法名字的由来。在考…

Python正则表达式急速入门~正则居然这么容易掌握!

正则表达式在程序开发中会经常用到&#xff0c;比如数据&#xff08;格式&#xff09;验证、替换字符内容以及提取字符串内容等等情况都会用到&#xff0c;但是目前许多开发人员对于正则表达式只是处于了解或者是基本会用的阶段。一旦遇到大批量使用正则表达式的情况&#xff0…

Linux基础知识点-(七-线程)

目录 一、线程和进程 1.1 线程的基本概念 1.2 线程的优缺点 二、创建线程 2.1 pthread_create() - 创建线程函数 三、线程属性 四、线程退出 4.1 pthread_exit() 4.2 pthread_join() 4.3 pthread_detach() 一、线程和进程 1.1 线程的基本概念 在很多Linux的书籍基…

搜维尔科技:深入研究工作场所人体工程学中的动作捕捉

创造安全舒适的工作环境对于员工的健康和组织的整体成功至关重要。这就是为什么我们很高兴举办有关“在工作场所人体工程学中利用动作捕捉技术”的网络研讨会。 通过利用动作捕捉的力量&#xff0c;组织可以彻底改变工作场所人体工程学的方法。它使您能够根据客观的运动数据进行…

C++面向对象高级编程(侯捷)笔记2

侯捷C面向对象高级编程 本文是学习笔记&#xff0c;仅供个人学习使用&#xff0c;如有侵权&#xff0c;请联系删除。 如果你对C面向对象的组合、继承和委托不了解&#xff0c;对什么是拷贝构造、什么是拷贝赋值和析构不清楚&#xff0c;对类设计中的Adapter、pImpl、Template…