摘要
存储在关系数据库中的数据量不断增加,导致在各个领域中需要高效地查询和利用这些数据。然而,编写SQL查询需要专业知识,这对非专业用户来说是一个挑战,他们试图访问和查询数据库。文本到SQL解析通过将自然语言查询转换为SQL查询,解决了这一问题,从而使数据库访问对非专业用户更加友好。为了利用大型语言模型(LLMs)的最新进展,一系列新方法应运而生,主要集中在提示工程和微调上。本调查提供了LLMs在文本到SQL任务中的全面概述,讨论了基准数据集、提示工程、微调方法以及未来的研究方向。我们希望这篇综述能够帮助读者更广泛地理解该领域的最新进展,并提供一些关于其未来发展方向的见解。
介绍
在大数据时代,很大一部分数据存储在关系数据库中,这些数据库是各种组织数据管理系统的核心。随着数据量的不断增加,高效查询和利用这些数据的能力已成为提升各行业竞争力的关键因素。关系数据库需要使用SQL进行查询,但编写SQL需要专业知识,这为非专业用户查询和访问数据库设置了障碍。
文本到SQL解析是自然语言处理(NLP)领域中的一项成熟任务,其目的是将自然语言查询转换为SQL查询,从而弥合非专业用户与数据库访问之间的差距。例如,假设有一个名为cities的表,包含三列:city_name(类型:字符串)、population(类型:整数)和country(类型:字符串)。如果我们得到自然语言查询“查找美国人口超过100万的城市”,文本到SQL解析技术应自动生成正确的SQL查询。
SELECT city_name FROM cities WHERE population > 1000000 AND country = ’United States’.
研究人员在这一领域取得了显著进展。最初,基于模板(template-based)和基于规则(rule-based)的方法被采用,这些方法涉及为各种场景创建SQL模板。虽然基于模板的方法显示出潜力,但它们需要大量的手动工作。随着深度学习的快速发展,Seq2Seq方法已成为主流。Seq2Seq模型提供了一种端到端的解决方案,直接将自然语言输入映射到SQL输出,从而消除了语义解析或基于规则系统等中间步骤的需要。
在Seq2Seq方法中,预训练语言模型(PLMs),作为大型语言模型(LLMs)的前身,在文本到SQL任务中显示出潜力。得益于大规模语料库中的丰富语言知识,PLMs在那个时期成为最先进的解决方案。
随着模型规模和训练数据的不断增长,预训练语言模型自然演变为大型语言模型(LLMs),展现出更强大的能力。由于规模法则和其涌现能力,LLMs在聊天机器人、软件工程和代理等多个领域做出了重大贡献。LLMs的显著能力促使研究人员探索其在文本到SQL任务中的应用。图2展示了文本到SQL领域主流方法的演变,由SPIDER测试数据集中的执行准确性表示。当前文献主要关注LLMs的两种主要方法:提示工程和微调。提示工程利用RAG、少样本学习和推理等方法,而微调涉及在任务特定数据上训练LLM。提示工程和微调之间存在权衡,通常提示工程需要较少的数据,但可能导致次优结果,而微调可以提高性能,但需要更大的训练数据集。
本文旨在全面调查LLMs在文本到SQL任务中的应用。我们概述了LLMs的特性和相对于传统模型的优势,并在以下方面介绍了基于LLM的Text2SQL:
-
文本到SQL基准数据集:我们强调,尽管之前的基准数据集在测试LLM能力方面仍有一定价值,但我们需要更具挑战性和现实性的基准数据集。我们总结了两个值得注意的基准数据集,即BIRD和Dr.Spider,它们在LLM广泛使用后创建,提供了大规模表模式和多样化扰动的新挑战。
-
提示工程方法:在全面调查相关论文后,我们将文本到SQL的提示工程方法分为三个阶段:预处理、推理和后处理。预处理将处理问题和表模式的格式和布局。我们还特别介绍了预处理阶段的模式链接技术。在推理阶段,我们解释了基于LLM的文本到SQL方法如何在提供用户问题和相应数据库模式时生成相应的SQL查询。在最终的后处理阶段,我们介绍了如何在生成SQL查询后提高基于LLM的文本到SQL方法的性能和稳定性。
-
微调方法:我们强调了微调方法对文本到SQL的重要性,并根据一般的微调过程将其分解为四个主要组成部分:数据准备、预训练模型选择、模型微调和模型评估。值得一提的是,除了对微调方法进行全面分析外,我们还强调了在数据准备和模型评估中利用LLM的潜力。
未来方向:我们讨论了在文本到SQL任务中应用LLMs的可能未来方向,如隐私问题、自主代理、复杂模式、基准测试和领域知识。
我们的目的是,这篇综述将成为该领域新人的宝贵资源,并为研究人员提供有价值的见解。
研究现状
大模型和基于大模型的Text2SQL
大型语言模型(LLMs)已成为自然语言处理和机器学习的里程碑。LLMs的概念源于不断扩大预训练语言模型(PLMs)的参数规模和训练数据量,从而产生了令人惊讶的能力,称为涌现能力,这些能力在小规模的PLMs中并不存在。一个涌现能力的例子是少样本学习,这意味着LLMs可以通过在提示中提供几个适当的任务演示来完成下游任务,而无需进一步训练。另一个例子是遵循指令的能力,LLMs已被证明能够对描述未见任务的指令做出适当响应。
由于LLMs的涌现能力和LLMs的基本操作原理,即根据输入提示逐步生成概率最高的下一个词,提示工程成为将LLMs应用于下游任务的两个主要流派之一。提示工程的代表方法包括检索增强生成(RAG)、少样本学习和推理。另一个流派是微调,它遵循PLMs的“预训练和微调”学习范式,旨在提升特定领域的性能并解决隐私问题。微调的一般过程主要包括数据准备、预训练模型选择、模型微调和模型评估。
文本到SQL是自然语言处理(NLP)和数据库社区中的一项具有挑战性的任务,涉及将给定关系数据库上的自然语言问题映射为SQL查询,这一任务也因LLMs的出现而发生了变革。我们在图1中总结了基于LLM的文本到SQL系统的通用框架。基于LLM应用的两个主要流派,我们将基于LLM的文本到SQL方法分为两类:提示工程和微调。对于提示工程方法,我们通常设计一个包含任务描述、表模式、问题和额外知识的结构化提示,并同时利用上下文学习和推理方法。对于微调方法,我们通常生成或收集文本到SQL数据集,选择合适的预训练LLMs和微调方法(如LORA),并比较微调前后的测试结果,以了解模型性能的变化。
传统方法和基于大模型的Text2SQL的方法对比
在LLMs广泛应用之前,文本到SQL方法主要有两种流派。一种流派是利用序列到序列(Seq2Seq)模型,其中编码器设计用于捕捉自然语言(NL)问题和相应表模式的语义,解码器则基于编码的问题表示逐个生成SQL查询令牌。这种方法中的一些著名方法包括IRNet、SQLNet、Seq2SQL、HydraNet、Ryansql、Resdsql和ISESL-SQL。另一种流派涉及微调预训练语言模型(如BERT),这些模型利用大规模文本集合中的广泛知识,并已被证明在提升下游文本到SQL解析任务的性能方面有效。
我们认为,传统文本到SQL方法与基于LLM的方法之间有两个显著的区别:
-
新范式:传统文本到SQL方法需要训练,而LLMs通常可以绕过这一要求。利用LLMs的指令遵循能力,LLMs可以通过适当的指令和信息完成文本到SQL任务。
-
统一架构:根据之前的调查,传统方法中的编码器和解码器可以使用多种架构设计,如LSTM、Transformer,甚至GNNs。相比之下,LLMs采用统一的基于Transformer的架构,这不仅便于扩展,还简化了实现过程。
为什么使用基于大模型的Text2SQL
近年来,用于文本到SQL任务的LLMs数量急剧增加。在对近期论文进行全面调查后,我们确定了这一趋势的几个关键原因,总结如下:
-
性能提升:图2展示了文本到SQL领域主流方法的进展,由SPIDER测试数据集中的执行准确性表示。可以看到,基于LLM的方法显著提升了最先进(SOTA)性能,展示了基于LLM方法的显著能力。列出的参考文献支持这一观察。
-
泛化能力和适应性:如上所述,LLMs引入了一种新范式,即提示工程,得益于其遵循指令的能力,使LLMs可以轻松转移到不同设置中,而无需额外训练。此外,LLMs的上下文学习能力进一步增强了其泛化和适应性,因为它们可以从提供的示例中学习,无缝适应各种设置。
-
未来改进:基于LLM的方法具有令人期待的改进前景。由于全球社区优先考虑LLMs的增强,努力和资源集中在支持LLMs的研究上。这包括扩展LLMs、创建新的提示方法、生成高质量和广泛的数据集,以及在各种任务中微调LLMs。LLM社区的进展无疑将继续推动基于LLM的文本到SQL方法达到新的SOTA。
行业基准
高质量的数据集在文本到SQL任务的训练和测试中起着至关重要的作用。之前的基准数据集,如[17, 25–27, 62, 67, 86, 102–104, 113],对文本到SQL领域的研究进展做出了重要贡献,尤其是在ChatGPT和GPT-4出现之前。然而,随着ChatGPT和GPT-4的引入,LLM开始广泛用于文本到SQL任务,从而不断提升了这些任务的最先进(SOTA)水平。例如,Spider数据集的SOTA(执行结果的准确性)从大约73%提高到了91.2%。
这些数据集不仅为研究人员提供了评估模型性能的标准,还推动了文本到SQL技术的不断进步。通过在高质量数据集上进行训练和测试,模型能够更好地理解和生成SQL查询,从而在实际应用中表现更出色。
在此,我们总结了两个在LLM广泛使用后诞生的值得注意的基准数据集:
BIRD:这是一个包含大规模表模式和多样化扰动的新基准数据集。BIRD旨在提供更具挑战性的任务,以评估模型在复杂和多样化环境中的性能。
Dr.Spider:这是另一个在LLM广泛使用后创建的新基准数据集,提供了新的挑战。Dr.Spider通过引入更复杂的查询和数据库模式,进一步推动了文本到SQL技术的发展。
这些新的基准数据集不仅为研究人员提供了更严格的测试标准,还帮助推动了文本到SQL领域的技术进步,确保模型在实际应用中能够高效、准确地执行任务。
BIRD
大多数数据集[17, 25–27, 62, 67, 86, 102–104, 113]专注于具有少量数据库值的数据库模式,这导致了学术研究与实际应用之间的差距。为了解决这一差距,[49]引入了BIRD数据集。BIRD数据集包含12,751个文本到SQL对和95个数据库,总大小为33.4 GB,涵盖37个专业领域。它还强调了新的挑战,包括脏数据和噪声数据库值、自然语言(NL)问题与数据库值之间的外部知识关联,以及SQL效率,特别是在大规模数据库的背景下。实验结果表明,即使是最有效的文本到SQL模型,如GPT-4,在执行准确性上也仅达到54.89%,远低于人类结果的92.96%,这证明挑战依然存在。
Dr.Spider
[9]指出,文本到SQL模型对任务特定的扰动很脆弱,但之前精心设计的鲁棒性测试集通常只关注个别现象。为了弥合这一差距,[9]引入了Dr.Spider数据集。基于Spider数据集,Dr.Spider设计了17种对数据库、自然语言问题和SQL查询的扰动,从多个角度衡量鲁棒性。为了收集更多样化的自然问题扰动,[9]利用大型预训练语言模型(PLMs)以少样本方式模拟人类在创建自然问题时的行为。实验结果表明,即使是最鲁棒的模型,整体性能也下降了14.0%,在最具有挑战性的扰动上性能下降了50.7%。
提示词工程
提示工程(Prompt Engineering),有时也称为上下文学习(In-Context Learning),是指构建LLM能够理解的指令。从开发者的角度来看,这意味着在与LLM交互时,通过设计提示词来定制LLM在特定任务上的输出。由于自回归解码特性,大多数LLM根据当前可见的所有前置文本(也称为上下文)来预测后续文本。我们将自回归解码描述为方程1,其中 y t y_t yt表示LLM将输出的下一个令牌, x x x表示用户提供的提示令牌。提示词作为上下文的设计将影响所有即将到来的令牌的概率分布,从而影响最终的生成结果。
y t = a r g m a x P ( y t ∣ y 1 : t − 1 , x ) y_t=arg max P(y_t|y_{1:t-1},x) yt=argmaxP(yt∣y1:t−1,x)
在对相关论文进行全面调查后,我们将文本到SQL的提示工程方法分为以下三个阶段:
- 预训练
在实际场景中,从事Text2SQL的专家经常被问题描述的不清晰和数据库模式的模糊性所困扰。这种情况同样适用于LLMs,并促使对Text2SQL问题进行预处理。我们的提示工程方法的预训练部分将包括三个部分:
- 问题描述的抽象表示:将自然语言问题转换为更结构化和抽象的表示,以便LLM更好地理解。
- 数据库模式的选择性链接:将问题中的实体与数据库模式中的表和列进行链接,以帮助LLM理解问题与数据库之间的关系。
- 引入额外的SQL知识或外部知识:在提示中包含与问题相关的SQL知识或外部知识,以增强LLM生成正确SQL查询的能力。
- 推理阶段
所谓的推理阶段是指在提供用户问题和相应数据库模式时生成相应的SQL查询。这一阶段可以逻辑上分为两个部分:工作流程设计和演示使用。从预处理到SQL生成,大多数工作将设计其推理工作流程,要么采用自定义方式,要么基于推理模式,并决定是否使用演示。我们将从介绍文本到SQL的工作流程设计开始,包括著名的推理模式,如思维链(Chain-of-Thought)、从少到多(Least-to-Most)和分解(Decomposition)。之后,我们将介绍演示方法,包括零样本方法和少样本方法。在少样本部分,我们将强调演示风格和选择的重要性。
- 后处理
为了增强基于LLM的文本到SQL方法的性能和稳定性,可以选择在推理后进一步优化生成的结果。我们将这些操作称为后处理。常见的Text2SQL后处理方法包括自我修正(Self-Correction)和一致性方法(也称为自我一致性(Self-Consistency)和交叉一致性(Cross-Consistency))。
p r e d _ S Q L = P o s t _ p r o c