专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
丁香医生  ·  有种肉是一类致癌物,你可能经常吃 ·  13 小时前  
会计雅苑  ·  中国太平保险集团2024-2028年新增审计 ... ·  2 天前  
营养师顾中一  ·  吃了这4种菜,等于只吃一样“菜”? ·  昨天  
营养师顾中一  ·  这个时期,女性真的会特别想吃高热量食物! ·  昨天  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

大语言模型的RAG:综述

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2024-03-12 08:58

正文

23年12月同济大学和复旦大学的综述论文“Retrieval-Augmented Generation for Large Language Models: A Survey”。

大语言模型(LLM)展示了强大的功能,但在实际应用中仍然面临挑战,如幻觉、知识更新缓慢以及答案缺乏透明度。检索增强生成(RAG)是指在使用LLM回答问题之前,从外部知识库中检索相关信息。RAG已被证明可以显著提高答案的准确性,减少模型幻觉,尤其是在知识密集型任务中。通过引用来源,用户可以验证答案的准确性,并增加对模型输出的信任。它还促进了知识更新和特定领域知识的引入。RAG有效地将LLM的参数化知识与非参数化的外部知识库相结合,使其成为实现大型语言模型的最重要方法之一。本文概述了LLM时代RAG的发展范式,总结了三种范式:天真RAG、高级RAG和模块RAG。然后总结和组织了RAG的三个主要组成部分:检索器、生成器和增强方法,以及每个组成部分的关键技术。此外,还讨论了如何评估RAG模型的有效性,介绍了RAG的两种评估方法,强调了评估的关键指标和能力,并提出了最新的自动评估框架,以及RAG的技术堆栈和生态系统。


术语“检索增强生成(RAG)”最早由[Lewis2020]引入。它将预训练的检索器与预训练的seq2seq模型(生成器)相结合,并进行端到端的微调,以更可解释和模块化的方式获取知识。在大模型出现之前,RAG主要专注于端到端模型的直接优化。在检索端进行密集检索,例如使用基于向量的Dense Passage Retrieval(DPR)[Carpukhin2020],以及在生成端训练较小的模型是常见的做法。由于总体参数大小较小,检索器和生成器经常进行同步的端到端训练或微调[Izacard2022]。

RAG算法和模型的发展如图所示。从时间上看,大多数与RAG相关的研究都出现在2020年之后,2022年12月ChatGPT发布时出现了重大转折。自ChatGPT发布以来,自然语言处理领域的研究已进入大模型时代。天真RAG技术很快得到了重视,导致相关研究的数量迅速增加。在增强策略方面,自RAG概念引入以来,关于预训练和监督微调阶段强化的研究一直在进行中。然而,大多数关于推理阶段强化的研究都出现在LLM时代。这主要是由于与高性能大模型相关的高训练成本。研究人员试图通过在推理阶段包括RAG模块,以成本效益高的方式结合外部知识来增强模型生成。关于增强数据的使用,早期的RAG主要关注非结构化数据的应用,特别是在开放领域问答的背景下。随后,用于检索的知识源范围扩大,使用高质量的数据作为知识来源,有效地解决了大模型中错误知识的内化(internalization)和幻觉等问题。这包括结构化知识,知识图就是一个典型的例子。最近,人们越来越关注自检索,它涉及挖掘LLM本身的知识以提高其性能。

RAG的含义随着技术的发展而扩展。 在大语言模型时代,RAG的具体定义是指在回答问题或生成文本时,首先从大量文档中检索相关信息的模型。 随后,它利用这些检索到的信息来生成响应或文本,从而提高预测的质量。 RAG方法允许开发人员避免为每个特定任务重新训练整个大模型。 相反,他们可以附加一个知识库,为模型提供额外的信息输入,并提高其响应的准确性。 RAG方法特别适用于知识密集型任务。 总之,RAG系统由两个关键阶段组成:

  • 1.利用编码模型,基于问题去检索相关文档,如BM25、DPR、Col-BERT和类似方法[Roberson2009,Karpukhin2020,Khattab&Zaharia2020]。

  • 2.生成阶段:使用检索的上下文作为条件,系统生成文本。

在大语言模型(LLM)的优化中,除了RAG,另一个重要的优化技术是微调。

RAG 类似于为模型提供教科书,允许它基于特定查询检索信息。这种方法适用于模型需要回答特定查询或处理特定信息检索任务的场景。然而,RAG不适合教导模型理解广泛的领域或学习新的语言、格式或风格。

微调 类似于让学生通过广泛的学习内化知识。当模型需要复制特定的结构、样式或格式时,这种方法非常有用。微调可以提高非微调模型的性能,并使交互更加高效。它特别适合于强调基础模型中的现有知识,修改或自定义模型的输出,以及为模型提供复杂的指令。然而,微调不适合将新知识纳入模型,也不适合需要快速迭代新用例的情况。RAG和微调(FT)之间的具体比较可以在表中说明。

RAG和微调并不互斥,但可以相互补充,增强模型在不同层面的能力。 在某些情况下,将这两种技术相结合可以实现最佳的模型性能。 使用RAG进行优化和微调的整个过程可能需要多次迭代才能获得令人满意的结果。

现有研究表明,与其他优化大语言模型的方法相比, 检索增强生成(RAG) 具有显著优势[Shuster 2021,Yasunaga 2022,Wang 2023c,Borgeud 2022]:

  • RAG通过将答案与外部知识相关联来提高准确性,减少语言模型中的幻觉问题,并使生成的回答更加准确可靠。

  • 用检索技术可以识别最新的信息。与仅依赖训练数据的传统语言模型相比,RAG保持了响应的及时性和准确性。

  • 透明度是RAG的一个优势。通过引用来源,用户可以验证答案的准确性,增加对模型输出的信任。

  • RAG具有定制功能。通过索引相关的文本语料库,可以针对不同的领域定制模型,为特定领域提供知识支持。

  • 在安全和隐私管理方面,RAG凭借其在数据库中内置的角色和安全控制,可以更好地控制数据使用。相比之下,微调后的模型可能缺乏谁可以访问哪些数据的明确管理。

  • RAG的可扩展性更强。它可以处理大规模数据集,而无需更新所有参数和创建训练集,从而提高了经济效率。

  • 最后,RAG产生的结果更值得信赖。RAG从最新数据中选择确定性结果,而微调模型在处理动态数据时可能会出现幻觉和不准确,缺乏透明度和可信度。

如图是RAG和其他优化(提示和微调)方法的比较:


天真RAG 研究范式,代表了在ChatGPT广泛采用后不久获得重视的最早方法。天真RAG涉及传统的过程:索引、检索和生成。天真RAG也被概括为“检索”-“阅读”框架[Ma2023a]。

天真RAG在三个领域面临主要挑战:检索质量、响应生成质量和增强过程。

关于检索质量,问题是多方面的。主要问题是精度低,检索集中的所有块都与查询相关,这会导致潜在的幻觉和空半空坠落问题。第二个问题是低召回率,当没有检索到所有相关块时,会出现这种情况,从而阻止LLM获得足够的上下文来合成答案。此外,过时的信息带来了另一个挑战,即数据冗余或过时的数据可能导致不准确的检索结果。

就产生反应的质量而言,问题同样多样化。幻觉是一个突出的问题,模型编造了一个上下文中不存在的答案。不相关是另一个问题,模型生成的答案无法解决查询问题。此外,毒性或偏见,即模型产生有害或冒犯性反应,是另一个问题。

最后,增强过程也面临着几个挑战。至关重要的是,将检索到的段落中的上下文与当前的生成任务有效地结合起来至关重要。如果处理不当,输出可能会显得不连贯或不连贯。冗余和重复是另一个问题,特别是当多个检索到的段落包含相似的信息,导致生成步骤中的内容重复时。此外,确定多个检索到的段落对生成任务的重要性或相关性是具有挑战性的,并且增强过程需要适当平衡每个段落的值。检索的内容也可能来自不同的写作风格或语调,增强过程需要调和这些差异以确保输出的一致性。最后,生成模型可能过度依赖增强信息,导致输出仅重复检索到的内容,而不提供新的价值或合成信息。

高级RAG 针对天真RAG的不足进行了有针对性的改进。在检索生成的质量方面,高级RAG结合了检索前和检索后的方法。为了解决天真RAG遇到的索引问题,高级RAG通过滑动窗口、细粒度分割和元数据等方法优化了索引。同时,提出了多种优化检索过程的方法。在具体实现方面,高级RAG可以通过流水线或端到端的方式进行调整。

从数据库中检索到有价值的上下文后,将其与查询合并以输入LLM会带来挑战。同时向LLM呈现所有相关文档可能会超过上下文窗口限制。将大量文档连接起来形成冗长的检索提示是无效的,这会引入噪声并阻碍LLM对关键信息的关注。为了解决这些问题,需要对检索到的内容进行额外的处理。

检索过程的优化旨在提高RAG系统的效率和信息质量。目前的研究主要集中在智能地结合各种搜索技术,优化检索步骤,引入认知回溯(cognitive backtracking)的概念,灵活应用各种查询策略,并利用嵌入相似性。这些努力共同努力实现RAG检索中上下文信息的效率和丰富性之间的平衡。

模块化RAG 结构打破了传统的天真RAG索引、检索和生成框架,在整个过程中提供了更大的多样性和灵活性。一方面,它集成了各种方法来扩展功能模块,例如在相似性检索中加入搜索模块,并在检索器中应用微调方法[Lin 2023]。此外,特定问题导致了重组RAG模块的出现[Yu2022]和迭代方法,如[Shao2023]。模块化RAG范式正在成为RAG领域的主流,允许跨多个模块的串行化流水线或端到端训练方法。

模块化RAG的组织方法是灵活的,允许根据特定的问题上下文替换或重新配置RAG过程中的模块。对于由检索和生成两个模块组成的天真RAG(在一些文献中称为读取或合成),该框架提供了适应性和丰富性。目前的研究主要探讨两种组织范式,包括模块的添加或替换,以及模块之间组织流动的调整。

三种RAG范式之间的比较如图所示:


RAG核心组件的类别如图所示:

在RAG的上下文中,“R”代表 检索 ,在从庞大的知识库中检索前k个相关文档的RAG流水线中发挥作用。然而,制作一只高质量的检索器是一项不平凡的任务。有三个关键问题值得讨论:

  • 1)如何获得准确的语义表示?在RAG中,语义空间是查询和文档映射的多维空间。当重新检索时,它是在语义空间内测量的。如果语义表达不准确,那么它对RAG的影响是致命的,

  • 2) 如何匹配查询和文档的语义空间?在RAG应用程序中,一些检索器使用相同的嵌入模型对查询和文档进行编码,而另一些检索器则使用两个模型分别对查询和单据进行编码。此外,用户的原始查询可能存在表达不佳和缺乏语义信息的问题。因此,对齐用户查询和文档的语义空间是非常必要的。

  • 3) 如何将检索器的输出与大语言模型的首选项对齐?在RAG流水线中,即使采用上述技术来提高检索命中率,也可能无法提高RAG的最终效果,因为检索的文档可能不是LLM所需要的。

RAG的另一个核心组件是 生成器 “G”,负责将检索到的信息转换为自然流畅的文本。它的设计灵感来自传统的语言模型,但与传统的生成模型相比,RAG的生成器通过利用检索的信息来提高准确性和相关性。在RAG中,生成器的输入不仅包括传统的上下文信息,还包括通过检索器获得的相关文本片段。这使生成器能够更好地理解问题背后的背景,并产生信息更丰富的回答。此外,生成器以检索的文本为指导,以确保生成的内容和检索到的信息之间的一致性。正是输入数据的多样性导致了生成阶段的一系列有针对性的工作,所有这些工作都旨在使大模型更好地适应查询和文档中的输入数据。







请到「今天看啥」查看全文