检索增强生成(RAG)过时了,缓存增强生成(CAG)上位

译者 | 布加迪审校 | 重楼检索增强生成(RAG)已成为为定制信息定制大语言模型(LLM)的事实上的方法。 然而RAG带来了前期技术成本,并且速度可能很慢。 由于长上下文LLM方面取得的进步,企业可以通过在提示中插入所有的专有信息来绕过RAG。

译者 | 布加迪

审校 | 重楼

检索增强生成(RAG)已成为为定制信息定制大语言模型(LLM)的事实上的方法。然而RAG带来了前期技术成本,并且速度可能很慢。由于长上下文LLM方面取得的进步,企业可以通过在提示中插入所有的专有信息来绕过RAG。

检索增强生成(RAG)过时了,缓存增强生成(CAG)上位

台湾政治大学的一项新研究表明,如果使用长上下文LLM和缓存技术,你就可以创建定制的应用程序,性能却比RAG管道更胜一筹。这种方法就叫作缓存增强生成(CAG),可以在知识语料库能装入到模型上下文窗口的企业环境中简单而有效地替代RAG。

RAG的局限性

RAG是处理开放领域问题和专门任务的一种有效方法。它使用检索算法来收集与请求相关的文档,并添加上下文使LLM能够生成更准确的响应。

然而,RAG给LLM应用带来了几个限制。添加的检索步骤引入了延迟,这会降低用户体验。结果还取决于文档选择和排序步骤的质量。在许多情况下,用于检索的模型具有的局限性要求将文档分解为更小的块,这可能会影响检索过程。

此外,RAG通常增添了LLM应用的复杂性,需要开发、集成和维护额外的组件。增加的开销减慢了开发过程。

缓存增强检索

图1. RAG(上)与CAG(下)(来源:arXiv)图1. RAG(上)与CAG(下)(来源:arXiv)

开发RAG管道的替代方法是将整个文档语料库插入到提示中,让模型选择哪些部分与请求相关。这种方法消除了RAG管道的复杂性以及检索错误引起的问题。

然而,将所有文档预先加载到提示中存在三个关键挑战。首先,长提示会减慢模型的速度,并增加推理的成本。其次,LLM上下文窗口的长度限制了插入到提示中的文档数量。最后,为提示添加不相关的信息会导致模型混淆,降低其响应的质量。因此,仅仅将所有文档塞入到提示而不是选择最相关的文档,最终会降低模型的性能。

提议的CAG方法利用以下三个关键趋势来克服这些挑战。

首先,先进的缓存技术使处理提示模板变得更快速、更省钱。CAG的前提是知识文档将包含在发送给模型的每个提示中。因此,你可以提前计算其词元(token)的注意力值,而不是在接收请求时这么做。这种预先计算缩短了处理用户请求所需的时间。

OpenAI、Anthropic和谷歌等领先的LLM提供商为提示的重复部分提供了提示缓存功能,这包括你在提示开头插入的知识文档和指令。以Anthropic为例,如果使用提示的缓存部分,你就可以减少高达90%的成本和85%的延迟。厂商们已为开源LLM托管平台开发出了相应的缓存功能。

其次,长上下文LLM使更多文档和知识更容易插入到提示中。Claude 3.5 Sonnet支持多达20万个词元,而GPT-40支持128000个词元,Gemini支持多达200万个词元。因此就有可能在提示中插入多个文档或整本书。

最后,先进的训练方法使模型面对很长的序列能够执行更好的检索、推理和问答。在去年,研究人员已为长序列任务开发出了几个LLM基准测试,包括BABILong、LongICLBench和RULER。这些基准测试可以测试LLM在多次检索和多跳问答等难题上的表现。这个领域仍有改进的空间,但AI实验室仍在不断取得进展。

随着新一代模型继续扩展上下文窗口,它们将能够处理更庞大的知识库。此外,我们可以期望模型继续提升从长上下文中提取和使用相关信息的能力。

研究人员写道:“这两个趋势将大大扩展我们这种方法的可用性,使其能够处理更复杂、更多样化的应用。因此,我们的方法很有希望成为处理知识密集型任务的强大而通用的解决方案,利用下一代LLM不断增强的功能。”

RAG vs CAG

为了比较RAG和CAG,研究人员针对两个广泛认可的问答基准测试SQuAD和HotPotQA进行了实验:前者侧重于单个文档的上下文感知问答,后者需要跨多个文档进行多跳推理。

他们使用了Llama-3.1-8B模型,具有128000个词元上下文窗口。针对RAG,他们将LLM与两个检索系统相结合以获得与问题相关的段落:基本的BM25算法和OpenAI嵌入。针对CAG,他们将多个文档从基准测试中插入到提示中,让模型自行决定使用哪些段落来回答问题。他们的实验表明,CAG在大多数情况下的表现都优于RAG系统。

图2. CAG的表现优于稀疏RAG (BM25检索)和密集RAG(OpenAI嵌入)图2. CAG的表现优于稀疏RAG (BM25检索)和密集RAG(OpenAI嵌入)

研究人员写道:“通过从测试集预加载整个上下文,我们的系统消除了检索错误,并确保了针对所有相关信息的整体推理。在RAG系统可能检索不完整或不相关的段落、导致答案生成不尽如人意的情况下,这种优势来得尤为明显。”

CAG还显著缩短了生成答案的时间,特别是当参考文本长度增加时。

图3. CAG的答案生成时间比RAG短得多(来源:arXiv)图3. CAG的答案生成时间比RAG短得多(来源:arXiv)

话虽如此,CAG并非灵丹妙药,应该谨慎使用。它非常适合这类场景:知识库并不经常改变,又小到足以插入到模型的上下文窗口。企业还应该注意文档包含基于文档上下文的冲突性事实的情况,这可能会在推理过程中导致模型混淆。

要确定CAG是否适合你的使用场景,最佳方法是试验一番。幸好,CAG的实现很简单,在致力于需要更多开发工作的RAG解决方案之前,应该始终将试用CAG视为第一步。

原文标题:Beyond RAG: How cache-augmented generation reduces latency, complexity for smaller workloads,作者:Ben Dickson

相关资讯

构建一个完全本地的语音激活的实用RAG系统

译者 | 布加迪审校 | 重楼本文将探讨如何构建一个RAG系统并使其完全由语音激活。 RAG(检索增强生成)是一种将外部知识用于额外上下文以馈入到大语言模型(LLM),从而提高模型准确性和相关性的技术。 这是一种比不断微调模型可靠得多的方法,可以改善生成式AI的结果。

GitHub 上流行的 RAG 框架介绍及优缺点分析

随着大型语言模型在自然语言处理中的广泛应用,其固有的知识截止和“幻觉”问题逐渐暴露。 为了解决这些问题,检索增强生成(Retrieval-Augmented Generation,简称 RAG) 技术应运而生。 RAG 通过将外部知识库中的相关信息检索出来,并将这些信息融合到生成过程的上下文中,从而大幅提高了回答的准确性、时效性以及上下文一致性。

用检索增强生成让大模型更强大,这里有个手把手的Python实现

自从人们认识到可以使用自己专有的数据让大型语言模型(LLM)更加强大,人们就一直在讨论如何有效地将 LLM 的一般性知识与专有数据整合起来。对此人们也一直在争论:微调和检索增强生成(RAG)哪个更合适?本文首先将关注 RAG 的概念和理论。然后将展示可以如何使用用于编排(orchestration)的 LangChain、OpenAI 语言模型和 Weaviate 向量数据库来实现一个简单的 RAG。检索增强生成是什么?检索增强生成(RAG)这一概念是指通过外部知识源来为 LLM 提供附加的信息。这让 LLM 可以