缓存增强生成(CAG)

什么是缓存增强生成(CAG)?

缓存增强生成(CAG)是一种通过将知识以预计算键值(KV)缓存的形式预加载,从而提升大语言模型(LLM)性能与效率的新方法。

与在推理时动态检索外部知识的RAG不同,CAG通过在推理前将所有相关知识直接嵌入到模型扩展的上下文窗口中,彻底省略了检索环节。这种预加载策略让LLM能够利用预计算信息生成响应,极大降低了延迟并简化了系统架构。

通过将处理后的知识存储在键值缓存中,CAG确保模型能够即时获取回答查询所需的上下文。这种方法在知识库静态、规模较小或对低延迟有较高需求的场景下尤为有利。

CAG如何工作?

CAG主要包括三个阶段:

1. 外部知识预加载

  • 所有相关文档或数据集会在推理前预加载到模型的上下文窗口中。

  • 预加载内容被处理为键值(KV)缓存,捕获模型对知识的内部表示。例如:

    def preprocess_knowledge(model, tokenizer, prompt):
        input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
        past_key_values = DynamicCache()
        outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
        return outputs.past_key_values
    

此步骤确保模型能即时访问预处理的知识,无需实时检索。

2. 利用预计算缓存进行推理

  • 查询发起时,预计算的KV缓存会与查询输入结合。

  • 模型仅基于缓存知识和查询内容生成响应,无需额外检索。例如:

    def generate_response(model, query, kv_cache):
        input_ids = tokenizer.encode(query, return_tensors="pt").to(model.device)
        output_ids = model(input_ids=input_ids, past_key_values=kv_cache, use_cache=True)
        return tokenizer.decode(output_ids)
    

3. 缓存管理

  • 随着新查询的处理,缓存会增长。重置机制会将缓存截断回原始长度,以保证性能,并确保后续查询在预期上下文内进行。缓存重置示例:

    def clean_up(kv_cache, original_length):
        for i in range(len(kv_cache.key_cache)):
            kv_cache.key_cache[i] = kv_cache.key_cache[i][:, :, :original_length, :]
            kv_cache.value_cache[i] = kv_cache.value_cache[i][:, :, :original_length, :]
    
FlowHunt Logo

Ready to grow your business?

Start your free trial today and see results within days.

CAG的主要优势

  1. 低延迟
    无需实时检索,CAG响应速度快于RAG,非常适合对时效性要求高的应用。

  2. 高准确性
    通过预加载所有相关文档,CAG确保模型处理的是完整数据集,减少上下文缺失或检索错误的风险。

  3. 架构简化
    与需复杂检索流程的RAG相比,CAG结构更简单,降低了系统复杂性和维护成本。

  4. 规模化高效
    知识一旦预加载并缓存,后续查询几乎无需额外计算,适合在同一知识领域内频繁查询。

CAG的局限性

  1. 上下文窗口大小
    CAG依赖模型上下文窗口来预加载知识。当前LLM上下文窗口最大支持128,000个token,限制了可预加载的知识量。

  2. 知识库规模
    CAG更适用于静态且可控的知识库。对于大型或动态数据集,模型可能无法容纳所有相关信息。

  3. 静态知识
    CAG假设知识库在推理期间不变,不适用于需实时更新或动态集成知识的场景。

  4. 成本问题
    大型上下文窗口在预加载时会增加计算成本,对于需要频繁更新知识库的场景经济性较差。

CAG的应用场景

实际应用

CAG通常应用于知识库静态、规模可控且对低延迟有高需求的场景:

  • 客户支持聊天机器人
    示例:为软件产品预加载常见故障排查步骤,向用户提供即时响应。
    优势:消除检索错误,加快响应速度。

  • 文档分析
    示例:金融机构分析季度报告,或律所查询法规文档。
    优势:通过将所有相关文档预加载到模型,确保响应一致且准确。

  • 医疗助手
    示例:预加载医疗指南以辅助患者咨询。
    优势:确保多轮对话的连贯性和准确引用。

  • 教育与培训
    示例:解答企业培训中的常见问题。
    优势:简化部署,保证回答一致性。

与检索增强生成(RAG)对比

特性CAGRAG
知识处理预加载知识到上下文窗口运行时动态检索知识
系统复杂度简单,无需检索流程需额外检索组件
延迟性低,无需检索步骤高,需实时检索
可扩展性受限于上下文窗口大小适合大规模、动态数据集
错误风险无检索错误易受检索及排序错误影响
最佳应用场景静态、低延迟任务动态、大型或频繁更新任务

应用案例示例

CAG实践案例

  1. 人力资源系统
    企业将员工政策预加载到模型中,员工可查询具体规定并获得即时响应。

  2. 法律助手
    法律助手将相关案例法预加载到模型上下文,无需检索系统即可快速回答法律问题。

  3. 客户服务
    SaaS产品的聊天机器人预加载FAQ和故障指南,确保客户交互顺畅且响应迅速。

RAG用于动态场景

  1. 新闻聚合
    新闻应用用RAG动态检索并总结最新文章,为用户提供最相关的信息。

  2. 电商搜索
    RAG检索大型、频繁更新的产品目录中的商品详情及库存。

  3. 科研平台
    科研平台采用RAG从大型外部数据库检索相关论文和研究资料。

实现示例:Python中知识预加载

以下Python代码片段演示了如何为CAG向模型预加载知识:

def preprocess_knowledge(model, tokenizer, prompt):
    input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
    past_key_values = DynamicCache()
    outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
    return outputs.past_key_values

该预加载机制确保模型在处理查询时无需外部检索,实现高效、低延迟的推理能力。

何时使用CAG

  1. 静态知识库
    适用于知识库不常变动的场景。

  2. 低延迟应用
    适合客户支持、教育或医疗等需要快速响应的系统。

  3. 高性价比场景
    当预加载知识可在多次查询中复用时,可减少计算开销。

CAG是满足速度、简洁性与一致性需求任务的高效替代方案,但受限于知识库的规模和静态特性。

缓存增强生成(CAG)相关研究

1. 移动边缘大语言模型服务的自适应上下文缓存

作者:Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong

本论文针对移动边缘大语言模型(LLM)部署中的计算资源有限与检索延迟高等问题,提出了一种自适应上下文缓存(ACC)框架。该框架利用深度强化学习(DRL)优化缓存替换策略,同时考虑用户上下文、文档相似性及缓存失效开销。实验结果显示,ACC在11轮训练后缓存命中率超过80%,检索延迟比传统方法降低40%,本地缓存开销减少高达55%。该研究展示了ACC提升边缘LLM系统效率的潜力。
阅读论文

2. 通过重用已存KV缓存实现更经济的上下文增强LLM生成

作者:Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang

本研究探索了在LLM应用中重用键值(KV)缓存以减少预填延迟的可行性,尤其针对重复输入文本场景。论文还考察了在云服务中存储与处理KV缓存时的经济性。作者提出了经过验证的分析模型,评估了在不同负载参数下,KV缓存存储及重用的云端计算、存储和网络成本。结果表明,对于长上下文负载,KV缓存重用可同时节省延迟和云成本,促进了更经济的上下文增强LLM系统发展。
阅读论文

3. MPIC:高效多模态LLM服务的无位置依赖多模态上下文缓存系统

作者:Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen

本文提出了MPIC(一种无位置依赖的多模态上下文缓存系统),旨在解决多模态大语言模型(MLLM)推理中的效率问题。传统系统对上下文略有不同时需重新计算整个KV缓存,导致效率低下。MPIC支持本地或远程存储KV缓存,并在推理时并行计算和加载缓存。结合重用与重计算机制,MPIC在保持精度的同时,将响应时间缩短至现有方法的54%。该研究展现了多模态LLM服务效率提升的可能性。
阅读论文

Frequently asked questions

开始构建高效AI工作流

体验CAG及FlowHunt其他AI工具的强大功能。预约演示,了解低延迟、缓存增强解决方案如何改变您的业务。

Learn more

检索增强生成(RAG)
检索增强生成(RAG)

检索增强生成(RAG)

检索增强生成(RAG)是一种先进的人工智能框架,将传统的信息检索系统与生成式大语言模型(LLM)相结合,通过整合外部知识,使AI生成的文本更加准确、及时且具有上下文相关性。...

1 min read
RAG AI +4
问答系统
问答系统

问答系统

基于检索增强生成(RAG)的问答系统结合了信息检索与自然语言生成,通过从外部来源补充相关、最新的数据,提升大语言模型(LLM)的回答能力。该混合方法提高了准确性、相关性和在动态领域的适应性。...

1 min read
AI Question Answering +3
RAG AI:检索增强生成与智能代理工作流终极指南
RAG AI:检索增强生成与智能代理工作流终极指南

RAG AI:检索增强生成与智能代理工作流终极指南

了解检索增强生成(RAG)如何变革企业级AI,从核心原理到 FlowHunt 等先进 Agentic 架构。探索 RAG 如何用真实数据为大模型赋能,减少幻觉并驱动下一代智能工作流。...

1 min read
RAG Agentic RAG +2