本文聚焦于利用LLMs进行Text-to-SQL任务,并指出缺乏系统性基准测试限制了有效、高效和经济的LLM-based Text-to-SQL解决方案的发展。研究者首先系统地比较了现有的提示工程方法,并分析了它们的优缺点。基于这些发现,提出了一个新的综合解决方案,名为DAIL-SQL,该解决方案在Spider排行榜上以86.6%的执行准确率刷新了SOTA。
Text-to-SQL任务是将自然语言问题转换成SQL查询,这对自然语言处理和数据库领域都是一项挑战。近年来,大型语言模型(LLMs)成为Text-to-SQL任务的新范式。特别是,GPT-4实现了在Spider排行榜上85.3%的执行准确率。尽管已有研究取得进展,但LLM基础的Text-to-SQL解决方案的提示工程缺乏系统性研究。目前研究集中在问题表示、示例选择和示例组织上,以适应LLM的偏好和性能。
与OpenAI LLMs相比,开源LLMs的性能和上下文理解能力相对有限,需要通过监督式微调来提升。效率是LLM基础Text-to-SQL的另一个关键挑战,尤其是在使用多个示例的上下文学习提示时。
为了应对这些挑战,本研究旨在提供一个全面、系统和公平的LLM基础Text-to-SQL的基准评估。具体包括:
Text-to-SQL的目标是将自然语言问题自动转换成SQL查询,促进了智能数据库服务、自动数据分析和数据库问答等应用的发展。由于理解自然语言问题和生成正确SQL查询的难度,Text-to-SQL仍然是一个充满挑战的任务。最初的研究集中于用预定义规则、查询枚举或将其视为序列到序列任务来解决Text-to-SQL任务。随着深度学习的迅速发展,例如注意力机制、图表示、语法解析等技术被应用于Text-to-SQL任务。BERT是Text-to-SQL领域广泛使用的技术之一,在当时取得了最佳性能。
随着大型语言模型(LLMs)的兴起,如GPT-4和LLaMA等LLMs成为自然语言处理和机器学习的新里程碑。LLMs是在大量文本语料上预训练的,能够执行各种自然语言任务。其操作原理是基于输入提示逐步产生概率最高的下一个词。在用LLMs处理Text-to-SQL任务时,关键是找到最佳的提示(Prompt)。根据在提示中提供的示例数量,提示工程分为零次示例(Zero-shot)和少次示例(Few-shot)场景。零次示例场景的挑战是有效地表示自然语言问题,包括数据库模式等相关信息。少次示例场景下,除了问题表示,还需要研究如何选择最有帮助的示例并适当地组织它们。LLMs通过上下文学习从输入提示中识别显式或隐含的模式,并生成相应的输出。尽管以前的研究证明LLMs在零次和少次示例场景下有效,但通过监督式微调,可以进一步提升它们的性能。
本文将对Text-to-SQL的问题表示、上下文学习和监督式微调进行系统性研究和讨论,这些是基于大型语言模型的Text-to-SQL的三个关键要素。
本节重点关注问题表示、上下文学习和监督式微调这三个方面。在这一部分,将为这三个问题提供正式定义,系统地回顾它们现有的解决方案,并指出现有技术中的潜在问题。为了解决这些问题,本文提出了一种新的Text-to-SQL提示工程方法,名为DAIL-SQL,该方法刷新了Spider排行榜上的最佳性能,达到了86.6%的执行准确率。
在零次示例场景下,我们首先讨论Text-to-SQL的问题表示。考虑到针对特定数据库D的自然语言目标问题,问题表示的目标是最大化LLM模型M生成正确SQL的可能性:
其中函数(·, ·)决定了目标问题的表示方式,以及数据库D的模式中的有用信息。此外,(·, ·)还可以包括指令语句、规则含义和外键信息。
本文调查了零次示例场景下的不同选择,并从文献中选择了五种最具代表性的方法进行比较。
表1总结了这五种表示方法,并列出了它们在原始论文中的详细信息。注意到,由于不同表示法在不同LLM上进行实验,并集成到不同框架中,这使得它们难以进行公平且有效的比较。此外,外键信息和规则含义等单个组件的具体作用仍然不清楚。因此,进行系统性研究以更好地了解问题表示,并通过公平比较研究它们的优缺点是必要的。
上述问题表示方法使LLM能够通过零次学习直接输出期望的SQL。然而,通过上下文学习,LLM可以在Text-to-SQL任务中表现得更好,其中在输入提示中只提供少数示例。因此,在这一小节中讨论上下文学习的关键点:示例选择和示例组织。首先给出上下文学习的公式化,以便于进一步讨论。
Text-to-SQL的上下文学习涉及选择最有帮助的示例 Q ′ Q' Q′,并决定如何将这些选定示例的信息组织到提示中。接下来,我们将讨论这两个子任务:示例选择和示例组织。
这里总结了以前研究中的各种示例选择策略:
上述策略只关注使用目标问题或查询选择示例。然而,根据以前的研究,上下文学习本质上是从类比中学习。在Text-to-SQL的情况下,目标是生成与给定问题匹配的查询,因此LLM应该学习从问题到SQL查询的映射。因此,本文指出,在示例选择期间,考虑问题和SQL查询可能有助于Text-to-SQL任务。
示例组织在决定上述选定示例的哪些信息将被组织到提示中发挥着关键作用。将现有研究中的策略归纳为两类(见下图):
为解决示例选择和组织中提到的问题,本节提出了一种新的Text-to-SQL方法,命名为DAIL-SQL。在示例选择方面,受 M Q S S MQS_S MQSS和 Q R S S QRS_S QRSS的启发,提出了DAIL选择( D A I L S DAIL_S DAILS),考虑问题和查询来选择候选项。具体来说:
这样,选定的前个示例在问题和查询上都具有良好的相似性。
在组织方面,本文提出了一种新的示例组织策略DAIL组织( D A I L O DAIL_O DAILO),在质量和数量上进行权衡。具体而言, D A I L O DAIL_O DAILO呈现了问题 q i q_i qi和相应的SQL查询 s i s_i si,如清单8所示。作为 F I O FI_O FIO和 S O O SO_O SOO之间的折中方案, D A I L O DAIL_O DAILO保留了问题-SQL映射,并通过删除代价昂贵的数据库模式来减少示例的token长度。
DAIL-SQL选择 C R P CR_P CRP作为问题表示方式,因为它提供了数据库的全面信息,包括对于LLMs重要的主键和外键信息。这有助于LLMs更好地理解提示并生成准确的SQL查询。
总体而言,DAIL-SQL通过其独特的问题表示和智能的示例选择与组织,有效地提高了Text-to-SQL任务的性能,实现了Spider排行榜上86.2%的执行准确率。DAIL-SQL还可以与其他组件集成,例如加入自我一致性策略以进一步提高性能,达到86.6%的执行准确率,尽管这会带来更高的时间和成本开销。
为了增强LLM在零次示例场景中的性能,Text-to-SQL方法的流行选择是上下文学习。作为一个有前途的替代选择,监督式微调迄今为止还未被广泛探索。与其他语言任务的监督式微调类似,我们可以将其应用到Text-to-SQL领域,提高LLM在这个下游任务上的性能。这里首先提供一个简要的公式化定义。
给定一个大型语言模型 M M M和一组Text-to-SQL训练数据 T = ( q i , s i , D i ) T = {(q_i, s_i, D_i)} T=(qi,si,Di),其中 q i q_i qi是自然语言问题, s i s_i si是对应的数据库 D i D_i Di上的查询,SFT的目标是最小化经验损失函数L,该函数衡量生成的查询与真实查询之间的差异。这一过程涉及两个子任务:使用监督数据T对给定的LLM M M M进行微调以获得优化后的LLM M ∗ M_∗ M∗,以及寻找最佳的问题表示方式。
在数据准备和微调过程中,研究者使用特定于Text-to-SQL的数据集T生成<提示-响应>对,将目标问题和给定数据库作为提示,将期望的查询作为LLM的响应。微调后,优化的LLM M ∗ M_∗ M∗可用于推理,即通过自然语言问题生成查询。值得注意的是,在微调和推理过程中都使用相同的问题表示方式。研究将进行一系列实验,并探讨SFT在Text-to-SQL中的巨大潜力。
由于资源限制,本文仅测试了两种规则暗示,更多规则的探索可以进一步促进基于LLM的Text-to-SQL解决方案。同时仅使用Spider训练集对开源LLM进行微调,更多Text-to-SQL数据将进一步增强LLM性能。Spider和Spider-Realistic的数据库可能不够大,如果Text-to-SQL任务中涉及大量表格,可能会出现新的有效性和效率挑战。当前评估指标更注重正确性而非效率,鼓励LLM在正确的SQL选项中生成更高效的SQL是一个重要且未探索的问题。
本文对基于大型语言模型(LLM)的Text-to-SQL进行了系统性研究,涵盖了提示工程(prompt engineering)和监督式微调(supervised fine-tuning)两个方面。作者指出,现有的Text-to-SQL的在情境中学习(in-context learning)技术忽视了问题与查询之间的映射关系,以及示例质量与数量之间的权衡。为解决这些问题,本文提出了一种新的提示工程方法,命名为DAIL-SQL,它以86.6%的执行准确率刷新了Spider排行榜,并位居第一。关于监督式微调,本文展示了开源LLM在Text-to-SQL中的巨大潜力,强调了训练语料和模型规模的重要性,并指出微调后在情境学习能力的衰退。此外,还对现有解决方案在效率方面进行了观察,表明DAIL-SQL更为高效,并强调了在提示工程中Token效率的重要性。所有这些都是未来研究的开放挑战和机遇。作者希望这些工作能够提供一个关于Text-to-SQL的全面研究,为实际应用提供一些指导,并帮助人们推进其前沿。