随着大模型技术的不断发展,尤其是大模型上下文窗口(context window)逐渐增大的趋势,许多研究者开始思考是否可以借此特点简化传统的 RAG(Retrieval-Augmented Generation)架构。在此背景下,2024年12月的研究论文提出了一个创新方案——CAG(Cache-Augmented Generation),这是一种通过预加载外部文档到大模型的上下文窗口来简化传统 RAG 流程的方法。本文将详细介绍 CAG 的特点、工作原理、实验结果、适用场景以及如何快速上手。
1. RAG 的天生不足之处
尽管RAG在理论上能够通过引入外部知识提高生成能力,但它在实际应用中面临的挑战不可忽视:
- 延迟高和复杂度大:RAG依赖于实时检索过程,需要在查询时进行向量搜索、排序、选择相关文档等复杂操作。这些操作不仅增加了计算负担,还导致了响应时间的延长,尤其是在面对大规模文档库时。
- 安全隐患:为了提升检索的准确性,RAG通常将外部文档转化为向量并存储在向量数据库中。然而,这种做法可能会导致敏感信息泄漏的风险,特别是在涉及个人隐私或商业机密的数据时。
- 依赖第三方向量存储:许多RAG实现依赖于商业化的向量数据库和嵌入生成服务,这些服务的使用可能导致商业偏见,并带来额外的成本和数据隐私问题。
鉴于这些问题,研究者们开始探索一种更加简化且高效的替代方案——CAG。
2. CAG 简介
CAG(Cache-Augmented Generation)是一种基于大模型上