【Text2SQL】DAIL-SQL阿里推出,在Spider取得了SOTA

论文解读:Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation

论文详细介绍了DAIL-SQL方法,这是一个针对Text-to-SQL任务的提示工程方法。这个方法旨在通过精心设计的提示(prompt engineering)来优化大型语言模型(LLMs)的性能。通过这种细致入微的策略选择和优化,DAIL-SQL在Spider数据集上取得了86.6%的执行精度,当时取得了SOTA,显著提高了Text-to-SQL任务的性能,并在效率上也表现出色。

1. 问题表示(Question Representation)

问题表示是在零样本(zero-shot)场景下,如何有效地将自然语言问题和数据库模式表示给LLM,以便生成正确的SQL查询。论文中提到了几种不同的问题表示方法,并分析了它们的优缺点。这些方法包括:

  • 基本提示(Basic Prompt):直接提供表结构和问题,不包含额外的指令。
  • 文本表示提示(Text Representation Prompt):在基本提示的基础上添加了任务指令。
  • OpenAI演示提示(OpenAI Demostration Prompt):使用特定的规则(如"无需解释")来指导LLM生成SQL。
  • 代码表示提示(Code Representation Prompt):以SQL语句的形式呈现表结构,将问题放在注释中。
  • Alpaca SFT提示(Alpaca SFT Prompt):为监督式微调(Supervised Fine-Tuning, SFT)设计的提示格式。

2. 上下文学习(In-Context Learning)

上下文学习是在少样本(few-shot)场景下,如何通过提供一些示例来帮助LLM更好地理解和生成SQL查询。这包括示例选择(example selection)和示例组织(example organization)两个方面:

  • 示例选择(Example Selection):选择与目标问题最相关的示例。论文提出了DAIL选择方法,它同时考虑问题和查询的相似性来选择最有帮助的示例。
  • 示例组织(Example Organization):决定如何在提示中组织选定的示例。论文提出了DAIL组织方法,它在保留问题到SQL映射的同时,通过去除数据库模式来减少令牌数量,提高效率。

3. DAIL-SQL方法

DAIL-SQL方法是一个综合性的解决方案,旨在通过优化问题表示、示例选择和组织策略来提升大型语言模型(LLMs)在Text-to-SQL任务上的性能。以下是DAIL-SQL方法在这三个关键方面的具体实施细节:

1. 问题表示(Question Representation)

问题表示是将自然语言问题和数据库模式有效地传递给LLMs的过程。DAIL-SQL选择了代码表示提示作为其问题表示方法。这种方法直接使用SQL语句来描述数据库表结构,并在注释中提出问题。这样做的优势在于:

  • 全面性:提供了数据库创建所需的全面信息,例如列类型、主键/外键等。
  • 针对性:针对LLMs在编程语言理解上的优势,使其更容易理解和处理问题。
2. 示例选择(Example Selection)

示例选择是决定哪些示例对于LLMs生成正确SQL查询最有帮助的过程。DAIL-SQL采用了一种新颖的示例选择策略,称为DAIL选择(DAIL Selection, DAIL𝐴?)。这种方法同时考虑问题和查询的相似性:

  • 掩码处理:首先对目标问题和候选示例问题中的数据库特定词汇进行掩码处理,以消除领域特定信息的干扰。
  • 相似性计算:计算掩码后的问题之间的相似性,并预测目标问题的SQL查询,然后计算这个预测查询与候选示例查询之间的相似性。
  • 选择标准:优先选择那些在问题和查询相似性上都较高的示例。
3. 示例组织(Example Organization)

示例组织是决定如何在提示中展示选定示例的过程。DAIL-SQL提出了一种新的组织策略,称为DAIL组织:

  • 保留映射信息:与仅展示SQL查询的策略不同,DAIL组织同时展示问题和对应的SQL查询,保留了问题到SQL的映射信息。
  • 减少令牌消耗:通过去除示例中的数据库模式信息,减少了提示的长度,提高了令牌效率。
4.综合应用

DAIL-SQL将上述策略综合应用于Text-to-SQL任务中,具体步骤如下:

  1. 预处理:对目标问题和候选示例进行掩码处理,移除数据库特定词汇。
  2. 预测与选择:使用预训练模型预测目标问题的SQL查询,选择与该预测查询相似性高的示例。
  3. 组织与提示:将选定的示例以DAIL组织策略组织,并结合问题表示,形成最终的提示输入给LLMs。
  4. 生成与优化:LLMs根据提示生成SQL查询,并通过后处理(如自我一致性投票)进一步提高结果的准确性。

4. 效率考量

论文还强调了在提示工程中考虑令牌效率的重要性,尤其是在调用API成本较高的情况下。DAIL-SQL在设计时考虑了这一点,力求在保持高性能的同时减少令牌的使用,从而降低成本。

相关推荐
仍然.2 分钟前
Redis---缓存
数据库·redis·缓存
Aloudata11 分钟前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@19 分钟前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog36 分钟前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模38 分钟前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡42 分钟前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
Rocky Ding*1 小时前
MOSS-VL技术原理深度解析:让视觉流持续进入生成过程,实时 Agent 才有架构基础
论文阅读·人工智能·深度学习·机器学习·aigc·多模态·ai-native
白露与泡影1 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔2 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
专业程序开发源2 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计