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

相关推荐
Power202466643 分钟前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
沉下心来学鲁班1 小时前
复现LLM:带你从零认识语言模型
人工智能·语言模型
数据猎手小k1 小时前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
Ai 编码助手1 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
多吃轻食2 小时前
大模型微调技术 --> 脉络
人工智能·深度学习·神经网络·自然语言处理·embedding
陈燚_重生之又为程序员2 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle2 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻2 小时前
MySQL排序查询
数据库·mysql
萧鼎2 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步