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

相关推荐
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain1 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship1 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
清平乐的技术专栏1 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
梦想平凡3 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO3 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong3 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
码农老起4 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化