赞
踩
PS: 梳理该 Survey 的整体框架,后续补充相关参考文献的解析整理。本文的会从两个角度来分析总结,因此对于同一种技术可能在不同章节下都会有提及。第一个角度是从整体框架的迭代来看(对应RAG框架章节),第二个是从RAG中不同组成部分来看(对应 Retriever,Generator 和 Augmentation in RAG)。
https://arxiv.org/abs/2312.10997
传统上,神经网络通过微调模型来参数化知识,从而适应特定领域或专有信息。虽然这项技术产生了显著的结果,但它需要大量的计算资源,成本高昂,并且需要专门的技术专业知识,使其不太适应不断变化的信息环境。参数化知识和非参数化知识发挥着不同的作用。
纯参数化语言模型(LLM)将从大量语料库中获取的世界知识存储在模型的参数中。其局限性如下:
检索增强生成(RAG, Retrieval-Augmented Generation) 最早由Lewis等人于2020引入,将预先训练的检索器与预先训练的seq2seq模型(生成器)相结合,并进行端到端的微调,以更可解释和模块化的方式获取知识。
在大型模型出现之前,RAG主要专注于端到端模型的直接优化。在检索端进行密集检索,例如Karpukhin等人使用基于向量的密集通道检索(DPR, Dense Passage Retrieval) ,以及在生成端训练较小的模型是常见的做法。由于总体参数较小,检索器和生成器通常都会进行同步的端到端训练或微调。
在LLM出现后,生成语言模型成为主流,在各种语言任务中表现出令人印象深刻的性能。然而,LLM仍然面临挑战,如幻觉、知识更新和数据相关问题。这影响了LLM的可靠性,使其在某些严重的任务场景中举步维艰,尤其是在需要获取大量知识的知识密集型任务中,如开放领域问答和常识推理。参数内的隐性知识可能是不完整和不充分的。在随后的研究发现,将RAG引入大型模型的上下文学习(ICL, In-Context Learning)可以缓解上述问题,具有显著且易于实施的效果。
在大型语言模型时代,RAG的具体定义是指在回答问题或生成文本时,首先从大量文档中检索相关信息的模型。随后,它利用这些检索到的信息来生成响应或文本,从而提高预测的质量。RAG方法允许开发人员避免为每个特定任务重新训练整个大型模型。
总之,RAG系统由两个关键阶段组成:
PS. 在某些情况下,将这两种技术相结合可以实现最佳的模型性能。
现有研究表明,与其他优化大型语言模型的方法相比,检索增强生成(RAG)具有显著的优势:
Naive RAG涉及传统的过程:索引、检索和生成,因此也被概括为 “Retrieve”-“Read” 框架。
从源获取数据并为其建立 index 的管道通常处于脱机状态。数据索引的构建包括以下步骤:
给定用户的输入,使用与第一阶段相同的编码模型将查询转换为向量。计算问题嵌入和文档块在语料库中的嵌入之间的相似性。基于相似性水平,选择前K个文档块作为当前问题的增强上下文信息。
给定的问题和相关文档将合并到一个新的提示中。大型语言模型的任务是根据所提供的信息回答问题,根据不同任务的需要,可以决定是允许大型模型使用其知识,还是仅基于给定信息进行回答。
Naive RAG在三个领域面临主要挑战:
为了解决Naive RAG遇到的索引问题,Advanced RAG通过滑动窗口、细粒度分割和元数据等方法优化了索引。在检索生成的质量方面,结合了 pre-Retrieval 和 post-Retrieval 的方法。
可以通过优化数据索引提高索引内容的质量
在从数据库中检索到有价值的上下文后,将其与查询合并以输入LLM会带来挑战。同时向LLM呈现所有相关文档可能会超过上下文窗口限制。将大量文档连接起来形成冗长的检索提示是无效的,这会引入噪声并阻碍LLM对关键信息的关注。为了解决这些问题,有必要对检索到的内容进行额外处理:
目前的研究主要集中在智能地结合各种搜索技术,优化检索步骤,引入认知回溯的概念,灵活应用各种查询策略,并利用嵌入相似性。
Modular RAG 结构打破了传统的 Naive RAG 索引、检索和生成框架,在整个过程中提供了更大的多样性和灵活性。Modular RAG范式正在成为 RAG 领域的主流,允许跨多个模块的串行管道或端到端训练方法。
模块化RAG的组织方法是灵活的,允许根据特定的问题上下文替换或重新配置RAG过程中的模块。目前的研究主要探讨两种组织范式,包括模块的添加或替换,以及模块之间组织流动的调整。
在RAG的中,“R”代表检索,在从庞大的知识库中检索前k个相关文档的RAG管道中发挥作用。如何得到一个好的 retriever 至关重要,因此作者提出了三个方面的问题来探讨
用户的原始查询可能存在表达不佳和缺乏语义信息的问题。因此,对齐用户查询和文档的语义空间是非常必要的。
在RAG pipeline 中,即使我们采用上述技术来提高检索命中率,也可能无法提高RAG的最终效果,因为检索到的文档可能不是LLM所需要的。论文介绍了两种方法来调整检索器的输出和LLM的偏好:
在RAG中,生成器的输入不仅包括传统的上下文信息,还包括通过检索器获得的相关文本片段。这使生成器能够更好地理解问题背后的背景,并产生信息更丰富的回答。此外,生成器以检索到的文本为指导,以确保生成的内容和检索到的信息之间的一致性。正是输入数据的多样性导致了生成阶段的一系列有针对性的工作,所有这些工作都旨在使大型模型更好地适应查询和文档中的输入数据。如何得到一个好的 Generator 也是非常重要的,本文从两个方面分析了这个问题
检索后处理是指对检索器从大型文档数据库中检索到的相关信息进行进一步处理、过滤或优化的过程。其主要目的是提高检索结果的质量,以更好地满足用户需求或后续任务。
优化生成器的目标是确保生成的文本既自然又有效地利用检索到的文档,从而更好地满足用户的查询需求。需要注意的是,RAG中微调生成器的方法基本上类似于LLM的一般微调方法。
作为一项知识密集型任务,RAG在语言模型训练的预训练、微调和推理阶段采用了不同的技术方法。
目前优化检索过程的方法主要包括迭代检索和自适应检索。这些允许模型在检索过程中多次迭代,或者自适应地调整检索过程,以更好地适应不同的任务和场景。
最近,LLM社区一直在探索使用“LLM作为判断”进行自动评估,许多LLM使用强大的LLM(如GPT-4)来评估自己的LLM应用程序输出。在RAG评估框架领域,RAGAS和ARES是相对较新的。这些评估的核心重点是三个主要指标:答案的真实性、答案相关性和上下文相关性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。