本文详细精读了DAIL-SQL论文,论文是通过AI翻译加人工逐行精读修改的结果,希望对想要了解Text-to-SQL的同学有所帮助

《DAIL-SQL》论文精读:2025年在Spider的SOTA方法(Text-to-SQL任务)_SQL

文章目录
  • 摘要
  • 1 引言
  • 2 任务概述
  • 3 研究方法
  • 3.1 问题表示
  • 3.2 上下文学习用于文本到SQL的转换
  • 3.2.1 示例选择example selection
  • 3.2.2 示例组织 Example Organization
  • 3.3 DAIL-SQL方法
  • 3.4 将监督式微调用于文本到SQL
  • 4 实验
  • 4.1 实验设计
  • 4.2 结果与分析
  • 论文总结

摘要

大型语言模型(LLMs)已成为文本到SQL任务的新范式。然而,缺乏系统性的基准测试阻碍了设计有效、高效和经济基于LLM的文本到SQL解决方案的发展。为了应对这一挑战,本文首先对现有的提示工程方法进行了系统而广泛的比较,包括问题表示、示例选择和示例组织,并通过这些实验结果阐述了它们的优缺点。基于这些发现,我们提出了一个新的综合解决方案,名为DAIL-SQL,该方案以86.6%的执行准确率刷新了Spider排行榜,并树立了新的标杆。

为了探索开源LLM的潜力,我们在各种场景中对其进行了研究,并通过监督微调进一步提升了它们的性能。我们的探索突显了开源LLMs在文本到SQL方面的潜力,以及监督微调的优势和劣势。此外,为了实现高效且经济的基于大型语言模型(LLM)的文本到SQL解决方案,我们强调提示工程中的Token效率,并比较了在此指标下的先前研究。我们希望我们的工作能够加深对使用LLM进行文本到SQL转换的理解,并激发进一步的调查和广泛应用。

1 引言

文本到SQL作为自然语言处理和数据库领域的一个挑战性任务,将给定关系数据库上的自然语言问题映射为SQL查询[9, 18]。大多数以往的工作[17, 22, 23, 51, 60]集中于提取问题到SQL的模式,并通过用文本到SQL语料库训练编码器-解码器模型来泛化这些模式。近年来,大型语言模型(LLMs)已成为文本到SQL的新范式[26, 41, 50]。值得注意的是,配备了GPT-4[30],Pour-reza等人[37]在Spider排行榜[3]上以85.3%的执行准确率获得了第一名。与以往的研究不同,基于LLM的文本到SQL解决方案的核心问题是,如何提示LLM生成正确的SQL查询,即提示工程。这样的提示工程涉及问题表示 question representations[7,13,33,37]、示例选择examples selection[14, 28, 29]以及示例组织 example organization[14]。

文本到SQL的提示工程需要系统性的研究。尽管先前的研究取得了显著的进展,但在基于LLM的文本到SQL解决方案中,提示工程的系统性研究仍然缺乏。

(1)具体来说,在 问题表示question representations

然而,即使采用相似的表示方法,他们的详细任务指令也可能导致显著的效果差距。例如,在OpenAI的官方文本到SQL演示[33]中,他们使用井号“#”来区分提示和响应,从而取得了令人印象深刻的性能[26];如果移除这个符号,性能将显著下降。因此,系统性地研究不同的表示方法,并检验如何与大型语言模型良好配合的需求正在迅速增长。

(2)关于 示例选择examples selection

(3)而在 示例组织example organization

结合不同大型语言模型的偏好,基于大型语言模型的文本到SQL解决方案中的最佳选择和组织的策略仍然模糊不清。因此,系统性地研究提示工程,涵盖不同的大型语言模型(LLMs)、问题表示、示例选择和组织,是非常令人期待的。

开源大型语言模型的潜力尚未被充分探索 。最近,开源大型语言模型不断扩展,在编程、数学推理和文本生成任务上表现出显著的进步。然而,以往针对“文本到SQL”的研究主要集中于OpenAI的大型语言模型,而忽略了开源大型语言模型。此外,与OpenAI的大型语言模型相比,开源模型在理解上下文和生成连贯响应方面的功能通常有限。因此,开源大型语言模型面临的一个关键挑战是进一步提升它们在“文本到SQL”上的表现,这可以 通过监督微调来实现

提示效率Prompt efficiency仍然是一个具有挑战性的未解之谜。在以大型语言模型为基础的“文本到SQL”中,另一个关键挑战是效率。原因是大多数先前的研究都集中在OpenAI的大型语言模型上,调用它们的API既昂贵又耗时,并且受到速率限制的约束[32],特别是对于包含多个示例的上下文学习提示。然而,先前的这些研究可能并没有很好地解决这一挑战。具体来说,基于执行准确率与提示长度呈倒U型变化的观察结果,常等人[7]推测大型语言模型可能在提示长度方面存在一个最佳点,但将高效的提示工程作为一个具有挑战性的未解之谜留给了后人。

鉴于上述挑战,我们专注于提供一个全面、系统和公正的基准测试,用于评估以大型语言模型为基础的“文本到SQL”的性能。具体来说,我们的基准测试讨论了各种提示工程策略的有效性和效率,以及开源大型语言模型(LLM)的可行性。具体细节如下。

为了系统而深入地理解文本到SQL的提示工程,我们根据先前的几项研究实证评估了几种策略。首先,我们比较了不同大型语言模型在零样本场景下的几种典型问题表示,并探索出它们的优缺点。之后,我们调查了小样本场景下的示例选择和组织策略。在示例选择方面,我们比较了不同的选择策略,并进一步验证了大型语言模型通过问题与SQL骨架之间的映射进行学习的假设。关于示例组织,我们探讨了显示完整信息、仅SQL查询或问题-SQL对的选项。

此后,我们强调了开源大型语言模型在上下文学习和有监督微调中的潜力。具体来说,我们根据不同的提示工程策略实证研究了多种开源大型语言模型,并观察到随着大型语言模型规模的增大以及良好的对齐性带来的显著好处[34]。为了进一步提升它们的性能,我们使用各种表示对开源大型语言模型进行了微调和评估。通过这一比较,我们展示了与上下文学习类似,表示策略对于有监督微调也是至关重要的。这些探索强调了有效解决文本到SQL问题的潜力。此外,在微调后我们还观察到上下文学习能力的下降,这需要进一步研究。我们相信这些探索将有益于实际的文本到SQL应用。

为了实现更加经济高效的解决方案,我们从Token效率的角度进一步评估不同策略。此类评估旨在寻找一种性价比高的策略,该策略应该用较少的令牌达到可观的性能。为实现这一目标,我们在提示工程的全过程考虑Token效率,包括问题表示、示例选择和组织。

最后但同样重要的是,我们整合的解决方案DAIL-SQL以86.6%的执行准确率刷新了Spider排行榜,并荣获第一名。与之前的解决方案相比,DAIL-SQL将结构知识编码为SQL语句,基于它们的骨架相似性选择示例,并从示例中移除跨域知识以提高令牌效率(即Token效率)。在DAIL-SQL之前,Spider排行榜上的最先进技术表现为85.3%[37]。因此,我们的解决方案树立了新的标杆,并希望我们的全面研究能够激发更多进一步的工作。

我们的主要贡献和成果总结如下:

  • 我们系统地研究了基于大型语言模型(LLM)的文本到SQL方法的提示工程,包括五种问题表示five question representations、两种提示组件example selections、四种示例选择 example organization,以及四种LLM上的三种示例组织。该研究揭示了如何识别合适的问题表示和关键点,以利用大型语言模型(LLMs)的上下文学习能力来执行文本到SQL的任务。
  • 据我们所知,我们是第一个探索开源大型语言模型在文本到SQL任务的上下文学习 in-context learning和监督微调supervised fine-tuning方面的团队。我们通过应用监督微调(SFT)于文本到SQL任务,提供了关于开源大型语言模型潜力的见解。
  • 我们还从成本效益的角度实证比较了不同的提示,这为实际应用中的文本到SQL提供了实用的指导。
  • 最后但同样重要的是,我们提出了一种新解决方案,名为DAIL-SQL,它成功地利用了大型语言模型的上下文学习能力,并在性能和Token效率之间实现了平衡。值得注意的是,它以86.6%的执行准确率刷新了Spider排行榜,比最佳现有技术解决方案高出1.3%,且Token成本更低。

2 任务概述

文本到SQL旨在自动将自然语言问题转换为SQL查询。它弥合了非专家用户与数据库系统之间的差距,极大提高了数据处理的效率,并促进了更广泛的应用,如智能数据库服务、自动数据分析和数据库问答。然而,由于完全理解自然语言问题和生成正确SQL查询的难度,文本到SQL仍然是一项颇具挑战性的任务[18, 39]。

数据库和自然语言处理社区已经进行了大量关于文本到SQL的研究。一些早期研究采用预定义规则或查询枚举来处理文本到SQL的任务[4,40,44],或者将其视为序列到序列任务,专注于用编码器-解码器架构训练机器学习模型[6, 36, 38]。随着深度学习的快速发展,许多技术被应用于辅助文本到SQL的任务,例如注意力机制[27]、图表示[17,23,38,51,55,60]、句法解析[15,22,43,52]等。其中最具代表性的是BERT[11],它已被广泛用于文本到SQL,并在当时取得了最佳性能[5, 56]。此外,为了缩小文本到SQL研究与实际应用之间的差距,已经发布了许多大规模基准数据集,包括WikiSQL[62]、Spider[57]、KaggleDBQA[21]、BIRD[24]等。在这些巨大努力下,研究界在文本到SQL方面取得了令人瞩目的进展。

最近,大型语言模型(LLMs),如OpenAI的GPT-4[30]和Meta的LLaMA[48],已成为自然语言处理和机器学习的一个里程碑。不同于一般的机器学习模型,LLMs在大量文本语料库上进行预训练,能够执行各种自然语言任务。其基本操作原理是通过输入提示逐步生成下一个最大概率的Token。因此,使用LLMs解决文本SQL任务,核心要点是要找到最优的提示词,也称为提示工程。

具体来说,根据提示中提供的示例数量,提示工程被划分为两种场景:零样本场景和少样本场景。在零样本场景中,不提供任何示例,主要挑战在于有效表示自然语言问题,包括整合相关信息,如相应的数据库模式 [7,13,26,50]。在本文中,表示自然语言问题及相关信息的过程被称为问题表示。而在少样本场景中,有有限数量的示例可用,因此除了问题表示外,我们还需要研究如何选择最有用的示例,并将其适当组织在提示中。在自然语言处理中,上述大型语言模型从上下文示例中学习的过程被称为上下文学习in-context learning [12]。它使大型语言模型能够从输入提示中识别显式或隐式的模式,并生成相应的输出。这样,大型语言模型在推理过程中能够执行新任务,而无需任何显式的任务特定训练阶段。最近的研究 [14,28,37] 证实了包含示例对有效上下文学习的重要作用。在本文中,我们将在示例选择和示例组织的范围内讨论上下文学习。

尽管在先前的研究 [7,19,26,29,46] 中已经证明大型语言模型在零样本和少样本场景中都表现出色,但它们的表现还可以通过监督微调(SFT)进一步提升,该方法使用额外的特定于任务的训练数据来提升大型语言模型(LLMs),使其更适合特定的下游任务。在最近的研究中,监督微调被用作 对齐范式paradigms of Alignment ,使LLMs的行为保持一致,以避免生成冒犯性、有偏见的回应和幻觉