
检索增强生成(RAG)与缓存增强生成(CAG)的对比
探索人工智能中检索增强生成(RAG)与缓存增强生成(CAG)的关键区别。了解RAG如何动态检索实时信息以实现灵活、准确的响应,而CAG则利用预缓存数据实现快速一致的输出。找出哪种方法更适合您的项目需求,并探讨实际应用场景、优势与局限性。...
缓存增强生成(CAG)通过预加载静态知识提升大语言模型效率,降低延迟并简化架构,适用于静态、低延迟任务。
缓存增强生成(CAG)是一种通过将知识以预计算键值(KV)缓存的形式预加载,从而提升大语言模型(LLM)性能与效率的新方法。
与在推理时动态检索外部知识的RAG不同,CAG通过在推理前将所有相关知识直接嵌入到模型扩展的上下文窗口中,彻底省略了检索环节。这种预加载策略让LLM能够利用预计算信息生成响应,极大降低了延迟并简化了系统架构。
通过将处理后的知识存储在键值缓存中,CAG确保模型能够即时获取回答查询所需的上下文。这种方法在知识库静态、规模较小或对低延迟有较高需求的场景下尤为有利。
CAG主要包括三个阶段:
所有相关文档或数据集会在推理前预加载到模型的上下文窗口中。
预加载内容被处理为键值(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
此步骤确保模型能即时访问预处理的知识,无需实时检索。
查询发起时,预计算的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)
随着新查询的处理,缓存会增长。重置机制会将缓存截断回原始长度,以保证性能,并确保后续查询在预期上下文内进行。缓存重置示例:
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, :]
低延迟
无需实时检索,CAG响应速度快于RAG,非常适合对时效性要求高的应用。
高准确性
通过预加载所有相关文档,CAG确保模型处理的是完整数据集,减少上下文缺失或检索错误的风险。
架构简化
与需复杂检索流程的RAG相比,CAG结构更简单,降低了系统复杂性和维护成本。
规模化高效
知识一旦预加载并缓存,后续查询几乎无需额外计算,适合在同一知识领域内频繁查询。
上下文窗口大小
CAG依赖模型上下文窗口来预加载知识。当前LLM上下文窗口最大支持128,000个token,限制了可预加载的知识量。
知识库规模
CAG更适用于静态且可控的知识库。对于大型或动态数据集,模型可能无法容纳所有相关信息。
静态知识
CAG假设知识库在推理期间不变,不适用于需实时更新或动态集成知识的场景。
成本问题
大型上下文窗口在预加载时会增加计算成本,对于需要频繁更新知识库的场景经济性较差。
CAG通常应用于知识库静态、规模可控且对低延迟有高需求的场景:
客户支持聊天机器人
示例:为软件产品预加载常见故障排查步骤,向用户提供即时响应。
优势:消除检索错误,加快响应速度。
文档分析
示例:金融机构分析季度报告,或律所查询法规文档。
优势:通过将所有相关文档预加载到模型,确保响应一致且准确。
医疗助手
示例:预加载医疗指南以辅助患者咨询。
优势:确保多轮对话的连贯性和准确引用。
教育与培训
示例:解答企业培训中的常见问题。
优势:简化部署,保证回答一致性。
特性 | CAG | RAG |
---|---|---|
知识处理 | 预加载知识到上下文窗口 | 运行时动态检索知识 |
系统复杂度 | 简单,无需检索流程 | 需额外检索组件 |
延迟性 | 低,无需检索步骤 | 高,需实时检索 |
可扩展性 | 受限于上下文窗口大小 | 适合大规模、动态数据集 |
错误风险 | 无检索错误 | 易受检索及排序错误影响 |
最佳应用场景 | 静态、低延迟任务 | 动态、大型或频繁更新任务 |
人力资源系统
企业将员工政策预加载到模型中,员工可查询具体规定并获得即时响应。
法律助手
法律助手将相关案例法预加载到模型上下文,无需检索系统即可快速回答法律问题。
客户服务
SaaS产品的聊天机器人预加载FAQ和故障指南,确保客户交互顺畅且响应迅速。
新闻聚合
新闻应用用RAG动态检索并总结最新文章,为用户提供最相关的信息。
电商搜索
RAG检索大型、频繁更新的产品目录中的商品详情及库存。
科研平台
科研平台采用RAG从大型外部数据库检索相关论文和研究资料。
以下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是满足速度、简洁性与一致性需求任务的高效替代方案,但受限于知识库的规模和静态特性。
作者:Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong
本论文针对移动边缘大语言模型(LLM)部署中的计算资源有限与检索延迟高等问题,提出了一种自适应上下文缓存(ACC)框架。该框架利用深度强化学习(DRL)优化缓存替换策略,同时考虑用户上下文、文档相似性及缓存失效开销。实验结果显示,ACC在11轮训练后缓存命中率超过80%,检索延迟比传统方法降低40%,本地缓存开销减少高达55%。该研究展示了ACC提升边缘LLM系统效率的潜力。
阅读论文
作者:Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang
本研究探索了在LLM应用中重用键值(KV)缓存以减少预填延迟的可行性,尤其针对重复输入文本场景。论文还考察了在云服务中存储与处理KV缓存时的经济性。作者提出了经过验证的分析模型,评估了在不同负载参数下,KV缓存存储及重用的云端计算、存储和网络成本。结果表明,对于长上下文负载,KV缓存重用可同时节省延迟和云成本,促进了更经济的上下文增强LLM系统发展。
阅读论文
作者:Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen
本文提出了MPIC(一种无位置依赖的多模态上下文缓存系统),旨在解决多模态大语言模型(MLLM)推理中的效率问题。传统系统对上下文略有不同时需重新计算整个KV缓存,导致效率低下。MPIC支持本地或远程存储KV缓存,并在推理时并行计算和加载缓存。结合重用与重计算机制,MPIC在保持精度的同时,将响应时间缩短至现有方法的54%。该研究展现了多模态LLM服务效率提升的可能性。
阅读论文
缓存增强生成(CAG)是一种通过将静态知识预加载到预计算的键值(KV)缓存中,提升大语言模型(LLM)性能的方法。与运行时检索外部知识的RAG不同,CAG会提前嵌入所有相关信息,降低延迟并简化AI系统架构。
CAG在推理前将所有必要知识预加载到模型的上下文窗口,消除了实时检索需求,确保低延迟。而RAG则是在运行时动态检索相关信息,虽适合动态或频繁更新的知识库,但可能引入检索错误和更高延迟。
CAG的主要优势包括低延迟、因全面预加载带来的高准确性、简化的系统架构,以及在静态知识领域内重复查询时的高效性。
CAG受限于模型上下文窗口的最大长度(目前可达128,000个token),适合静态且可控的知识库;对于动态数据集或需要频繁更新的场景效果较差。较大的上下文窗口在预加载时也会增加计算成本。
CAG非常适合静态、低延迟的应用场景,如客户支持聊天机器人、文档分析、医疗助手、教育FAQ、HR政策查询和法律助手等——只要知识库变动不频繁且需要即时响应。
探索人工智能中检索增强生成(RAG)与缓存增强生成(CAG)的关键区别。了解RAG如何动态检索实时信息以实现灵活、准确的响应,而CAG则利用预缓存数据实现快速一致的输出。找出哪种方法更适合您的项目需求,并探讨实际应用场景、优势与局限性。...
检索增强生成(RAG)是一种先进的人工智能框架,将传统的信息检索系统与生成式大语言模型(LLM)相结合,通过整合外部知识,使AI生成的文本更加准确、及时且具有上下文相关性。...
基于检索增强生成(RAG)的问答系统结合了信息检索与自然语言生成,通过从外部来源补充相关、最新的数据,提升大语言模型(LLM)的回答能力。该混合方法提高了准确性、相关性和在动态领域的适应性。...