【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在设计时考虑了这一点,力求在保持高性能的同时减少令牌的使用,从而降低成本。

相关推荐
吴佳浩9 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
后端小肥肠9 小时前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
feiyu_gao10 小时前
从零搭建个人 AI 工作台:一个管理者的 3 个月实验
人工智能·aigc·团队管理
JEECG官方10 小时前
Claude Code Loop 快速入门:从一行命令到自动迭代
aigc
gptAI_plus11 小时前
用 React + TypeScript 写一个世界杯淘汰赛对阵树组件
chatgpt·openai
AlbertZein11 小时前
别只盯着最强模型了,Agent 场景更该看这类 Flash 档模型
aigc·openai·ai编程
ZzT12 小时前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
leeyi14 小时前
中间件系统:在 Agent 执行流中插入自定义逻辑
aigc·agent·ai编程
jiayou6414 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端