RAG & Agent调研

Paper List

  • 23复旦综述文章:https://arxiv.org/pdf/2312.10997v1.pdf
    • paper仓库 https://github.com/Tongji-KGLLM/RAG-Survey
  • 24北大综述文章:https://arxiv.org/pdf/2402.19473.pdf
    • paper仓库:https://github.com/hymie122/RAG-Survey

国内外研究现状

总起综述

RAG(检索增强生成)最初由Lewis等人[1]首次提出。它将一个预训练的检索器与一个预训练的序列到序列模型(生成器)结合起来,并进行端到端的微调,以更可解释和模块化地捕获知识。在大语言模型(LLM)出现之前,RAG主要集中于端到端模型的直接优化。在检索方面进行的密集检索,Karpukhin等人[2]提出基于向量的密集通道检索(DPR)方法,以及在生成方面训练较小的模型是比较常见做法。但是由于参数大小较小且效果不佳,于是Izacard等人[3]对检索器和生成器进行同步端到端的训练或微调。

在像OpenAI的Bai等人[4]提出ChatGPT这样的大型语言模型出现之后,生成式语言模型成为主流,在各种语言任务中展现出令人印象深刻的性能。然而,Yao等[5]提出LLM仍然面临诸如幻觉、知识更新和与数据相关的问题等挑战。这影响了LLM的可靠性,在某些具体领域的任务场景中表现出困难,特别是在需要访问大量知识的知识密集型任务中,如Chen和Yih[6]所提出的开放领域问答和常识推理任务。模型参数内部的隐含知识可能是不完整和不足够的。

现有方法

Query-Based

基于查询的RAG也被称为提示增强。它将用户的查询与检索过程中获取的文档见解直接整合到语言模型输入的初始阶段。这一范式作为RAG应用中广泛采用的方法之一。一旦文档被检索,它们的内容就会与原始用户查询合并,以创建一个组合的输入序列。随后,这个增强的序列被馈送到一个预训练的语言模型中,以生成响应。

  • REALM [31] 采用双BERT框架来简化知识检索和集成,将预训练模型与知识提取器相结合。初始的BERT模块处理输入问题以及文档,以便进行检索,利用MIPS选择具有最高概率的前k个文档,并定期更新索引。然后将获取的文档片段与查询集成,输入到第二个BERT模块中产生多个输出,这些输出被聚合成一个综合性的响应。
  • RAG [32]将预训练语言模型与知识检索机制相结合,利用DPR和BART结构完成检索增强生成任务。DPR作为检索组件,从庞大的文档数据库中获取相关信息,而BART则利用这些信息进行文本生成。RAG-Token和RAG-Sequence在检索时机上有所不同,前者在每个令牌生成时检索信息,后者则针对整个序列进行单次检索。
  • KILT [125]专注于通过将维基百科页面与特定映射对齐,并通过BLEU分数评估确定最相关的文本范围,以确保信息的准确性和可靠性。它过滤掉低质量的数据,以保持高水平的信息映射,并提供各种检索系统选项,如Tf-idf、DPR、RAG和BLINK+flair,以根据任务要求支持基于证据的预测或引用。
  • SELF-RAG [126]通过整合检索和评论策略,提高了响应的准确性和相关性。首先,该模型利用检索器搜索与输入问题密切相关的信息段落。随后,评论模型评估这些段落,确定它们的相关性和对检索到的文本的支持程度,评估它们对响应生成的影响。最后,生成器模型根据这些信息构建响应,并通过评论标记评估这些响应的质量。

最近,一些方法提出了在不修改语言模型架构的情况下实现RAG的方法,这对于通过API访问语言模型的场景特别合适。

  • RALM [128] 使用BM25算法进行文档检索,并使用预测性重新排名来选择与输入集成相关的文档。

最近的知识库问答(KBQA)研究显示,将检索和语言模型结合起来具有显著的效果。

  • Uni-Parser [133]、RNG-KBQA [121]和ECBRF [134]通过将查询和检索到的信息合并到提示中,有效提高了问答系统的性能和准确性。
  • BLLM增强 [135]代表了一种使用黑盒大型语言模型进行零样本知识库问答的创新尝试。这种方法直接将检索到的信息整合到模型输入中,无需额外的样本训练,展示了将检索和语言模型结合起来以增强模型在理解和回答未见问题方面的泛化能力的巨大潜力。

Latent Representation-based RAG

在基于潜在表示的检索增强生成(RAG)框架中,生成模型与检索到对象的潜在表示进行交互,从而增强了模型的理解能力和生成内容的质量。

  • FiD [33]技术利用BM25和DPR来获取支持性段落。它将每个检索到的段落及其标题与查询连接起来,通过编码器分别处理它们。FiD通过在解码器中融合多个检索到的段落的信息,而不是在编码器中处理每个段落,从而降低了计算复杂度,并有效地利用相关信息来生成答案。融合解码器的方法不仅适用于文本内容处理领域,还展示了在处理代码、结构化知识和多样化多模态数据集方面的巨大潜力和适应性。
  • 在知识库问答(KBQA)领域,FiD方法已被广泛采用,展示了显著的有效性。UniK-QA [142]、DECAF [143]、SKP [144]、KD-CoT [145]和ReSKGC [146]通过应用融合解码器技术有效地提升了问答系统的性能。这表明通过将RAG用于KBQA,可以显著提高问答系统的效率和准确性。
  • TOME [153]显著地将焦点转向全面的提及编码,将提及的细节优先于简单的实体表示。它精心为维基百科中的每个实体提及生成编码,填充了一个包含大约1.5亿条目的存储库。这个存储库包括关键和值编码以及实体ID,使得检索到更加精细的信息成为可能。TOME集成了一个初始的转换器模块来处理输入文本,然后是具有内存注意力层的TOME模块,促进了多方面信息源的综合,并增强了推理推理能力,即使是对于未遇到的实体也是如此。
  • Memorizing Transformers [29]通过在Transformer层中集成了一个kNN增强型注意力机制,彻底改变了长文档处理的方式。这一创新在输入序列处理中触发了kNN搜索,根据序列与存储的键-值对之间的相似性提取数据,从而提高了性能而无需完全重新训练。这种方法不仅增强了处理效率,还扩展了模型的记忆范围,使其能够从生成的输出中进行自检索,并为广泛的知识库或代码存储库进行微调。
  • Unlimiformer [154]通过在预训练的编码器-解码器Transformer框架中嵌入一个k最近邻(kNN)索引,开创了处理长度不定输入的先河。将输入标记的隐藏状态存储在kNN索引中,使得在解码过程中能够高效检索到高度相关的标记。这一创新扩展了模型处理长序列的能力。
  • 与先前的知识方法有所不同,EaE [155]使语言模型内化显式的实体知识。EaE引入了实体特定的参数化,通过在Transformer架构中嵌入实体内存层,优化推理效率。该层直接从文本数据中获取实体表示,利用稀疏检索策略基于它们的嵌入获取最近的实体,从而通过计算实体特定信息的聚合来提炼模型的理解能力。

Logit-based RAG

在基于logit的RAG中,生成模型通过logit在解码过程中结合检索信息。通常,logit通过模型求和或组合,以产生逐步生成的概率。

  • kNN-LM [35]模型将预训练的神经语言模型与k最近邻搜索相结合。它利用预训练模型生成候选词列表及其概率分布,同时从数据存储库中检索,基于当前上下文找到k个最相关的邻居,从而增强原始语言模型的输出。这个模型的核心创新在于它能够动态地从广泛的文本语料库中检索信息,显著提高了预测的准确性和相关性,特别是在处理罕见模式和适应不同领域方面。
  • He [36]提出了一个新的框架,该框架基于只在必要时执行检索操作,旨在通过自适应检索增强kNN-LM模型的推理效率。该框架通过训练检索适配器来加速模型的推理速度,该适配器自动识别并消除某些场景中不必要的检索操作。这种方法允许模型根据当前上下文动态决定是否需要检索,从而在性能和效率之间取得平衡,并显著提高推理速度,同时保持模型性能。
  • 不同于先前的方法仅在测试时合并记忆,TRIME [159]在训练和测试阶段均实现了记忆合并,将批内示例视为可访问的记忆。TRIME利用新的数据批处理和记忆构建技术,有效利用外部记忆。TRIME利用BM25分数将具有高词汇重叠的段落打包到同一批次中,构建训练记忆以进一步优化模型性能。
  • NPM [160]是由编码器和参考语料库组成的非参数遮蔽语言模型。与应用softmax在有限词汇上的传统模型不同,NPM在整个语料库上建模非参数分布。编码器的作用是将语料库中的短语映射为固定大小的向量,通过检索与遮蔽位置最相似的短语来填充[MASK]。

RAG For Applications

问答涉及从广泛而全面的文本来源中提供对提出的问题的回复的过程。

  • FID [33]和REALM [31]根据查询识别出前k个最相关的文章片段,并将每个片段与问题一起发送给大型语言模型(LLMs)以生成k个响应。然后将这些响应合成为最终答案。
  • Toutanova等人[199]用知识图中的子图替换了REALM中的文本语料库,取得了令人印象深刻的结果。
  • Atlas [28]展示了利用检索增强生成(RAG)来辅助LLMs进行开放领域问答任务显著增强了少样本学习能力。
  • RETRO [34]利用注意机制将问题与模型内的相关检索文档整合,生成最终答案。
  • SKR [196]观察到使用RAG并不总是有利于问答,并因此探索了引导模型评估其对相关知识的掌握,随后调整其对检索增强的外部资源的使用。
  • KAPING [200]通过将知识图中的结构化知识通过构建的提示集成到输入中来提高LLM响应的质量。
  • TOG [201]引入了一种创新的知识图增强的LLM框架,通过促进LLMs与知识图之间的交互,并通过波束搜索扩展推理路径空间而表现出色。解决长尾问题。
  • NPM [160]开创性地使用非参数数据分布代替softmax层,使参数较少的模型能够有效执行。- - Self-RAG [126]通过学习区分何时进行检索、评估检索内容的相关性以及使用四种类型的反思令牌评估最终生成的结果来提高答案质量。
  • CL-ReLKT [202]采用语言通用的编码器来弥合跨语言的问题-文档对之间的差距,从而更好地利用多语言数据。
  • CORE [203]通过引入一种新颖的密集通道检索算法和多语言自回归生成模型来缓解语言资源差异。
  • 最后,EAE [155]通过检索查询实体的实体嵌入并将其与隐藏状态集成以进行进一步处理来提高答案质量。
  • UR-QA [204]发现,在遇到未见问题时,检索QA对有更好的最终效果;在遇到以前未见过的问题时,检索文本块表现更好。因此,建议同时检索QA对和文本块,并通过比较校准的置信度来选择最终答案。

Commonsense Reasoning

指的是机器以类似人类的方式推断或决策问题或任务的能力,利用其获取的外部知识及其应用。然而,普通常识知识的广泛范围和推理过程的复杂性使得普通常识推理成为自然语言处理(NLP)领域中一直具有挑战性和突出的研究领域。

KG-BART [206]通过在知识图中引入复杂的概念之间的复杂相互关系,扩展了概念空间。它采用图注意机制来帮助大型语言模型(LLMs)构建更加细致和逻辑一致的句子。这种方法不仅提高了模型的泛化能力,还显著增强了它们的普通常识推理能力。

RAG for Knowledge

Knowledge Base Question Answering

知识库问答涉及利用知识库来识别问题的正确答案。许多语义解析方法被提出,这些方法会根据问题生成逻辑形式(例如SPARQL)。

  • ReTraCk [239]通过提及检测链接实体,并使用密集检索器Bert检索模式项。然后,它通过LSTM生成逻辑形式,并通过特定于知识的规则整合检索到的项目。
  • 对于给定的查询,Unseen Entity Handling [51]通过FreeBase [240]检索主题实体,并将查询与实体连接起来,以便编码器-解码器生成SPARQL输出。
  • CBRKBQA [52]使用基于roberta的深度检索检索相关问题和相应的逻辑形式答案,然后将问题和检索到的对连接起来,以供编码器-解码器Transformer模型使用。它还修改最终生成结果,以使生成的关系与知识图中查询实体的局部邻域中存在的关系相一致。
  • GMT-KBQA [50]首先通过基于bert的深度检索检索相关实体和关系,然后将信息连接起来进行T5生成。为了改善检索结果,它利用交叉编码器对候选进行重新排序,并使用相同的T5结构进行关系分类和实体消歧。
  • RNG-KBQA [121]在知识图中列举候选逻辑形式,然后对候选进行排名,并将其与查询连接起来,以通过T5模型生成最终的逻辑形式。
  • 基于这一思想,TIARA [122]还检索实体和模式,除了逻辑形式,而后续工作 [241]使用BM25检索前k个问题。
  • Uni-Parser [133]使用提及检测、交叉编码器排名器和2-hop路径提取从知识图中检索相关实体。它还考虑从数据库中列举表格和列。在获取相关信息后,它将前k个原语与查询连接起来,并通过T5生成逻辑形式。
  • UniKQA [142]将三元组的文本形式连接起来,并构建用于检索的文档池。对于给定的问题,它利用密集检索器检索相关文档,然后执行融合解码器技术以整合信息进行答案生成。
  • SKP [144]在推理中执行与UniK-QA类似的操作,但在三元组上添加了预训练阶段,该阶段基于三元组和检索到的项使用知识感知的MLM损失和与检索到的项相关的知识对比损失。
  • BLLM augmentation [135]使用TIARA作为检索相关知识库元素的工具,然后通过GPT-4等黑盒LLM进行上下文学习以生成逻辑形式。
  • ECBRF [134]遵循基于案例的推理范式,通过密集检索器检索相似的三元组,并构建BART或GPT-2上下文学习的提示输入。
  • DECAF [143]将资源描述格式的知识库三元组组成句子,然后将句子与相同的头实体连接成文档。它使用BM25稀疏检索或Bert密集检索检索相关文档,然后利用融合解码器技术生成逻辑形式和每个(查询、文档)对作为输入的直接答案。它将输出组合以获得最终答案。
  • KD-CoT [145]使用与DECAF相同的密集检索器和融合解码器生成器。它遵循一种思维链范式,迭代地执行检索、生成和验证,直到CoT完成。
  • FC-KBQA [243]在给定问题的情况下提取相关类、关系和实体。对于类和关系,它使用BM25作为检索器,使用基于Bert的交叉编码器作为重新排序器。对于实体,它遵循提及检测范式。为了组成所有组件候选者,它应用T5模型生成逻辑表达式。
  • Keqing [244]首先通过微调的LLM将复杂问题分解为简单的子问题,然后通过密集检索器RoBERTa检索类似的子问题模板,从知识图中提取候选实体,最后通过ChatGPT生成答案,给出相关实体作为上下文输入。为了探究LLMs对形式语言的深入理解,一项研究工作 [245]探索了形式语言理解和形式语言生成的能力。它利用检索对执行上下文学习。对于理解,它使用树编辑距离检索类似的逻辑形式,而对于生成,它使用BM25检索类似的自然语言查询。

知识图谱补全

知识图由三元组组成,包括头实体、关系和尾实体。知识补全的任务是预测不完整三元组中的缺失实体。

  • ReSKGC [146]将所有训练三元组通过连接线性化为文本,然后使用BM25检索相关三元组,并使用融合解码器的T5生成完成的三元组。

知识补充

  • 稠密检索(Dense Retrieval, DR)一般指的是将documents编码为稠密向量(Dense Vector),这个如今一般都通过预训练模型的encoder进行完成,例如BERT或者T5等(GPT这种decoder架构的也可以做到)。随后基于向量数据库(如FAISS)等进行类似于K近邻的搜索方法,来查找与查询内容接近的高维文档向量。

    • DPR:通过优化question和相关passage向量的最大化内积,目的是比较batch中所有的question和passage
  • 稀疏检索(Sparse Retrieval, SR)将文档投射到一个稀疏向量上,顾名思义,这个稀疏向量通常与文档的语言词汇一致,例如你的一篇文章,对每个词进行向量化,随后在词这个维度上进行执行你的检索策略。当然,这个传统的BM25或者TF-IDF也可以做到,但随着Transformer接管了这一领域,你会看到像 SPLADE 这样的方法,使用神经模型来推断与文档相关的词汇,即使这些词汇并不存在。这种方法的好处是,你可以离线处理文章中的词等细粒度的向量表示,从而大大加速检索的效率(DR中,每拿到一个新的document,都需要将这个document进行向量化)。

大多数常见的 DR 设置都是将整个段落/文档嵌入为一个单一的向量,类似于 NLP 中的 [CLS] 表示法。然而,SR方面,ColBERT 或 AligneR 等后期交互模型试图通过计算每个token的向量,然后以某种方式利用它们,来减轻必须选择在固定大小的向量中出现的存储等的问题。

KGP-MDQA

关于问答系统:https://zhuanlan.zhihu.com/p/523447445

无提示词

有提示词:

  • OD-QA : 开放域问答
  • ingle document question-answering (D-QA)

传统的两个方法都是retrieve and read,retrieve grounding contexts and derive faithful answers from the contexts

  • MD-QA:alternatively retrieving and reasoning knowledge across different documents

面临的问题:

  • 并行查找:答案来自多个文档
  • 顺序推理:文档中包含多模态的结构化数据(pages,sections, paragraphs, tables, and figures)
  • 结构化理解:用户提出的question需要对结构化文档有深入的理解(BM25和DPR做不到)

已有的解决方案:

  • 训练一个多跳检索器,没有LLMs的参与
  • 使用不同的prompt策略, Chain/Tree/Graph-of-though,来指导LLM获得正确答案
    它们存在的问题:
  • 闭源的LLMs会有很大的时延以及很大的token开销
  • 如何让LLMs理解结构化的数据是一个未解决的问题

这篇文章提出的方法:

  1. 基于知识图谱的Prompt
  2. 对于多个文档的推理和QA,设计了一个基于知识图谱的LLM图遍历agent,生成解决问题的下一步推理依据。基于生成的依据,在结构化的知识图谱中选择访问最可靠的邻居节点
  3. 指令微调基于知识图谱的LLM图遍历agent(T5、LLAMA)
  4. 闭源的LLM来产生最后的依据
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值