当前位置: 首页 > backend >正文

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

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

在这里插入图片描述

文章目录

  • 摘要
  • 1 引言
  • 2 初步介绍
    • 2.1 大型语言模型
    • 2.2 文本到SQL
    • 2.3 幻觉
  • 3 方法论
    • 3.1 对齐
    • 3.2 自学小样本
    • 3.3 预处理
    • 3.4 提取
    • 3.5 生成
    • 3.6 精炼
    • 3.7 算法
    • 3.8 优化
  • 4 实验
    • 4.1 实验设置
    • 4.2 主要结果
    • 4.3 模块消融
  • 结论

摘要

尽管多智能体协作的大型语言模型(LLMs)在文本到SQL任务中取得了显著突破,但其性能仍受多种因素限制。这些因素包括框架的不完整性、未能遵循指令以及模型幻觉问题。为解决这些问题,我们提出了OpenSearch-SQL,它将文本到SQL任务划分为四个主要模块:预处理、提取、生成和细化,以及基于一致性对齐机制的对齐模块。该架构通过对齐模块对齐智能体的输入和输出,减少了指令遵循失败和幻觉现象。此外,我们设计了一种名为SQL-Like的中间语言,并基于SQL-Like优化了结构化CoT。同时,我们开发了以自教查询-CoT-SQL为形式的动态少样本策略。这些方法显著提升了LLMs在文本到SQL任务中的性能。

在模型选择方面,我们直接应用基础LLMs,无需任何预训练,从而简化了任务链并增强了框架的可移植性。实验结果显示,OpenSearch-SQL在BIRD开发集上的执行准确率(EX)达到69.3%,在测试集上准确率为72.28%,基于奖励的有效性效率得分(R-VES)为69.36%,三个指标在论文提交时均排名第一。这些结果展示了所提方法在有效性和效率上的全面优势。

1 引言

发展历史:文本到SQL任务旨在从自然语言查询(NLQ)自动生成结构化查询语言(SQL)查询。该任务能够提升无需掌握SQL知识即可访问数据库的能力[17]。由于文本到SQL问题极其困难,这些系统几十年来一直是数据库界的圣杯[17]。早期的工作将查询答案定义为图结构[14, 15]或基于句法结构解析问题[16,38]。后续方法将文本到SQL任务视为神经机器翻译(NMT)问题[11, 37]。近期,随着大型语言模型的发展,研究人员通过诸如监督微调(SFT)[19,23,35]、思维链(CoT)[40]、智能体(Agents)[6,27]以及上下文学习(In-Context Learning)[7, 36]等方法,越来越多地完成了任务,所取得的结果大大超越了以往的方法。

局限性:尽管由大型语言模型驱动的方法显著提高了文本到SQL任务能力的上限,但我们之前的分析显示:

  • L1问题。由于总体框架的模糊性,在方法论层面存在一些差距。这阻碍了这些方法发挥其潜力。例如,缺乏对数据库中存储信息的验证,生成结果没有错误纠正,以及与少样本学习的缺失相关的问题。
  • L2问题。由大型语言模型驱动的方法通常依赖于多智能体协作。然而,由于大型语言模型的不稳定性以及缺乏保证智能体之间的一致性和耦合,后续执行的智能体可能不使用或仅部分使用先前运行智能体的输出。这导致累积的幻觉和性能损失。
  • L3问题。指导大型语言模型的指令和步骤显著影响生成的SQL质量。在大型语言模型出现之前,为了解决此问题,开发了使用中间语言生成SQL的方法[17],但当前关于指令构建的研究仍然不足

人类启发:受到上述挑战的启发,我们对人类在完成文本到SQL任务的工作流程进行了详细分析:理解数据库结构并选择获取SQL所需的特定表格、列和值。这个过程通常需要执行几个简单的SQL查询,例如调查某一列值的特定形式或检索特定值在数据库中的存储方式。接下来,根据自然语言问题的具体情况,选择合适的聚合函数和SQL语法来构建SQL查询的主体,然后填充相关语句。最后,人类通常会根据查询结果逐步修改SQL,直到满足要求。对于更复杂的问题,人类往往会选择咨询或借鉴他人的公式化解决方案。基于这种方法,我们开发了OpenSearch-SQL方法,具体细节如下。

方法框架:为了解决L1问题,我们的研究定义了一个基于人类完成SQL构建过程的标准文本到SQL框架。这可以涵盖当前关于大型语言模型驱动的文本到SQL任务的研究。我们认为一个完整的文本到SQL任务框架应该包括四个步骤:预处理、提取、生成、精炼:

  • 预处理。处理并构建所有对自然语言问题不敏感的辅助信息,包括数据库模式信息、嵌入式数据库、小样本库等。
  • 提取。提取并选择生成SQL所需的必要元素,包括子自然语言问题(NLQ)、少样本学习,以及数据库中的表格、列、值等。
  • 生成。基于SQL语法、少样本学习和准备的信息,将自然语言问题翻译成SQL。
  • 精炼。根据执行结果使用对齐策略和规则检查和优化SQL。然后,基于自一致性和投票结果选择最终的SQL。

对于L2问题,我们分析了多智能体协作驱动的文本到SQL任务中的常见幻觉,并为这些幻觉设计了一种基于一致性对齐的对齐智能体。通过确保特定智能体的功能、输入和输出的一致性,我们的目标是在模型生成过程中减少幻觉。这种对齐方法也可以扩展,以便对智能体的输出进行有针对性的调整。如图1所示,我们提出了OpenSearch-SQL框架,它由标准的文本到SQL框架与对齐结合而成。

在这里插入图片描述
此外,我们使用这个框架扩展了对由大型语言模型(LLMs)驱动的多智能体方法的研究。

对于L3问题,我们开发了一种自教少样本增强机制,用思维链(CoT)信息补充Query-SQL对,创建Query-CoT-SQL对。这种丰富的少样本学习方法可以提高大型语言模型的性能。另外,我们在CoT逻辑中设计了一种名为SQL-Like的中间语言,使大型语言模型能够首先生成SQL的主干,然后再生成具体的SQL细节,从而降低模型的复杂度。

在实际应用中,为特定查询任务准备大量定制化SQL训练数据并非易事。因此,考虑到现实世界的需求,我们的目标不仅是特定评估任务中取得良好成绩,还要确保所提出的方法具有强大的可迁移性。我们希望该方法能够轻松应用于各种数据库查询任务,而无需进行后期训练。这意味着在遇到任何问题时,我们只需修改代理和对齐方法,无需重新训练模型,从而以高质量满足用户需求。

基于此,我们在一个预训练的LLM模型上直接实现了我们的方法,没有采用任何监督微调(SFT)或强化学习(RL)。在实验方面,我们选择了被广泛认可的BIRD数据集[20]进行测试,该数据集记录了三个指标:开发集上的执行准确率(EX)、测试集上的EX以及测试集上的基于奖励的有效效率得分(R-VES)。我们的实验结果表明,我们在开发集上达到了69.3%的EX,在测试集上达到了72.28%的EX,以及69.3%的R-VES得分。在提交时,所有三个指标在排行榜上均名列第一,这表明我们的方法不仅生成了准确的SQL语句,而且在时间效率方面也有明显优势。我们希望这种基于一致性对齐的方法将激发未来研究探索更高效的一致性对齐策略。

总结来说,我们的贡献如下。

  • 据我们所知,我们是首个提出基于一致性对齐的多智能体协作框架用于文本到SQL任务的。这种对齐机制显著减少了智能体之间信息传输的损失以及智能体生成结果中的幻觉。

  • 我们引入了一种新颖的自教动态小样本方法和一种类SQL的CoT机制。这提高了大型语言模型在生成SQL时的性能和稳定性。

  • 我们提出的方法OpenSearch-SQL没有使用微调也没有引入任何专门的数据集。在提交时,它在BIRD基准验证集上达到了69.3%的EX,在测试集上达到了72.28%的EX,R-VES为69.36%,均排名第一。

2 初步介绍

我们首先介绍本文依赖的两个重要模块:大型语言模型(LLMs)和文本到SQL任务。

2.1 大型语言模型

通过在大规模文本数据上进行无监督学习,预训练的大型语言模型已经获得了广泛的语言知识和语义信息。这种预训练通常采用自回归架构(如类GPT模型)或自编码结构(如类BERT模型)。大型语言模型可以通过微调在各种下游任务上实现出色的性能。自从大型语言模型深度学习时代的发展以来,与经典模型和方法相比,文本到SQL任务有了显著的进步,当前的最先进技术完全依赖于大型语言模型的性能。

2.2 文本到SQL

文本到SQL任务可以定义为:一个任务,它根据数据库信息S、特定模型F(·|0)和特定提示P,将自然语言问题Q转换为SQL查询Y。数据库中的信息被定义为S。因此,文本到SQL任务可以被定义为:

在这里插入图片描述

在当前的顶尖文本到SQL任务中,多智能体协作已成为提升性能的关键策略。常见模块包括值检索、模式链接、少样本驱动、CoT提示、SQL校正和自一致性。受这些方法的启发,本文首先系统地组织了这些模块。我们将现有方法分为四个阶段:预处理、提取、生成和精炼。预处理与特定的自然语言问题无关,旨在获取有关数据库结构的清晰信息,并准备其他辅助信息以帮助模型生成SQL;提取分析特定查询并从准备好的信息中过滤出高质量的辅助信息;生成组织提取的信息并生成候选SQL;精炼阶段进一步优化候选SQL以提高SQL的质量。

基于此基础,我们提出了OpenSearch-SQL,一个基于动态少样本和一致性对齐机制的文本到SQL框架。动态少样本的设计旨在加强每个模块在任务各个阶段的性能,而对齐模块用于对齐文本到SQL的不同阶段,从而减少大型语言模型在多智能体协作工作流程中产生的幻觉。OpenSearch-SQL的设计简化了复杂的指令系统,侧重于通过对齐提高多智能体协作的有效性。在接下来的部分中,我们将详细介绍OpenSearch-SQL框架的具体组成部分。

2.3 幻觉

幻觉[46]是深度学习中的一个常见问题,通常指的是模型生成的内容与真实情况或预期结果不一致的情况,即模型产生不准确或不合理的信息。文本幻觉可能表现为以下形式:

  • 无关内容:模型生成的文本与输入或上下文无关,或者包含无关细节。
  • 错误事实:生成的文本包含错误或不存在的事实,或者在现实世界中不准确的信息。
  • 逻辑错误:生成的文本在逻辑上不一致或不合理。

在文本到SQL的过程中,这表现为:结果包含不存在的数据库信息、未能遵循提示中的指令,以及打字和语法错误。此外,为了便于处理,在文本到SQL任务中,我们还将包括由于非零温度下的随机性导致的结果偏差,以及由于微小提示变化导致的错误。因为幻觉的本质是训练过程与模型实际使用场景之间的差异。因此,对于幻觉问题,常见的处理方法包括:专门针对幻觉问题进行训练、使用自一致性机制减少随机性,以及后处理。由于本文聚焦于架构层面的优化,我们的工作旨在通过上述两种方法减少幻觉现象。

3 方法论

在本节中,我们将详细介绍OpenSearch-SQL的具体细节。在概述整个过程之前,我们将对“对齐”和动态少样本的核心概念进行更深入的描述。为了确保解释的流畅性,我们将每个阶段与其相应的“对齐”相结合,并按照它们在OpenSearch-SQL框架内操作的顺序进行描述。

3.1 对齐

大型语言模型(LLM)的幻觉[46]是一个影响LLM可用性的关键问题,它也存在于文本到SQL的任务中。此外,多智能体协作产生的累积错误加剧了LLM中的幻觉问题。例如,如果负责提取功能的智能体以某种方式从数据库中选择列,并因模型幻觉生成错误的列名,这个错误将在后续生成中持续存在,因为它缺乏对正确数据库结构的了解。因此,前一个智能体产生的幻觉会被继承下来,使得幻觉难以在多智能体LLM工作流中自发消失;总的幻觉量几乎是单调非递减的。

基于这一现象,我们将“对齐代理”定义为:

在这里插入图片描述

在文本到SQL任务中,常见的幻觉现象主要指指令遵循失败和输出结果的不稳定性。具体表现为:生成不存在的列、更改数据库列名、语法错误、数据库值与列不匹配,以及未能遵循提示中设定的规则。为了解决这些问题,我们提出了一种一致性对齐方法:在每个代理完成其输出后,使用一个对齐代理来对齐当前代理的输出与上游代理的输出,确保各个代理的功能实现逻辑一致性,并将对齐后的结果传递给下游代理。这种机制在某种程度上类似于残差连接[13],有效地扩展了多个代理之间的协作链条,同时最小化引入幻觉的可能性。每个对齐的细节将在下面的代理介绍中详细说明。

3.2 自学小样本

小样本是辅助大型语言模型(LLM)进行生成的重要方法。MCS-SQL[18]、DAIL-SQL[7]研究了问题表征在文本到SQL任务中的关键作用,并提出使用问题相似性来选择合适的小样本以驱动LLM生成SQL,取得了显著成果。

受此启发,我们尝试使用动态小样本以提高代理在文本到SQL任务中的效率。此外,我们还考虑了如何通过从样本中提取更多信息来更好地利用小样本。因此,在OpenSearch-SQL中,我们首先使用掩码问题相似性(MQs)[10]来选择相似的查询。然后,我们通过自学升级了Query-SQL格式的小样本

对于列表1中显示的Query-SQL对,我们使用LLM补充CoT信息,以将自然语言问题(NLQ)转换为SQL。

在这里插入图片描述
如列表2所示,这形成了包含逻辑信息的Query-CoT-SQL对。

在这里插入图片描述
与简单的查询-SQL对相比,这些自学的小样本(即Query-CoT-SQL)提供了更丰富的信息。

然后,对于改进的纠错,我们为各种错误类型准备了不同的小样本,使LLM能够更清晰地理解在改进过程中根据不同错误如何纠正SQL。小样本的格式如列表3所示,原始SQL中的具体错误和纠正建议对应于错误类型。

在这里插入图片描述

3.3 预处理

在预处理阶段,我们根据数据库的真实结构构建了数据库。此外,为确保由大型语言模型生成的SQL语句与数据库的实际状态一致,我们对数据库内的值进行了索引。这使得SQL能够避免可能因小字符差异而产生的错误。值得注意的是,我们仅对字符串类型的数据进行索引,以节省构建检索数据库所需的空间。

此外,动态少样本的构建也已完成。这包括添加CoT信息和针对不同错误类型设计的校正少样本示例。

总体而言,在预处理阶段,输入是数据库和训练集的信息。输出是向量数据库、为Query-CoT-SQL形式的少样本,以及数据库模式。该过程自动化,无需人工干预,完全由Agent驱动。

3.4 提取

提取的目标是基于特定的自然语言问题(NLQ)准备必要的信息,包括模式链接、存储的数据库值、少样本示例以及任何必需的指令。这部分与特定的数据库查询语言解耦,仅与数据存储格式和解决问题所需的辅助信息相关。例如,C3-SQL[6]利用清晰提示(CP)提供有效的提示,而DIN-SQL[27]则采用模式链接和分类分解来对NLQ进行分类和分解。

在这里插入图片描述

在OpenSearch-SQL中的提取过程包括实体提取、值提取和列过滤。提取后,我们使用信息对齐技术将提取的信息与输入进行匹配,以产生最终输出。我们在列表4中展示了提取提示及其输入和输出的格式。我们通过大型语言模型(LLM)获取候选列和值,并使用另一个简单的提示直接从自然语言问题(NLQ)中提取实体。具体细节如下:

实体提取。为了在数据库中找到相似值并进行列过滤,我们首先使用大型语言模型(LLM)理解并处理自然语言问题(NLQ)和基本数据库信息,以提取潜在的实体。然后,我们将一些预定义的实体术语与这些实体组织在一起,以便执行后续的值检索和列过滤。

值检索。从提取的实体中,我们执行向量检索,找到与实体词嵌入相似度最高的结果。由于嵌入相似性的特性,这种方法可以防止因拼写错误或其他字符级差异引起的不匹配。此外,对于短语和较长的文本,我们执行分割检索,以避免因数据库存储格式差异导致的召回失败。在召回阶段,我们过滤掉前K个最相似实体中低于特定阈值的部分,将其保留为最终结果。

列过滤。具体来说,我们使用两种方法来召回相关表和列。首先,我们利用大型语言模型(LLM)从完整的数据库信息中选择与自然语言查询(NLQ)相关的表格和列。然后,我们使用向量检索来找出数据库中与NLQ实体相似度超过一定阈值的列,并将这些列整合起来形成最终模式信息的初步子集。尽管这种多路径召回方法在过滤上可能缺乏一些精确性,但它在流程中更轻量且更为流畅。

信息对齐。在提取阶段结束时,我们使用信息对齐代理来对齐SELECT语句的风格:从自然语言查询中提取短语或子句,使其与生成的SELECT内容一一对应。这确保SELECT内容的数量和顺序符合预期。为了避免因不同表中具有相同名称的列而导致的选择遗漏,我们通过重新整合每个表的主键以及所有与列过滤中选定的列同名的列到列过滤结果中,来扩展模式信息,确保选定列的准确性和全面性。最后,所有提取的信息和对齐的内容将被输入到生成过程中。

3.5 生成

生成的定义是:使用合适的方法驱动大型语言模型(LLMs)生成特定组件并完成SQL。MAC-SQL[36]生成子SQL,然后将它们组装成最终结果,而DAIL-SQL[7]则通过小样本学习驱动LLMs生成SQL。此外,一些方法[18, 23, 34]在监督微调(SFT)期间利用大型语言模型(LLMs),或者生成多组SQL来完成任务。

在这里插入图片描述在这里插入图片描述

SQL生成。如上表所示,我们选择使用渐进式生成+动态小样本方法来更好地引导大型语言模型(LLM)生成SQL。具体来说,渐进式生成是一种定制的CoT方法,其格式与列表2相同。我们首先定义了SQL-like:一种忽略特定语法元素(如JOIN和函数格式)的SQL语言类型,旨在鼓励LLM更多地关注SQL内的逻辑而非格式。然后我们指导模型依次提供分析、SELECT语句的内容、相关列和值,以及SQL-like和SQL输出。这种渐进式生成强调LLM对生成SQL结构的理解,同时也便于识别LLM推理中的错误。对于单个自然语言问题(NLQ),我们允许大型语言模型(LLMs)生成多个候选SQL查询。在构建少样本示例时,系统根据查询(MQs)检索最相似的K个查询,并使用它们对应的Query-CoT-SQL形式作为最终指令中的少样本示例。

列表5(上表)通过一个例子展示了生成阶段输入输出的组成。

(1)在输入中,我们通过规则rule数据库模式db_info提供必要的输出要求和数据库信息,并通过少样本以Query-CoT-SQL格式提供类似示例fewshot相似值similar values提供与NLQ相关的数据库具体值,而信息对齐info aligment将数据集的SELECT风格与LLMs对齐。

(2)在输出中,我们要求按下面顺序生成:原因reason:分析NLQ,colums列:SQL中的相关列,值values:相关值,SELECT:SELECT语句的内容。然后,生成忽略语法格式的类SQL查询SQL-like,最终产生最终的SQL查询#SQL

对齐Alignments。SQL查询生成过程中的错误主要源于语法、数据库、自然语言查询(NLQ)和数据集风格的差异。此外,使用大型模型在较高温度下采样以获得多样化答案可能会引入错误和噪声。因此,我们尝试通过一种对齐机制来减少这些差异引起的偏差。具体来说,如列表6所示,该对齐机制包括以下三个组成部分:

  • 代理对齐Agent Alignments:确保数据库中的列和值在SQL中得到正确表示。如果存在不匹配,则进行更正。一个常见的例子是SQL中的WHERE条件与数据库中存储的信息不匹配。

  • 函数对齐:标准化SQL聚合函数以防止由错误表达式引起的错误。这包括处理不适当的聚合函数、嵌套和冗余的JOIN操作。

  • 风格对齐:解决与数据集特征相关的问题,例如使用IS NOT NULL以及选择MAX还是LIMIT 1。

完成上述步骤后,执行SQL,并在精炼过程中进行优化,根据执行结果做出最终选择。

3.6 精炼

精炼工作涉及优化和选择生成的SQL。这包括根据执行结果纠正错误,并从多个候选SQL中选择最佳答案。

由于大型语言模型生成结果的可变性以及在复杂任务中频繁出现指令遵循问题,我们提出一种基于校验的一致性对齐机制,以提高SQL的质量。如图2所示,在将生成的SQL对齐后,完善过程包括以下两个步骤:

在这里插入图片描述

(1) 校正:执行SQL并根据执行结果中的错误详情进行修复,例如语法错误或空结果。每种类型的错误对应不同的少样本和错误校正指令。此步骤的目的是为了避免由于小细节导致的结果缺失或执行失败等问题。

(2) 自一致性和投票:排除无法修复的SQL以及那些导致空答案的SQL,并选择执行结果中输出一致性最高的选项。此外,在具有相同答案的SQL查询中,我们选择执行时间最短的那个。这种方法实现了最终选定SQL在执行结果和执行速度上的双重提升。

在这里插入图片描述
值得一提的是,自一致性往往会导致更高的成本。在评估中,当仅生成一个SQL且未使用自洽机制时,OpenSearch-SQL v2在BIRD基准测试中仍然排名第一。

3.7 算法

在本节中,我们提供了OpenSearch-SQL的全面概述,并在算法1中展示了整个框架。在该算法中,我们以自然语言问题(NLQ)为例,涵盖了从预处理到最终生成SQL的每个具体步骤。

在这里插入图片描述

可以看出,在预处理阶段,我们首先逐表、逐字段地处理数据库,构建一个包含值和列名的索引数据库 D v D_v Dv,并同时生成数据库的原始模式 S S S

接下来,对于训练集中的Query-SQL对,我们使用 M p M_p Mp来生成CoT信息,以构建新的少样本集 F F F

在主函数中,我们首先使用大型语言模型(LLM)处理自然语言问题Q。通过自编码器(AE),我们获取实体信息 E O E_O EO 并选择列 t . c O t.c_O t.cO

然后,我们检索相似值 v Q v_Q vQ并扩展数据库信息 t . c E t.c_E t.cE。这些细节通过对齐 A a A_a Aa整合,为 Q Q Q定制了一个模式 S Q S_Q SQ

下一步是基于 M Q s ( Q ) MQs(Q) MQs(Q)获得与问题相关的少样本 f Q f_Q fQ,格式为 Q u e r y − C o T − S Q L Query-CoT-SQL QueryCoTSQL

接着,通过 A G A_G AG生成SQL并使用 A a A_a Aa进行对齐,得到 S Q L s A SQL_{sA} SQLsA。最后,通过 A R A_R AR纠正执行错误,选择一致性和执行时间最短的SQL作为最终答案,即 S Q L R SQL_R SQLR

3.8 优化

OpenSearch-SQL已经取得了显著的成果,但仍有大量优化的空间。目前,我们尚未全面关注OpenSearch-SQL中提示的详细调整以及列和值的精确选择。此外,在生成任务中,我们仅使用单个提示作为指导大型语言模型(LLM)生成SQL候选集的指令,没有额外的优化。另一方面,SFT模型在提升文本到SQL的性能方面显示出巨大潜力。CHESS[34]、MCS-SQL[18]和distillery[23]等研究已经展示了这一点。这些方法的有效性表明,在这些方向上可以寻求进一步的优化。

在OpenSearch-SQL的方法方面,我们认为少样本方法不仅限于查询-条件-目标SQL对;还有其他选项可用,这提供了提升性能的潜力。此外,关于对齐的研究仍处于早期阶段,表明在提高文本到SQL任务性能方面还有进一步发展的空间。

4 实验

在本节中,我们通过实验展示了OpenSearch-SQL的有效性,并探讨了其各个模块的作用。

4.1 实验设置

在这里插入图片描述

使用的数据集。我们在表1中展示了这两个数据集的特点。考虑到数据集的特定查询和SQL复杂度。Bird的数据库类型相对较少,但具有更复杂的数据库结构和更高的SQL平均难度。相比之下,Spider数据库种类繁多,但SQL的平均难度相对较低。

  • BIRD(大规模数据库基准文本到SQL评估)代表了一个开创性的跨领域数据集,它考察了丰富的数据库内容对文本到SQL解析的影响。BIRD包含超过12,751个独特的问答对,95个大型数据库,总大小为33.4吉字节。它覆盖了超过37个专业领域,如区块链、冰球、医疗保健和教育等。BIRD数据集在2004年7月4日发布了一个更干净的测试集版本。然而,为了公平起见,我们仍将使用7月之前的数据来评估我们的结果。

  • Spider.[44] 是一个由11名耶鲁大学学生注释的大规模复杂跨域语义解析和文本到SQL的数据集。Spider挑战的目标是开发自然语言接口以跨域数据库。它包含10,181个问题以及覆盖138个不同领域的200个数据库上的5,693个独特的复杂SQL查询,这些数据库有多个表格。在Spider中,我们在假设无法访问测试集的情况下对开发集进行调整。

使用的评估指标。根据BIRD[20]和Spider测试套件[47]的评估标准,我们评估了两个指标:执行准确率(EX)和基于奖励的有效效率分数(R-VES)。EX定义为预测SQL与金标准SQL之间相同执行结果的比例。R-VES的目的是衡量在执行相同任务时预测SQL的执行效率。

对比的基线模型。我们从BIRD和Spider排名中选择LLM驱动的方法作为基线:

(1)GPT-4[26] 使用零样本文本到SQL提示进行SQL生成。

(2)DIN-SQL[27] 通过多个模块将问题分为不同类型,并指导LLM通过各种提示生成最终的SQL。

(3)DAIL-SQL[7] 通过选择不同问题的相似问题-SQL对作为小样本示例来协助LLMs生成SQL。

(4) MAC-SQL[36] 通过使用子数据库和子问题来生成SQL,简化了大型语言模型面临的挑战。

(5)MCS-SQL[18] 使用多个提示生成多组SQL,并采用统一的多项选择题选择(MCS)来选出最终的SQL。

(6)C3-SQL[6] 通过三个模块构建了系统的零样本文本到SQL方法:清晰提示(CP)、带提示的校准(CH)和一致输出(CO)。

(7)CHESS[34] 通过构建高效的检索和模式剪枝方法来减少冗余信息的干扰,从而提高SQL生成的有效性。

(8)Distillery[23] 提出,随着大型语言模型的发展,模式链接的重要性已经降低,微调的SFT GPT-4o已经取得了最佳结果。

实施细节。为了展示OpenSearch-SQL v2的能力,我们选择的特定模型版本是用于生成的**GPT-4o-0513**[26]和用于检索的**bge-large-en-v1.5**[41]。

为了效率和可比性,我们对BIRD官方发布的MIN DEV进行了消融实验。这些消融实验的目的是评估OpenSearch-SQL在不同模型上的泛化能力,以及验证方法中每个子模块的有效性。

在提取阶段,我们将温度设置为0;在生成和精炼阶段,温度被设置为0.7。少样本示例的数量从N={0,3,5,7,9}中选择,过滤索引阈值设定为0.65,SQL投票的最大数量从K={1,7,15,21}中选择。

4.2 主要结果

为了展示OpenSearch-SQL的有效性,我们在Spider和BIRD数据集上的表现达到了最先进(SOTA)的水平,突显了我们方法的稳定性和优越性。在表2中,我们比较了我们的方法与BIRD数据集中基线方法的效果。值得注意的是,BIRD数据集在7月份对其开发集进行了清洗,这可能导致比较中的差异。为了确保与以往评估的可比性,我们在实验中继续使用了7月之前的数据集。

在这里插入图片描述
BIRD结果。我们在表2中展示了基线和OpenSearch-SQL v2在BIRD数据集上的表现。表中的结果完全来自BIRD排行榜。提交时,我们的方法在BIRD开发集上达到了69.3%的EX,在BIRD保留测试集上分别达到了72.28%的EX和69.36%的R-VES,均排名第一。值得注意的是,我们的方法没有进行任何微调来定制大型语言模型。同时,我们还展示了未应用自一致性和投票的OpenSearch-SQL的性能。可以看出,即便使用单一代数的SQL,OpenSearch-SQL也达到了67.8的EX,仍在开发集上保持了顶尖的表现。

在这里插入图片描述

在图3中,我们比较了我们的方法在不同难度级别的表现。显而易见,自我一致性&投票在难题上表现出最显著的改进,实现了7.64%的绝对差异。然而,对于简单和中等难度的题目,没有显著差异。这表明随着问题难度的增加,大型模型产生幻觉的易感性也随之上升。

此外,表3展示了在Spider数据集上的实验结果。由于Spider排行榜将从2024年2月开始不再接受新提交,因此这些结果由当前排行榜数据和相关论文中报告的数据组成。

在这里插入图片描述
spider结果。为了展示OpenSearch-SQL的泛化能力,我们还评估了其在spider测试集上的表现。我们使用了本方法的默认配置,未做其他改动,仅进行了必要的调整以适应数据集格式。由于spider排行榜已不再更新且测试集公开可用,我们从基线方法的论文和排行榜中提取了结果,其中从论文中提取的结果标记为*。表3展示了该方法的性能。

4.3 模块消融

在这里插入图片描述

表4提供了当从该方法中移除每个模块时的执行准确率(EX)的详细概览。我们特别检查了提取、生成、精炼模块的作用。

此外,我们调查了关键子模块如检索、少样本、思维链(CoT)以及自洽性&投票的影响。值得注意的是,自洽性&投票作为在多个SQL中进行选择的最后一步。为了更清晰地说明每个模块对单个SQL优化的影响,我们分别展示了这一部分的实验结果(EX)。

为了全面展示该方法中每个模块的作用,我们首先记录了OpenSearch-SQL最终生成的SQL的执行准确率(EX)。鉴于一致性&投票机制会从多个SQL中选择,它可能会影响对每个模块对单个SQL影响的评估。因此,我们还记录了在生成阶段( E X G EX_G EXG)获得并在一致性&投票阶段( E X R EX_R EXR)之前的SQL执行准确率。这两个指标直接捕捉了每个模块对单个SQL的影响,提供了对每个模块影响更为精确的评估。

如表4所示,从左到右,我们展示了 E X G EX_G EXG E X R EX_R EXR E X EX EX。从上到下,依次记录了提取、生成、精炼和对齐模块的作用。从表中我们可以观察到:

  • 随着工作流程的进行,SQL的EX单调递增,表明不同模块对SQL优化有着不同的积极影响,确认了每个模块的必要性。

  • 如果没有提取步骤,直接使用完整的数据库模式,绕过了值检索和列过滤。可以观察到,对于单个SQL来说,通过值检索和列过滤的组合改进大约等同于提取所提供的改进,这表明它们的作用重叠最小。

  • 小样本在生成阶段表现出显著的效果,并在精炼阶段进一步提升最终SQL的性能,突显了动态小样本方法的重要性。我们推测小样本可以极大地提升模型的潜力,同时也提高生成结果的稳定性。将在实验4.4中对小样本进行进一步分析。

  • 在生成阶段,CoT(提示提示)和小样本显著提升了各个SQL的结果,表明提示中的信息量与LLM生成的SQL的有效性呈正相关。然而,在精炼和自洽性&投票阶段之后,CoT带来的收益显著减少。我们认为这表明CoT并没有显著提升模型的基础生成能力,而是提高了结果的稳定性。此外,观察到精炼在不使用CoT的情况下为结果提供了+3.2%的提升,突显了其在提高结果稳定性中的关键作用

  • 对齐模块在各个阶段发挥了积极作用,显著提升了各个SQL的性能,从而展示了其独特的优化潜力。具体来说,在生成阶段之后应用的校准可以帮助纠错模块准确修复错误的SQL语句,而不仅仅是使其可执行

  • 显然,自一致性(Self-Consistency)和投票(Vote)一致地提高了大型语言模型(LLMs)的性能上限。根据我们对生成的SQL语句的观察,这一机制主要帮助避免由低概率随机性引起的错误。

结论

在本文中,我们介绍了OpenSearch-SQL方法,该方法通过动态小样本学习和一致性对齐机制来提升文本到SQL任务的性能。为了改进模型对提示的处理,我们用大型语言模型扩展原始示例,并用CoT信息补充它们,形成查询-CoT-SQL小样本配置。据我们所知,这是首次探索在文本到SQL任务中使用大型语言模型扩展小样本CoT内容。此外,我们开发了一种基于一致性对齐机制的新方法来减轻幻觉现象,通过重新整合输入和输出来提升代理输出的质量。我们的方法不依赖于任何SFT任务,完全基于直接可用的大型语言模型和检索模型,代表了文本到SQL的纯粹架构升级。因此,在提交时,我们在BIRD排行榜的三个指标上都取得了最高位置,这展示了我们方法的显著优势。

我们的源代码很快就会公开,我们希望这种小样本构建方法和基于一致性对齐的工作流程将为文本到SQL和其他多代理协作任务提供新的视角和积极影响。

http://www.xdnf.cn/news/7466.html

相关文章:

  • reshape/view/permute的原理
  • 7-2 银行业务队列简单模拟
  • 【PhysUnits】4.5 负数类型(Neg<P>)算术运算(negative.rs)
  • Node.js 实战八:服务部署方案对比与实践
  • 应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新
  • 牛客网 NC274692 题解:素世喝茶
  • 低空经济的法律挑战与合规实践
  • uv 包管理工具使用教程
  • pkg-config 是什么,如何工作的
  • 深入解析`lsof`命令:查看系统中打开文件与进程信息
  • 【Nuxt3】安装 Naive UI 按需自动引入组件
  • ThreadLocal 源码深度解析
  • Linux基础第四天
  • goldenDB创建函数索引报错问题
  • 鸿蒙 Background Tasks Kit(后台任务开发服务)
  • 北京本地 SEO 推广:从技术成本到效果转化的深度拆解
  • 从零训练一个大模型:DeepSeek 的技术路线与实践
  • 苏州SMT贴片加工服务选择指南
  • MCP详解
  • Python中的整型(int)和浮点数(float)
  • 哈希表和哈希函数
  • 养生攻略:打造活力健康日常
  • 《 二级指针:解锁指针的进阶魔法》
  • GPT/Claude3国内免费镜像站更新 亲测可用
  • 活学妙用——5W2H分析法
  • 【java第17集】java流程控制语句详解
  • 按键太频繁导致,报不应该报的错误!
  • 秒删node_modules 极速删除 (rimraf工具)
  • Linux grep 命令详解:常用选项、参数及实战场景
  • 基于SpringBoot的家政预约系统