大型语言模型(LLMs)通过结合外部数据,已经在完成现实世界任务方面展现出了显著的能力。外部数据不仅增强了模型在特定领域的专业知识和时效性,还减少了幻觉现象的发生,从而提高了输出的可控性和可解释性。将外部数据整合到LLMs中的技术,如检索增强生成(RAG)和微调,正受到越来越多的关注并得到广泛应用。尽管如此,在各个专业领域有效部署数据增强型LLMs面临着巨大的挑战。这些挑战包括从检索相关数据和准确解释用户意图到充分利用LLMs的推理能力来处理复杂任务等一系列问题。我们认为,数据增强型LLM应用没有一种放之四海皆准的解决方案。在实践中,性能不佳通常是由于未能正确识别任务的核心焦点,或者任务本身需要多种能力的结合,这些能力必须被解开以更好地解决。在这项调查中,我们提出了一种RAG任务分类方法,根据外部数据的类型和任务的主要焦点,将用户查询分类为四个级别:显式事实查询、隐式事实查询、可解释理由查询和隐藏理由查询。我们定义了这些查询级别,提供了相关数据集,并总结了解决这些挑战的关键挑战和最有效的技术。最后,我们讨论了将外部数据整合到LLMs中的三种主要形式:上下文、小型模型和微调,强调了它们各自的优势、局限性以及它们适合解决的问题类型。这项工作旨在帮助读者全面理解并分解构建LLM应用的数据需求和关键瓶颈,提供解决不同挑战的解决方案,并作为系统开发此类应用的指南。
我们翻译解读最新论文:超越检索增强生成,文末有论文链接。作者:张长旺,图源:旺知识
1 引言
大型语言模型(LLMs)已经展现出了显著的能力,包括广泛的世界知识和复杂的推理技能。尽管取得了这些进步,但在各个专业领域有效地部署它们面临着重大挑战。这些挑战包括模型幻觉、与特定领域的知识不对齐等问题。整合特定领域的数据,特别是最初训练语料库中未包含的私有或内部数据,对于定制LLM应用以满足特定行业需求至关重要。通过RAG和微调等技术,数据增强型LLM应用已经在多个方面显示出比仅基于通用LLMs的应用的优势:
增强的专业性和时效性:用于训练LLMs的数据通常在时效性上落后,可能无法全面覆盖所有领域,尤其是用户拥有的专有数据。数据增强型LLM应用通过为复杂问题提供更详细准确的答案,允许数据更新和定制,从而解决了这个问题。
与领域专家对齐:通过使用和学习特定领域的数据,数据增强型LLM应用能够展现出更像领域专家(如医生和律师)的能力。
减少模型幻觉:数据增强型LLM应用基于真实数据生成回应,将它们的反应基于事实,显著减少了幻觉的可能性。
提高可控性和可解释性:所使用的数据可以作为模型预测的参考,增强了可控性和可解释性。
尽管对这些进步感到热情,开发者经常挣扎,并且必须投入大量的人力劳动以满足期望(例如,在问答中实现高成功率)。许多研究[1, 2, 3, 4, 5]强调了构建基于RAG和微调等技术的数据增强型LLM应用的挑战和挫折,特别是在法律、医疗、制造业等专业领域。
这些挑战涉及广泛的范围,从构建数据管道(例如数据处理和索引)到利用LLMs的能力实现复杂的智能推理。例如,在金融应用中,经常需要理解并利用高维时间序列数据,而在医疗领域,医学影像或时间序列医疗记录通常是必不可少的。使LLMs理解这些不同形式的数据是一个反复出现的挑战。另一方面,在法律和数学应用中,LLMs通常难以把握不同结构之间的远距离依赖关系。此外,根据特定应用领域,对LLMs回应的可解释性和一致性有更高的要求。LLMs的固有特性往往是低可解释性和高不确定性,这带来了重大挑战。提高LLMs的透明度和降低它们的不确定性对于增加对它们输出的信任和可靠性至关重要,特别是在需要精确度和责任的领域。
通过与领域专家和开发者的广泛讨论,以及仔细分析他们面临的挑战,我们深刻理解到数据增强型LLM应用不是放之四海皆准的解决方案。现实世界的需求,特别是在专家领域,是高度复杂的,并且在它们与给定数据的关系以及它们所需的推理困难方面可能会有显著的变化。然而,开发者通常没有意识到这些区别,最终得到一个充满性能缺陷的解决方案(类似于到处漏水的房子)。相反,如果我们能够完全理解不同层次的需求及其独特的挑战,我们就可以相应地构建应用,并使应用稳步改进(像一步一步建造一个坚固可靠的房子)。
然而,研究工作和现有的相关调查[6, 7, 8, 9, 10, 11, 12, 13]经常只关注这些层次中的一个或特定主题的技术。这促使我们编写了这项全面的调查,旨在明确定义这些不同的查询级别,识别每个级别所关联的独特挑战(图1),并列出相关作品和努力解决它们。这项调查旨在帮助读者构建数据增强型LLM应用的鸟瞰图,同时作为如何系统地开发此类应用的手册。
2 问题定义
数据增强型LLM应用可以采取多种形式,从通常基于特定领域数据的问答机器人,到复杂数据管道中的语义处理操作符,甚至是处理多智能体系统中特定步骤的代理。然而,一般来说,一个数据增强型LLM应用可以被表述如下:
其中Q、A和D分别代表用户的输入(查询)、预期的响应(答案)和给定的数据。应用f的任务是根据D建立从Q到A的映射。
与仅依赖预先存在知识的独立LLM系统不同,数据增强型LLM应用的特点在于它们依赖外部数据(D)来准确解决提出的查询(Q)。将外部数据D的整合可以显著增强LLMs的能力,使它们能够利用最新的、特定领域的知识和理解专家的理由。可以根据它们利用外部数据的程度和方式将查询分层,反映了查询所需的认知处理的深度和性质。
2.1 查询的分层
在数据增强型LLM应用的领域中,可以根据它们的复杂性和所需的数据交互深度将查询分层。这种分层有助于理解LLM必须执行的不同认知处理水平,以生成准确和相关的回应。从直接的事实检索到对隐式知识的微妙解释,每个级别都代表了LLM处理任务复杂性的一个步骤。
Level-1 显式事实:这些查询是询问直接呈现在给定数据中的显式事实,不需要任何额外的推理。这是最简单的查询形式,模型的任务主要是定位和提取相关信息。例如,“2024年夏季奥运会将在哪里举行?”针对的是外部数据中包含的事实。
Level-2 隐式事实:这些查询询问数据中的隐式事实,这些事实不是立即明显的,可能需要一定程度的常识推理或基本逻辑推理。必要的信息可能分散在多个段落中,或者需要简单的推理。例如,问题“堪培拉所在的国家的执政党是什么?”可以通过结合堪培拉位于澳大利亚的事实和澳大利亚当前执政党的信息来回答。
Level-3 可解释的理由:这些查询不仅要求掌握事实内容,还要求理解并将数据上下文中的特定领域理由综合起来。这些理由通常在外部资源中明确提供,并且在通用大型语言模型的预训练阶段通常不会出现或很少遇到。例如,在制药领域,LLM必须解释FDA指南文件——代表FDA当前的想法——以评估特定药物申请是否符合监管要求。类似地,在客户支持场景中,LLM必须导航预定义的工作流程的复杂性,以有效地处理用户询问。在医疗领域,许多诊断手册提供了权威和标准化的诊断标准,例如管理急性胸痛患者的管理指南[14]。通过有效遵循这些外部理由,可以开发出专门用于管理胸痛的LLM专家系统。这涉及到理解指导客户支持代理与客户互动的程序步骤和决策树,确保回应不仅准确,而且符合公司服务标准和协议。
Level-4 隐藏的理由:这类查询深入到更具挑战性的领域,其中理由没有明确记录,但必须从外部数据中观察到的模式和结果中推断出来。这里所说的隐藏理由不仅指的是隐含的推理链和逻辑关系,而且还包括识别和提取每个特定查询所需的外部理由的固有挑战和非平凡任务。例如,在IT运营场景中,云运营团队可能过去处理了许多事件,每个事件都有其独特的情况和解决方案。LLM必须擅长挖掘这个丰富的隐性知识库,以辨别隐含的策略和成功决策过程。同样,在软件开发中,以前的错误调试历史可以提供隐性洞察力的丰富来源。虽然每个调试决策的逐步理由可能没有系统地记录,但LLM必须能够提取指导这些决策的潜在原则。通过综合这些隐藏的理由,LLM可以生成不仅准确而且反映了经验丰富的专业人士随着时间推移而磨练出的不言而喻的专业知识和解决问题方法的回应。
总之,将查询分类为级别反映了复杂性的梯度和LLM所需的理解类型。如图1和图2所示,前两个级别,显式事实和隐式事实,侧重于检索事实信息,无论是直接说明的还是需要基本推理的。这些级别挑战了LLM提取和综合数据成连贯事实的能力。相反,后两个级别,可解释的理由和隐藏的理由,将重点转向LLM学习和应用数据背后理由的能力。这些级别要求更深层次的认知参与,其中LLM必须与专家思维对齐或从非结构化历史数据中提取智慧。根据这个标准对常见事实查询数据集的分类如图1所示。
每个级别都带来了其独特的挑战,因此需要量身定制的解决方案来有效应对。随着我们在以下各节深入探讨这些级别的复杂性,我们将探索特定的策略和方法,使LLMs能够应对数据增强型应用在这些不同查询类型上的复杂性。这不仅将突出LLMs的当前能力,还将揭示该领域的持续进步和潜在的未来发展。
3 显式事实查询(L1)
3.1 概述
显式事实查询代表了数据增强查询中最直接类型的查询。这个级别的查询可以通过直接访问集合中特定的领域文档或文档片段来回答。这些问题的答案通常在文档的纯文本中,需要最小的推理或简单的推理在回应生成中。
这个级别的定义特征是对特定外部数据片段的明确和直接依赖。
3.1.1 数据依赖性
数据集D可以被分割成文档或片段D1、D2、...、Dn,有各种方式:
D = {D1, D2, ..., Dn} (2)
每个片段Di被认为是相对较短的,并且包含更专注和特定的内容。
对于给定的查询q ∈ Q,并非D中的每个片段都是必需的,以形成回应。让δ : Q × D → {0, 1}表示数据段d ∈ D对特定查询q的必要性,其中δ(q, d) = 1意味着数据段d需要回答查询q,δ(q, d) = 0则不然。然后查询q的数据依赖性,由对解决查询q至关重要的片段子集所描述,定义为:
Dep(q) = {d | d ∈ D and δ(q, d) = 1} (3)
很容易理解Dep(q) ∈ P(D),其中P(D)是D的幂集。
3.1.2 定义
显式事实查询,记为Q1,特点是答案的直接可检索性来自数据集D中特定的数据段。在数据增强型LLM系统中,这些查询可以被正式定义如下:
对于任何查询q和其对应的答案a,一个显式事实查询是一个存在:
这里有几个这个级别查询的例子:
3.2 挑战和解决方案
这个级别的查询主要需要正确检索数据,以便LLMs提供准确的回应。由于其有效性、灵活性和相对较低的成本,RAG是处理这个级别查询最常采用的技术解决方案。然而,即使有了RAG,构建一个健全和高质量的系统也面临着重大挑战。这些挑战包括:
数据处理困难:外部数据通常是高度非结构化的,包含表格、图像、视频等多模态组件。此外,分割或“块化”这些数据的过程在保持原始上下文和含义方面存在挑战。
数据检索困难:从大型非结构化数据集中检索相关数据段可能是计算密集型的,并且容易出错。挑战在于开发高效和准确的检索机制。
评估困难:评估RAG系统的性能,特别是组件级别,是一项复杂的任务。它需要开发能够准确评估数据检索和回应生成质量的健壮指标。
鉴于RAG的普及,已经开发了大量的文献和工具来解决这些挑战。在本节的剩余部分,我们将突出一些最实用和有影响力的RAG增强方法。此外,我们还将讨论可能采用的超越RAG的替代技术解决方案。
3.3 检索增强生成(RAG)
检索增强生成是指一种方法,其中语言模型通过在生成过程中动态检索外部信息来增强其自然语言生成能力。这种技术将LLMs的生成能力与来自广泛数据库或文档的信息检索结合起来。这个过程通常实现为数据索引构建、检索系统构建和答案生成。
3.3.1 数据处理增强
文档解析在这个级别通常涉及从文本、表格和图形中以连贯的方式提取信息,确保相关片段被准确识别和检索。
多模态文档解析处理源文档中的多模态内容,如图表、表格甚至视频(例如会议记录),是最常问的问题之一。广义上,采用两种方法来解决这个问题。第一种方法涉及将多模态内容转换为文本形式。例如,表格到文本的方法[34]将表格翻译成文本,而其他技术将视觉内容转换为基于文本的或基于属性的描述[35, 36],然后由大型语言模型处理。第二种方法利用多模态嵌入技术[37, 38, 39],使用从多模态数据检索到的嵌入作为软提示输入。
块化优化对于长文本,将文档分割成文本块是一种常见且必要的操作。较大的文本块可以保留更多的语义连贯性上下文,但它们也倾向于在每个块中包含更多的噪声[40]。常用的块化策略[41, 42]包括固定大小块化、递归块化、滑动窗口块化、基于段落的块化、语义块化等。某些方法旨在确定查询所需的详细程度,并基于此识别选择适当粒度的文本块进行检索[43, 44]。或者,一些方法选择处理和细化文本成较小的片段,以保持高度的信息完整性[45]。此外,还有一些方法采用视觉模型按照原始文档结构分割文本[46]。
3.3.2 数据检索增强
信息检索(IR)技术可以顺利地转移到RAG应用中。涉及的主要步骤包括建立数据索引、处理查询、检索和匹配、重新排名和评估。
索引这个步骤的目的是建立从搜索词到文本片段的映射,确定检索系统的逻辑操作方式。索引方法大致分为三种类型:稀疏、密集和混合检索。稀疏检索使用特定词来索引文本片段。相比之下,密集检索将文本片段映射到与查询要求一致的密集特征向量空间。混合检索结合了稀疏和密集技术的元素。
稀疏检索:这是最早被广泛采用的索引方法,因为它的简单性和直观性。像TF-IDF和BM25[47, 48]这样的技术旨在识别每个文本段最具代表性的关键词,基于它们的相对频率。这些方法在许多RAG项目中仍然很流行[49, 50, 51]。然而,词匹配方法由于无法识别同义词,可能会导致检索损失。为了解决这个问题,可以使用KNN等方法进行关键词的相似性匹配[52]。或者,可以将索引词如关键词更改为预测查询词对应文本段的概率[53, 54]。
密集检索:这种方法通常涉及使用预训练或微调的文本编码器将文本映射到与查询要求一致的密集向量空间。基于BERT的编码器[55]通常在无监督数据上使用DPR[56]、ANCE[57]、SimCSE[58]和TAS-B[59]等方法进行微调作为密集检索器。其他人则采用无监督对比学习进行微调,例如Contriever[60]。使用LLMs的反馈来指导检索器的训练目标也可以有效地提高检索器对LLMs的适用性[61, 62, 63]。鉴于LLMs的强大能力和表达潜力,基于LLM的密集检索最近已成为一个重点领域和探索领域[64]。LLM2vec[65]修改了预训练LLM的注意力机制,使其变为双向的,并使用掩蔽下一个词预测方法进行无监督训练,从而产生了基于LLM的密集检索嵌入器。类似地,Llama2Vec[66]利用两个预文本任务——基于嵌入的自动编码和基于嵌入的自动回归——训练了一个基于LLaMA架构[67]的无监督密集检索编码器,从而显著提高了检索任务的性能。
其他:将稀疏检索和密集检索结合起来是一种有效的方法,可以同时关注文本段的中心主题和全局特征。Feng等人(2023)提出最初确定回答查询所需的知识领域作为一个固定的专业领域,然后使用密集检索在这个领域内召回补充信息[68]。许多研究探索了各种将密集向量索引与稀疏编码器索引混合的方法,以更好地捕捉文本块的语义信息,并提高目标段落检索的精度[69, 70, 71]。另一方面,Tang等人(2024)通过微调增强了LLM的能力,用于索引和检索,有效地将这些能力直接整合到LLM中。这使得LLM能够为每个查询自主生成数据索引和文本段[72, 73]。
查询文档对齐这一步的目标是将查询与外部数据中的文档片段对齐,以识别出最能协助回答查询的最佳文档片段。如图3所示,对齐主要有三种方法:传统对齐、文档领域对齐和查询领域对齐。传统对齐涉及将文档片段和查询映射到相同的编码空间。例如,许多基于双编码器的密集检索架构都具有专门的查询编码器[56, 57, 59]。相反,如果像RAG这样的系统采用稀疏检索,则需要从查询中提取关键词进行搜索。通过查询重写技术,可以通过减轻用户术语不准确或描述模糊的问题来进一步细化搜索精度,从而有效提高搜索结果的准确性[74]。文档领域对齐涉及首先生成合成答案,然后使用这些答案回忆相关数据,有效解决了查询和检索数据不在同一个分布空间的问题。在这方面的著名工作是HyDE[75]。查询领域对齐[76]涉及为每个文本的原子单元生成一组合成问题,将文本片段映射到查询空间,然后检索与原始查询最接近的合成问题及其对应的文本片段。这种方法确保了为回答查询选择最相关和上下文适当的片段。SlimPLM[77]使用一个小代理模型来生成启发式答案,然后使用这些答案来预测回答查询所需的知识。这种方法还为对齐查询到文档空间提供了一种有效方法。
重新排名和校正在检索到前k个文本块后,RAG系统必须过滤和重新排序这些片段。大多数RAG系统使用检索器提供的关联分数作为排名的基础,而一些研究使用特定指标,如困惑度或困惑度增益作为排名标准[78, 79]。其他努力涉及使用LLMs来评估检索文本块的可信度和效用,训练一个可插拔的奖励驱动的上下文适配器来细化检索器的输出[80]。此外,一些研究专注于预训练一个小型语言模型,专门用于事实验证,用于过滤出错误的检索文本块,从而提高回忆文本的质量[81]。
递归检索或迭代检索考虑到单次检索尝试的准确性固有限制,有效的缓解策略是执行多次检索,以逐步解决任何遗漏。Kim等人(2023)引入了一种树状递归检索方法,采用剪枝策略逐步将模糊问题分解为消除歧义的问题,最终得出最接近的正确答案[82]。类似地,SEATER使用k-means算法构建要检索的项目层次结构树,并且迭代地回忆树结构内的节点[83]。
3.3.3 回应生成增强
生成回应需要确定检索到的信息是否足够,或者是否需要额外的外部数据。处理检索到的知识与模型内部先验知识之间的冲突也很重要[84, 85, 86]。监督微调是提高RAG系统中生成性能的有效方法。面对作为检索上下文的不相关或错误信息时,预训练的大型语言模型通常很容易被误导,导致错误回应。许多研究表明,通过为RAG系统巧妙地设计训练数据,微调或预训练可以有效地解决这个问题[87, 88, 89]。通过实验分析,RAAT[89]证明了不相关检索噪声、相关检索噪声和反事实检索噪声对RAG模型的不利影响是逐步增加的。通过结合这些训练过程,这些方法使LLM能够在存在噪声检索的情况下,显著提高回应生成质量。此外,为确保RAG系统中检索器和生成器之间的性能更加一致,一些研究在训练阶段采用检索器和生成器的联合训练[90, 91, 92]。
4 隐式事实查询(L2)
4.1 概述
这些查询涉及的数据依赖性并不立即明显,可能需要一定程度的常识推理或基本逻辑推理。必要的信息可能分散在多个段落中,或者需要简单的推理。(如图2中的示例所示)
这个级别的查询需要从集合中收集和处理多个文档内的信息。所需的信息收集可能超出了单个检索请求的能力,需要将原始查询分解成多个检索操作,并将结果汇总成一个综合回答。这个级别通常涉及常识推理,而不需要特定领域的专业知识。这类查询可能包括统计查询、描述性分析查询和基本聚合查询。例如,“有多少实验的样本量大于1000?”(给定一系列实验记录)和“最常提及的前3个症状是什么?”(给定一系列医疗记录)这类操作在“有多少”和“最多的是什么”类型的查询中很常见,而多跳推理经常使用。因此,我们可以将第二级查询,Q2定义如下:
对于任何查询q和其对应的答案a,一个Q2事实查询是一个存在:
其中rD(qi)识别出回答qi所必需的相关数据段,并且这些段的并集提供了回答q所需的信息。
一个回应生成器θ,通常是一个提示的LLM推断,通过聚合回应{θ(rD(q1)), θ(rD(q2)), ..., θ(rD(qm))}并应用常识推理来推导出数据中没有明确说明的答案。回应θ(rD(q))应该近似正确的答案a,展示了通过聚合对Q1查询的回答可以有效地回答原始查询Q2。
这里有几个这个级别查询的例子:
样本量大于1000的实验有多少个?(给定一系列实验记录)
最常提及的前3个症状是什么?(给定一系列医疗记录)
公司X和公司Y的AI战略有什么区别?(给定关于公司X和公司Y的最新新闻和文章系列)
4.2 挑战和解决方案
在这个级别,查询仍然围绕事实问题,但答案并没有在任何单一文本段落中明确提出。相反,它们需要通过常识推理结合多个事实来得出结论。第二级查询的主要挑战包括:
解决这个级别的挑战的方法包括迭代RAG、基于图/树的RAG和RAG与SQL。
4.3 迭代RAG
隐式事实查询与多跳RAG任务类似。这类方法动态控制多步RAG过程,迭代地收集或纠正信息,直到达到正确的答案。
基于规划的:在检索前阶段或检索过程中动态生成分步检索计划,可以细化每次检索的重点,有效地指导迭代RAG系统。例如,ReAct[93]逐步更新每个步骤的目标,减少回答查询所需的知识差距。IRCoT[94]和RAT[95]使用思维链来指导RAG管道,根据先前回忆的信息做出当前检索目标的决策。GenGround[96]使LLM能够在两个阶段之间交替,直到达到最终答案:(1)生成一个更简单的单步问题并产生直接答案,以及(2)将问题-答案对回溯到检索的文档,以验证和纠正预测中的任何不准确之处。这种迭代过程确保了更可靠和准确的回应。
基于信息差距填补的:ITRG[97]引入了一个迭代检索-生成协作框架,根据现有知识生成答案,然后继续检索和生成后续回合中未知部分的回答。类似地,FLARE[50]重新审视并修改每次迭代中生成答案的低概率词。另一方面,Self-RAG[92]微调一个大型模型,自主决定何时搜索何时停止搜索并开始回答问题。
4.4 图/树问答
处理隐式事实查询需要从多个参考资料中综合信息。无论是基于知识的还是数据结构的,图或树自然表达了文本之间的关系结构,因此非常适合这种类型的数据检索问题。
传统知识图谱:最初考虑用于增强LLMs有效性的结构之一是传统知识图谱,其中每个节点代表一个实体,节点之间的边表示这些实体之间的关系。[98]提出了一个面向未来的LLMs和知识图谱(KGs)的发展路线图,包括:1) KG增强的LLMs,在LLMs的预训练和推理阶段整合KGs,以加深模型对获得知识的理解;2) LLM增强的KGs,利用LLMs进行各种KG任务,如嵌入、完成、构建、图到文本生成和问答;以及3) 协作的LLMs+KGs方法,LLMs和KGs发挥互补作用,通过数据和知识驱动的双向推理相互增强。Rigel-KQGA模型[99]是一个端到端的KGQA模型,它根据查询预测所需的知识图谱节点,并将此与LLM结合起来得出答案。像Think-on-Graph[100]和KnowledgeNavigator[101]这样的作品提取查询中涉及的实体,然后在图上执行迭代BFS搜索,使用LLM作为思考机器来确定最佳探索路径并执行剪枝。R3[102]通过LLM引入几种可能的常识公理来解决查询,顺序搜索相关子图,以评估当前信息是否足以回答查询,继续直到问题得到解决。
数据块图/树:LLMs的卓越阅读理解能力使它们能够有效地理解文本,而无需将其分解为实体和关系的最细粒度。在这种情况下,研究人员开始尝试使用文本块或数据块作为图或树上的节点,使用边来表示高级或更复杂设计的关联。Knowledge-Graph-Prompting[103]讨论了需要从(a)桥接问题依赖于顺序推理,而(b)比较问题依赖于不同段落的并行推理。(c)结构问题依赖于获取相应文档结构中的内容。为了解决这些问题,Knowledge-Graph-Prompting使用实体识别、TF-IDF、KNN和文档结构层次结构来构建文档图并提取子图以回答问题。MoGG[44]将一句话或两句话视为最小的语义单元,使用这些作为节点,并根据节点之间的语义相似性构建边。它还训练一个预测器来决定回答查询所需的文本粒度,通过决定需要多大的子图。为了捕捉文本块之间更高级别的语义关系,RAPTOR[43]使用聚类算法将最细粒度的文本块进行层次聚类。它在每个层次级别上总结新的语义信息,回忆最必要的信息来回答查询。类似地,GraphRAG[104]采用聚类方法。它最初基于语义相似性连接最小的文本块,然后使用社区检测算法对节点进行分组。最后,它通过分析每个节点社区内的回答来总结查询的全局答案。
4.5 自然语言到SQL查询
当处理结构化数据时,将自然语言查询转换为SQL(NL2SQL)可以是一种有效的方法。像Chat2DB这样的工具通过将用户查询翻译成数据库查询来促进这一过程。在大型语言模型时代,文本到SQL[105, 106, 107, 108]方面取得了显著进展,这使我们能够利用这些工具从结构化数据库中检索信息。这种能力作为有价值的外部数据源,增强了LLMs的生成能力。通过整合文本到SQL工具[109],LLMs可以访问并整合结构化数据,增强它们生成更准确和上下文相关回应的能力。这种整合不仅提高了生成内容的深度和质量,而且还扩大了LLM应用的范围,使它们能够执行更复杂的任务,这些任务需要与数据库内容交互和解释。
4.6 关于事实查询的讨论
是否进行微调。一些作品[110]已经证明了LLMs在微调过程中获得新事实知识的难度。这个过程可能导致LLMs在生成准确回应时的整体性能下降,通常会导致更多幻觉的产生。此外,研究表明[111],使用新的事实数据对LLMs进行微调可能导致模型机械地记忆事实陈述。有趣的是,改变这些记忆事实的措辞可以使最近学到的知识无效,表明LLMs对这些信息的理解和记忆水平较低。这指出了当前微调过程的局限性,以及需要更复杂的方法来有效地整合和适应新信息。
是否将不同级别的事实查询分开。显式事实查询和隐式事实查询都是基于事实的,至关重要的是在构建数据增强型LLM应用之前确定这些查询属于哪个级别。将显式事实查询误分类为隐式事实查询可能导致检索到大量看似相关但实际上对回答问题无帮助的无关信息,这可能会误导LLM并浪费计算资源。相反,将隐式事实查询误认为是显式事实查询可能会阻止使用适当的方法检索足够的和全面的外部辅助数据。隐式事实查询通常需要动态地整合特定于上下文的信息,而显式事实查询通常只需要一个数据片段,导致检索到固定数量的外部数据。这可能导致LLM的性能不佳。因此,基于对目标任务的深入理解,初步区分查询的级别是有利的。此外,大量的努力已经投入到训练模型中,以自主评估检索到的信息是否足够,例如self-RAG[92]所展示的方法。
5 可解释理由查询(L3)
5.1 概述
在本节和下节中,我们将探讨需要外部数据来提供解决查询的理由的查询。这些查询不仅要求掌握事实内容,还要求能够理解和应用数据上下文中的特定领域理由。我们将这些查询分为两类,基于解释理由和基于隐藏理由的查询,如图4所示。
可解释理由查询代表了依赖外部数据提供理由的应用中的一个相对直接的类别。这些类型的查询的辅助数据通常包括对解决问题的思维过程的清晰解释。数据可以以几种形式组织:
纯文本:文本描述是呈现可解释理由最常见的形式。这些可能包括专业或官方文件,如手册或指南,以及特定领域的手册或操作指南。这些文本阐述了促进复杂情景决策的思维过程。例如,FDA指南文件为制药厂或医生用药指南等文件提供了洞察,说明了像FDA官员或医生这样的专家如何处理特定案例。
结构化指令:更明确的推理关系或决策路径可能以结构化格式呈现。这些理由可以被理解为文本条件摩尔机或文本条件米利机。在计算理论中,摩尔机是一种有限状态机,其输出值仅由其当前状态决定4。控制状态转换的条件通常用文本表达,LLMs需要解释,与传统程序不同,传统程序在本地代码上运行。例如,考虑一个客户支持代理,它遵循手册处理用户的产品更换或退款请求。类似地,米利机是一种有限状态机,其输出值由其当前状态和输入决定5。区别在于,动作(如API调用)不仅由状态决定,还由前一个状态的转换关联的文本消息决定。自然地,这些特定领域的理由可以以工作流、决策树或伪代码的形式表示。
这里有几个这个级别查询的例子:
5.2 挑战和解决方案
在可解释理由查询领域,一个额外的挑战是以可理解的方式将外部数据中的理由整合到LLMs中。主要挑战如下:
提示优化成本:优化提示的过程以时间和计算需求为标志。不同的查询需要量身定制的背景知识和决策标准,需要多样化的例子。虽然手动设计的提示非常有效,但它们劳动密集且耗时。此外,训练模型为各种查询生成量身定制的提示会产生显著的计算开销。
有限的可解释性:提示对LLMs的影响是不透明的。在许多情况下,通常限制对LLMs内部参数的访问,这使得确定不同提示对这些模型的影响变得复杂。这种缺乏透明度阻碍了我们对LLM对不同提示的响应的可解释性的一致理解和验证。
5.3 提示调整
对于可解释理由查询,关键问题是如何有效地将外部数据中的理由整合到LLMs中,并确保这些模型能够准确地遵循并基于这些理由做出反应。Text2MDT[112]提供了一个可行的演示,引入了两种从医疗指南和教科书中自动提取医疗决策树的方法。这个过程阐明了冗长医疗文本中的逻辑链,使它们更容易理解。类似地,MedDM[113]开发了一种临床指导树格式,可以由LLMs执行,提出了一种在这些可执行CGTs上推理的方法,以及一个患者与LLMs之间多轮对话的框架。InstructRec[114]旨在利用LLMs在推荐系统中的能力,设计一种通用格式,使用自然语言描述用户的偏好、意图、任务形式和上下文,从而创建一个高性能的、基于语言的推荐系统。
将理由直接作为自然语言指令整合到LLMs中并不一定能产生最佳性能,手动设计提示可能很耗时。为了解决这个问题,使用提示调整技术变得至关重要,以提高LLMs遵循特定理由的能力。一种有效的方法是应用强化学习,如TEMPERA框架[115],设计包含有限指令、示例和口头化的提示,这些提示被纳入强化学习的动作空间中。在这里,LLM生成正确回应的概率作为奖励,引导模型在数据集上发现最优的提示配置。类似地,Rlprompt[116]采用强化学习方法,训练一个适配器来协助小型语言模型根据LLM回应的相对准确性反馈生成最优提示。另一种创新策略是方向性刺激提示,它利用LLMs在下游任务上的表现作为奖励机制。这种方法训练模型提取和利用方向性刺激——针对各个实例量身定制的提示或关键字,从而确保LLMs的行动更紧密地与预期结果对齐。
此外,对于离散提示空间的优化,使用基于编辑的方法,如GrIPS[117]。这种技术涉及使用一个小数据集作为评分集来尝试各种提示修改——包括删除、交换、释义和添加——以快速有效地确定最有效的提示配置。
最近的进展[118, 119]也看到了使用LLMs本身来促进提示优化的兴起。OPRO[120]利用LLM生成基于历史数据及其相关性能指标的新提示解决方案,并为这些提示打分,从而简化优化过程。此外,Reflexion框架[121]引入了一种基于语言反馈的新颖提示优化方法,使用语言模型分析和存储LLM输出的反思,在一个情景记忆缓冲区中。这个记忆组件有助于在未来的互动中细化决策过程并评估结果,利用累积的历史洞察。
5.4 CoT提示
解决复杂理由需要LLMs参与扩展的推理链,这与事实查询中典型的跨不同事实信息的推理不同。然而,思维链[122]、思维树[123]或思维图[124]方法在这种情况下被证明是有效的。对于研究得很好并且具有高普遍适用性的问题,手动设计CoT提示是一个可行的解决方案。Ji等人(2023)[125]提出了一种自我反思方法,将知识获取与答案生成整合起来。通过使用外部工具和设计提示,他们构建了三种类型的自我反思循环:事实知识获取循环、知识一致答案生成循环和问题蕴含答案生成循环,从而将外部理由整合到模型的处理中。此外,Wu等人(2024)[126]手动分析了临床记录中的错误类型,并为GPT-4模型[127]开发了三种不同的CoT提示,以专注于干预、诊断和管理错误。这种有针对性的提示有助于自动错误检测、跨度识别和临床记录中的更正任务。
虽然手动设计CoT提示非常有效,但它需要大量的人力和时间资源。为了减轻这些成本,Automate-CoT[128]提出了一种技术,用于从最少标记的数据集中生成增强的理性链。这种方法采用方差降低策略来评估每个CoT链的重要性,从而有助于选择最有效的提示组合。
另一种利用思维链提示的形式涉及构建以LLMs为中心的智能体工作流。这通常需要开发一个更全面的系统来解决各种现实世界场景。根据Wang等人的说法,这类系统可以广泛地划分为分析、记忆、规划和行动模块[129]。可解释理由可以以多种形式整合到多个模块中,允许智能体根据环境或人类反馈进行适应和迭代。像LLM Reasoners[130]和SoCREval[131]这样的最新进展专注于自动评估推理链的质量。这些方法还有助于构建健壮的数据增强型LLM应用。
基于可解释理由的应用跨越了各种领域。例如,CoML[132]将AutoML知识作为提示整合到LLM中,从历史实验记录中动态检索有用信息,并将这些元素结合起来,使LLM能够为新任务开发机器学习解决方案。MetaGPT[133]开发了一个软件开发的多智能体系统,项目中的不同利益相关者每个都作为智能体代表。这种设置使得多个智能体能够根据现实世界的工作流程进行协作,有效地完成软件开发任务。类似地,在客户服务[134]和医疗问答[135]等领域设计了复杂的智能体系统。在这些领域中,智能体被定制来处理特定类型的查询,可能涉及理解复杂的用户请求或提供准确的医疗信息。这些系统不仅提高了交互质量,还提高了回应的效率和准确性,展示了当LLMs被整合到设计良好的智能体工作流中时的多功能性和潜力。
6 隐藏理由查询(L4)
6.1 概述
隐藏理由查询是最难处理的查询类型。与提供明确指导来回答查询的可解释理由查询不同,隐藏理由查询涉及的特定领域推理方法可能没有明确描述,并且太多而无法详尽无遗。这些理由通常包括一个广泛的变体,无法在典型的上下文窗口内完全探索,并且可能缺乏清晰的指导,代表了一种隐含在数据中的领域专业知识。这样的数据可能包括但不限于:
领域内数据:隐藏理由查询可能利用同一领域的数据,如历史问答记录或人为生成的数据。这种领域内数据内在地包含了解决当前查询所需的推理技能或方法。例如,在Python编程谜题的背景下,历史问题的解决方案通常包括可以帮助解决当前问题的古典算法和解决问题的策略。
预备知识:另一种形式的隐藏理由包括在不同情境下变化的应用广泛的分散知识库。这种预备知识可能构成一个全面的理论体系,如构成法律判断基础的所有地方法律代码。它也可能包括在像数学证明这样的领域中简化推理过程的已证明的中间结论。当使用外部数据解决现实世界问题时,这种先验知识也可能源自复杂的人类经验和经验总结的积累。
导航隐藏理由查询因此需要复杂的分析技术来解码和利用嵌入在不同数据源中的潜在智慧,这对RAG系统在有效解释和应用这种复杂和隐含信息方面提出了重大挑战。
这里有几个这个级别查询的例子:
经济形势将如何影响公司未来的发展?(给定一系列财务报告,需要经济和财务理由)
如何使用数字5、5、5和1得到24分?(给定一系列24分游戏的示例和相应答案)
阿富汗允许父母将他的或她的国籍传给在国外出生的孩子吗?(给定GLOBALCIT国籍法数据集[136])
6.2 挑战和解决方案
构建数据增强型LLM应用在隐藏理由查询方面面临重大挑战,主要困难表现在以下领域:
逻辑检索:对于涉及隐藏理由的问题,外部数据的帮助不仅仅依赖于实体级或语义相似性,而是依赖于逻辑一致性或主题对齐。标准检索方法通常难以捕捉到查询的真正目标,或基于问题呈现的问题识别出具有逻辑相似性的文本片段。这就需要开发更复杂的检索算法,这些算法可以解析并识别潜在的逻辑结构,而不仅仅依赖于表面的文本相似性。
数据不足:从根本上说,外部数据可能没有明确包含与当前查询相关的指导或答案。相反,相关信息通常嵌入在分散的知识中或通过示例说明。这种间接呈现需要强大的数据解释和综合能力,要求LLMs能够从碎片化或间接相关的数据源中有效地推导出连贯的答案。这些挑战强调了在LLM框架内需要复杂的数据整合和推理能力,以有效导航隐藏理由查询的复杂性。
6.3 离线学习
为了解决这类问题,一种常见方法是在离线状态下识别和提取数据集中的规则和指导方针,然后检索相关项目。对于生成推理理由,一些作品如STaR[137]和LXS[138]使用LLM进行理由生成。前者采用迭代式少样本示例方法从小型数据集生成到大型数据集,后者引入了一个学习者模型生成解释和一个评论家模型对其进行验证的两角色解释提取过程。
GL[139]通过在上下文中学习识别错误,并将这些错误概括为未来任务的指导方针。LEAP[140]通过生成错误、低级原则和高级原则,将这些原则整合到提示中进行最终推理。RICP[141]使用训练数据中的错误生成高级推理和具体见解,然后使用层次聚类对错误模式进行分组,生成任务级和问题级原则,这些原则被组合并检索以获得问题级见解。A Buffer-of-Thought[142]使用问题蒸馏器跨多个推理任务蒸馏元缓冲区。
一些整合方法,如MedPrompt[143],包括GPT-4生成的思维链,用于训练示例的自我验证,与KNN检索上下文学习方法结合使用。Agent Hospital[144]通过反思生成理由,并利用生成的数据进行记录检索和经验检索。
尽管这些概念有许多不同的名字——如指导方针、原则、经验、思维模板——但主要思想是从案例中提取共同有用的理由,以增强推理查询。这些理由可能来自自我生成的思维链(MedPrompt、Buffer-of-Thought)、训练集错误(GL、RICP、Agent Hospital)或有意生成的错误(LEAP)。此外,一些原则用于所有任务(Agent Hospital、RICP),而其他原则针对特定问题动态检索(MedPrompt、Buffer-of-Thought)。这些作品的许多演示表明,通过案例学习积累经验作为理由对各种推理任务是有益的。
6.4 上下文学习(ICL)
使用示例进行上下文学习是揭示隐藏理由的常用方法。预训练的大型语言模型展现出显著的上下文学习能力,这可以通过基于相似性检索示例来增强,从而利用模型的少样本学习能力[145, 146]。然而,提示中的无关信息的包含很容易分散LLMs的注意力,导致错误回应[147, 148]。OpenICL,由Wu等人[149]开发,构建了一个ICL框架,探索了不同传统检索示例和推理技术对ICL有效性的影响。
此外,基于LLMs对上下文示例的反馈训练更小的模型,以选择最优的演示和示例,可以更有针对性地改进特定任务的上下文构建[150, 5, 151]。为了解决基于语义相似性的示例检索可能无法涵盖实际测试中需要的更广泛关联范围的问题,Su等人[152]采用了一种无监督的、基于图的选择性注释方法,称为vote-k,构建了一个更多样化和代表性的示例数据库,用于少样本学习。此外,Zhang等人[153]提出了一种Auto-CoT方法,将示例聚类成各种代表性类型。通过多样化地抽样问题并生成推理链,这种方法构建了更好地支持学习过程的示例。
然而,使LLMs通过少样本学习掌握超出其训练领域的推理能力仍然是一个重大挑战。Wang等人通过抽样多种推理路径并对这些路径进行边际化,以选择最一致的答案,从而提高了LLMs选择正确推理链的可能性[154]。Agarwal等人引入了两种可扩展的方法来生成可用示例,即强化ICL和无监督ICL,旨在取代人类生成的示例,从而扩大可用示例的范围[155]。DIN-SQL[156]寻求将任务分解成更简单的子任务,并使用这些子问题的解决方案作为LLMs的提示,显著提高了它们从文本生成SQL的性能。类似地,DUP[157]确定了LLMs在解决复杂数学问题时使用的链式思维方法面临的三个主要问题:语义误解、计算错误和遗漏步骤,其中语义误解是主要限制因素。鼓励LLMs深入理解问题并提取解决问题的关键信息,可以显著提高它们通过解决这些语义误解来解决数学问题的能力。
上下文学习越来越多地被用于数学、法律、医学和金融等领域[158, 159, 160],在开发数据增强型LLM应用中发挥着至关重要的作用。这种方法不仅扩展了LLMs的功能能力,还增强了它们在不同领域的实际效用。
6.5 微调
尽管LLMs具有强大的上下文学习能力,但准确识别复杂和冗长的逻辑链中的理由或最佳示例仍然是一个重大挑战。此外,提供广泛的外部先验知识也可能对LLMs的推理能力构成挑战。鉴于这些因素,微调成为一种有前景的方法。它不仅利用了LLMs在预训练期间获得的广泛基础知识,还使它们能够快速掌握新的领域理由。这种方法为增强LLMs在处理高级和专业任务时的适应性和有效性提供了一条可行的路径。
指令调整是向LLMs注入新能力的一种常见方法,通常涉及使用成对(指令、输出)数据进行监督微调。构建指令数据集的三种主要方法:a)从现有数据集中派生[161, 162],b)通过手工制作指令手动创建[163, 164, 165],以及c)使用功能强大的LLMs生成合成数据[166, 154]。此外,许多研究[167, 168, 169]探讨了如何优化指令数据集中的数据分布以提高微调的有效性。然而,在构建数据增强型LLM应用时,微调在时间和计算资源方面仍然是一个相对昂贵的方法。最近,已经做出了一些努力来降低大型模型微调的成本。适配器调整,例如,涉及将小型适配器模型与LLMs集成,在微调期间冻结LLM的参数,只优化适配器的权重[170, 171, 172, 173]。前缀调整和提示调整涉及在输入前添加一组可训练的向量,在训练过程中对其进行优化,以提高LLM的性能[174, 175, 176, 177, 178]。低秩适应[179, 180, 181, 182, 183]通过在每个密集层上施加低秩约束来近似更新矩阵,从而减少了适应下游任务所需的可训练参数数量。
近年来,使用监督微调来增强LLMs在数学推理、金融、法律和医疗等专业领域的能力的工作取得了实质性进展[184, 185, 186]。例如,ChatTimeLlama[187]引入了一个可解释的时间推理指令调整数据集,并在LLaMA[188]上进行了微调,显著提高了模型的复杂时间推理、未来事件预测能力以及可解释性。LISA[189]利用涉及推理的一小段数据样本对多模态LLM LLaVA进行了微调,从而在推理分割能力上取得了显著改进。MAmmoTH[190]巧妙地构建了一个数学示例数据集,独特地结合了思维链和程序思维推理,确保了对不同数学领域的广泛覆盖,并提高了LLM解决一般数学问题的能力。ReFT[191]提出了一种从与同一问题对应的多个注释推理路径中学习的方法。它自动为给定的数学问题采样多个推理轨迹,利用正确答案生成奖励信号。ChatDoctor[192]利用了一个包含100,000个患者-医生对话的大型数据集,这些对话来自一个广泛使用的在线医疗咨询平台,对LLaMA进行了微调,显著提高了模型理解患者需求和提供有效建议的能力。FinGPT[193]开发了一个在金融数据上进行微调的开源LLM,使用了自动化数据管理和轻量级、低秩适应技术。DISC-LawLLM[194]为中文司法领域创建了一个监督微调数据集,对LLMs进行了微调,有效地服务于不同法律场景中的各种用户,提高了法律推理能力。
7 结论
在本文中,我们将数据增强型LLM应用划分为四个不同的类别,基于查询的主要焦点,每个类别都面临独特的挑战,因此需要量身定制的解决方案,如图5所示。对于与静态常识相关的查询,通过思维链方法部署通用LLM是有效的。对于显式事实查询,主要挑战在于确定数据库中事实的确切位置,因此基本RAG是首选方法。在需要汇总多个相关事实的隐式事实查询的情况下,迭代RAG和基于图或树结构的RAG是首选,因为它们能够同时检索个别事实和连接多个数据点。当需要广泛的数据链接时,文本到SQL技术是不可或缺的,利用数据库工具促进外部数据搜索。对于可解释理由查询,通过提示调整和CoT提示取得进展至关重要,以提高LLMs遵守外部指令的合规性。最困难的是隐藏理由查询,它要求从广泛的数据集中自主综合解决问题的方法。在这里,离线学习、上下文学习和微调成为至关重要的方法。
在开发针对性的LLM应用之前,作为领域专家,我们必须深入理解预期的任务,确定相关查询的复杂性级别,并选择相应的技术方法进行解决。这些方法主要通过三种机制将知识注入LLMs,如图6所示:a)基于查询提取部分领域数据作为LLM的上下文输入,b)用特定领域数据训练一个小型模型,然后指导随后输入到LLM的外部信息的整合,以及c)直接使用外部领域知识对通用大型语言模型进行微调,使其成为领域专家模型。这些策略在数据量、训练持续时间和计算资源方面的要求各不相同,依次增加。通过上下文的知识注入提供了更好的可解释性和稳定性,但受到有限上下文窗口的限制,并可能在中间丢失信息[40],最适合数据可以简洁地解释为短文本的场景。然而,这种方法挑战了模型的检索能力和知识提取能力。小型模型方法的优点是减少了训练时间,能够吸收大量的数据,但其有效性取决于模型的能力,可能限制了LLM在更复杂任务上的性能,并随着数据的增加而增加额外的训练成本。微调有助于利用大型模型的容量和广泛的领域特定数据,但其对LLM的影响强烈依赖于所使用的数据设计。使用领域外的事实数据进行微调可能会导致LLM生成更多错误的输出,同时还有可能丢失以前已知的领域知识,并在微调期间忽略未遇到的未完成任务[110, 195]。
因此,选择适当的数据注入策略到LLM需要对数据源有深入的了解,并基于这种洞察做出明智的决策。
此外,在实际情况下,数据增强型LLM应用通常涉及多种查询类型的组合,需要开发人员构建一个路由管道,整合多种方法来有效应对这些多方面的挑战。
作者:张长旺,图源:旺知识
参考资料
标题: Retrieval Augmented Generation (RAG) and Beyond: A Comprehensive Survey on How to Make your LLMs use External Data More Wisely
作者: Siyun Zhao, Yuqing Yang, Zilong Wang, Zhiyuan He, Luna K. Qiu, Lili Qiu
单位: Microsoft Research Asia
标签: AI, Machine Learning, Language Models, Data Augmentation, Retrieval-Augmented Generation
概述: 本文综述了如何通过检索增强生成(RAG)等技术使大型语言模型(LLMs)更有效地利用外部数据。
链接: https://arxiv.org/abs/2409.14924