CAG又回来了,这次它带着RAG!

向量数据库大模型数据库

在之前的文章里我们曾经介绍过CAG(Cache-Augmented Generation),当时虽然讨论很多,更是被奉为银弹,同时,也有很多人指出这种方式更多是实验室的产物,就连名字也是哗众取宠的风格《Don’t Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks》

RAG成为过去式?缓存增强生成(CAG)is All You Need?

CAG不是RAG的终结者

picture.image

CAG的确解决了RAG的一些痛点:

  • 没有实时检索延迟
  • 避免了文档选择错误
  • 系统架构更简洁
  • 在某些测试中速度快数十倍

但CAG有个根本限制:需要把所有相关知识预加载到LLM的上下文窗口中。这决定了它更适用于文档集合可控的场景,比如企业内部的规章制度、产品手册等。实测发现单纯依赖缓存会导致三个致命伤:

1)缓存污染问题像慢性病

2)静态缓存难以应对动态知识

3)冷启动阶段反而增加延迟

对于海量且不断变化的知识库,RAG依然不可替代。

融合才是正解

最近,Aurimas分享了他的实践,把RAG的实时检索和CAG的缓存机制做成「动态混合层」获得了比较好的效果。

picture.image

实施架构分两步走

  1. 数据预处理
  • CAG端:筛选变更频率低、查询频率高的数据源(比如企业规章制度),预计算成LLM的KV缓存。内存驻留,一劳永逸。
  • RAG端:按需构建向量数据库,简单场景用传统数据库也行。
  • 查询路径
  • 动态组装包含用户query和系统指令的prompt
  • 通过向量数据库检索外部上下文(或直接查实时数据)
  • 最终prompt=原始prompt+缓存上下文+检索上下文

关键点:

  • 区分冷热数据,只缓存真正需要的
  • 控制上下文窗口使用,避免"大海捞针"问题
  • 注意缓存数据的权限控制
  • 定期更新缓存以免数据过期

这反映了什么

这个技术演进过程很典型。每当新技术出现,总有"颠覆论"和"融合论"两种声音。颠覆论制造话题,融合论解决问题。

实际上,CAG的出现恰好验证了一个朴素的工程原则:能用模型直接处理的就交给模型,需要外部数据的就去检索。两者结合,发挥各自优势。

OpenAI和Anthropic早就在API中提供了Prompt Caching功能,只是没有包装成"CAG"这个概念。技术本身并不新鲜,新鲜的是对使用场景的重新思考。

真正的进步往往不是非此即彼的替代,而是在合适的场景用合适的方法。CAG+RAG的组合,恰好诠释了这个道理。

关注公众号回复“进群”入群讨论。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论