检索增强生成(RAG)作为一种通过整合外部知识源来增强语言模型的强大方法而备受瞩目。不过,这种方法也带来了一些挑战,比如检索过程的延迟、文档挑选时可能出现的误差,以及系统复杂度的增加。
随着能够处理更长上下文的大语言模型(LLMs)的兴起,缓存增强生成(CAG)技术应运而生,它避免了实时的信息检索。这项技术通过将所有必要资源预先加载到模型的扩展上下文中,并在缓存其相关运行时(runtime)参数,尤其在处理数量有限且易于管理的文档或知识时更为有效。
话不多说,让我们来深入探讨这一新颖的技术。
本文将讨论以下主题:
- RAG 如何扩展上下文的处理能力?
- 无限扩展的上下文窗口
- CAG 技术有何优势?
- 其他方面的改进
- CAG 框架的运作原理
- 总结
图片
1.RAG 如何扩展上下文的处理能力?
RAG 是一种半参数化系统,其中参数化部分由大语言模型构成,而非参数化部分则包括其他元素。将这两部分结合,便形成了半参数化系统。在 LLMs 中,所有信息都以编码形式存储在模型的权重或参数中,而系统的其他部分则没有用参数来定义这些知识。
那么,这种设计是如何解决问题的呢?
- 通过在 LLMs 中灵活地替换索引(即特定的信息),能够实现信息的个性化定制,这意味着我们不会因为信息过时而受限,同时也能够更新索引的内容。
- 将 LLMs 与这些索引相结合,可以减少错误信息的产生,并且我们能够通过指向信息原始来源来进行引用和归属描述。
因此,从理论上讲,RAG 提升了我们为 LLMs 创建更佳上下文的能力,使其表现更加出色。
但这个过程真的这么简单吗?答案是否定的。
现有的 RAG 系统并不够智能,它们相对简单,无法应对那些需要大量自定义上下文的复杂任务。
因此,简而言之,正是由于上下文窗口对 LLMs 的限制,RAG 才得以发展起来。
2.无限扩展的上下文窗口
相关论文在此:《Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention》。
这篇论文提出了一种高效的方法,可以在有限的内存和计算资源约束下,将基于 Transformer 的大语言模型(LLMs)扩展到处理无限长的输入。该方法中的一个关键创新是一种名为 Infini-attention 的全新注意力机制。
Infini-attention 的核心思想是将局部注意力和全局注意力相结合。具体来说,首先将整篇文章分割成多个片段,在其中一个片段上应用标准的注意力机制,而为了获取前一个片段的上下文,我们采用了一种线性注意力机制。以下是对这篇论文的简要概述:
- 混合注意力机制:局部注意力集中于单词周围的即时上下文,而长距离注意力则通过参考迄今为止所见的整个序列的压缩摘要来保持全局视野。
- 压缩记忆:利用线性注意力来记忆之前的文本片段。
- 高效更新:为了避免冗余和节省计算量,Infini-attention 不会直接将新信息添加到记忆中。相反,它会首先检查已知信息,然后只更新记忆中的新信息或不同信息,这与 ResNet 中的跳跃连接(skip connections)类似。
- 权衡控制:通过一个超参数来调节局部信息和压缩记忆的混合比例。
3.CAG 技术有何优势?
无检索长上下文范式:提出了一种创新方法,通过利用预加载文档和预计算 KV 缓存的长上下文 LLMs,消除了检索延迟、错误和系统复杂性。
性能比较:实验表明,长上下文 LLMs 的性能优于传统的 RAG 系统,特别是在可管理的知识库中。
实用见解:提出可操作的优化策略以提升知识密集型工作流效率,通过实证验证无检索方法在特定应用场景下的可行性。
CAG 相较于传统 RAG 系统具有以下显著优势:
- 缩短推理时间:由于无需实时检索,推理过程变得更快、更高效,能够更快地响应用户查询。
- 统一上下文:将整个知识集合预加载到 LLM 中,可提供对文档的整体和连贯理解,从而在各种任务中提高响应质量和响应一致性。
- 简化架构:通过移除整合检索器和生成器的需求,系统变得更加简洁,降低了系统复杂性,提高了可维护性,并减少了开发成本。
4.其他方面的改进
对于知识密集型任务而言,增加的计算资源通常被用来融入更多的外部知识。然而,如果没有有效地利用这些知识,单纯地扩展上下文并不总是能提升性能。
两种推理扩展策略:上下文学习(In-context learning)和迭代式提示技术(iterative prompting)。
这些策略为扩展测试时计算(test-time computation)提供了额外的灵活性(例如,通过增加检索的文档数量或生成步骤),从而增强 LLMs 获取和利用上下文信息的能力。
我们需要回答两个关键问题:
(1) 在进行最优配置时,RAG 性能如何通过推理计算规模的扩展获得提升?
(2) 能否通过建模 RAG 性能与推理参数之间的量化关系,预测给定预算约束下的最优测试时计算资源分配?
在最优推理参数配置下,RAG性能随着测试时计算量级的提升呈现近似线性增长。基于实验观测,我们推导出RAG的推理扩展规律及其配套计算资源分配模型,该模型可预测不同超参数配置下的系统性能表现。
欲了解更多信息请阅读此论文:https://arxiv.org/pdf/2410.04343
另一项工作则更多地从硬件(优化)设计的角度出发:
研究团队开发了智能知识存储系统(Intelligent Knowledge Store, IKS),这是一种基于 CXL 2.0 协议的设备,采用横向扩展的近内存加速架构,通过在主机 CPU 与近内存加速器之间构建新型缓存一致性接口实现性能突破。
在 512GB 向量数据库上,IKS 执行精确最近邻搜索的速度相比 Intel Sapphire Rapids CPU 提升 13.4-27.9 倍。这种搜索性能优势使典型 RAG 应用的端到端推理时间缩短 1.7-26.3 倍。作为内存扩展器,IKS 的内部 DRAM 可解耦供服务器其他应用使用,有效避免当今服务器中最昂贵的 DRAM 资源闲置浪费。
欲了解更多信息,请阅读这里:https://arxiv.org/pdf/2412.15246
另一篇论文系统性地研究了长上下文对 20 种主流开源和商业大语言模型(LLM)的检索增强生成(RAG)性能影响。研究团队通过在三个专有领域数据集上改变总上下文长度(从 2,000 到 128,000 tokens,并在可能情况下扩展至 200 万 tokens)运行 RAG 工作流,揭示了长上下文在 RAG 应用中的优势与局限性。
他们的研究发现,虽然检索更多文档可以提高性能,但只有少数最新一代的最先进 LLMs 能够在超过 64k tokens 的长上下文中保持稳定的准确性。他们还确定了长上下文场景中的不同故障模式,为未来的研究提出了方向。
欲了解更多信息,请阅读此论文:https://arxiv.org/pdf/2411.03538
5.CAG 框架的运作原理
CAG 框架利用长上下文 LLMs 的扩展上下文能力,消除了实时检索的需求。通过预加载外部知识源(例如,文档集合 D={d1,d2,…} )并预计算键值(KV)缓存(C_KV),它克服了传统 RAG 系统的效率低下问题。该框架主要分三个阶段运行:
1)外部知识预加载
- 对精选的文档集合 D 进行预处理,使其适配模型的扩展上下文窗口。
- LLM 处理这些文档,将它们转换为预计算的键值(KV)缓存,该缓存封装了 LLM 的推理状态。LLM(M)将文档集合 D 编码成预计算的 KV 缓存:
image.png
- 该预计算缓存被存储以供复用,确保无论后续执行多少次查询,处理文档集合D的计算成本仅需支付一次。
2) 推理阶段
- 在推理阶段,KV 缓存(C_KV)与用户查询 Q 一起加载。
- LLM 利用这个缓存中的上下文来生成响应,从而消除了检索延迟,并减少了由于动态检索引起的错误或遗漏的风险。LLM 通过利用缓存中的上下文来生成响应:
image.png
这种方法消除了检索延迟,将检索错误的风险降至最低。组合提示词 P=Concat(D,Q) 确保了对外部知识和查询的统一理解。
3) 缓存重置
- 为维持性能,需对 KV 缓存进行高效重置。在推理过程中,随着新 token(t1,t2,…,tk)被添加至上下文窗口,重置过程会截断这些 tokens:
image.png
- 随着新 token 的连续添加,KV 缓存逐渐增长,重置时仅需截断这些新增 token,即可实现快速重新初始化,无需从磁盘重新加载整个缓存。这种设计避免了全量缓存加载的 I/O 瓶颈,确保了系统响应速度的持续稳定。
6.Conclusion
缓存增强生成(CAG)在实时检索不可行或需要极低延迟响应的场景中优势显著。通过将海量外部知识嵌入模型的上下文窗口,CAG 能够生成信息丰富且上下文相关的回答,避免了传统检索增强生成(RAG)系统的检索延迟。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!