?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?
2025/1/14 21:03:34
本文主要是介绍?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
大规模语言模型(LLMs)的发展前景正迅速变化,检索增强生成(RAG)在将外部知识整合到LLM输出中占据主导地位。然而,缓存增强生成(CAG)作为一种有前景的替代方案开始崭露头角,为特定场景提供了简单和高效的解决方案。
在这篇文章中,我们将探讨:
✅ 什么是缓存增强生成技术(CAG)?
✅ CAG与RAG相比有何不同?
✅ 什么时候应该选择CAG而不是RAG?
✅ 用Python实现CAG的示例代码,其中涉及LLMs。
虽然RAG在运行时动态检索外部知识,CAG则将所有相关数据预先加载到模型的扩展上下文中并缓存推理状态。这不仅消除了检索延迟,还简化了架构,使之成为更佳的有限的数据集和静态的知识库的理想选择。
检索增强生成(RAG)一直是最常用的增强大型语言模型的外部数据工具。RAG动态查询一个向量数据库以检索相关信息,使模型能够访问超出其训练数据的最新信息。
不过,RAG 也存在一些挑战,
- 🚦 延迟: 实时检索功能引入了延迟。
- ⚙️ 复杂的架构: 需要向量数据库、嵌入模型以及分块策略。
- 📊 不一致性: 检索的精度会直接影响输出质量。
缓存增强生成(CAG) 通过将所有相关文档预加载到模型的上下文窗口来简化这一过程。CAG 不再动态检索数据,而是 缓存推理过程 ,从而使模型能够直接生成输出。
CAG:一切顺利:
- 很少更新的数据集: 不常更改的数据集(例如,公司文档、知识手册)。
- 有限的数据集大小: 知识可以在LLM的上下文窗口大小中容纳(32k–100k tokens)。
- 低延迟场景: 对速度要求高的场景(例如,实时聊天应用)。
- 动态数据集: 实时来自API的更新或持续增长的数据。
- 可扩展的知识库: 超出单一上下文窗口容量的数据。
- 多模态整合: 需要根据不同上下文灵活检索的场景。
CAG到底是怎么运作的?
1️⃣ 准备数据集: 选择所有相关知识文档。
2️⃣ 预加载上下文: 将数据集加载到 LLM的扩展上下文窗口 中。
3️⃣ 缓存推理状态: 存储推理状态以供重复查询。
4️⃣ 查询模型: 使用缓存的知识直接与模型交互。
5️⃣ 生成输出: 输出最终结果,无需检索延迟。
- ⚡ 超低延迟: 运行时无需检索数据。
- 🛠️ 简单: 无需向量数据库或嵌入模型。
- 📈 高吞吐量: 处理同一数据集的重复任务效率很高。
不过,CAG的的主要限制是当前大型语言模型的上下文窗口的大小,这限制了可以预加载的数据量。
下面是一个简单的 CAG 工作流示例,它使用了像 OpenAI 的 gpt-4
这样的 LLM API。
import openai # 预加载知识库(静态数据集) knowledge_base = """ 埃菲尔铁塔位于法国巴黎。 它于1889年建成,是世界上最著名的地标之一。 """ # 定义查询函数 def query_with_cag(context: str, query: str) -> str: """ 使用缓存增强生成技术查询预加载的知识库。 """ prompt = f"知识库:\n{context}\n\n查询: {query}\n回答:" response = openai.ChatCompletion.create( model="gpt-4", messages=[ {"role": "system", "content": "你是一个关于历史地标的知识丰富的助手。"}, {"role": "user", "content": prompt} ], max_tokens=100, temperature=0.5 ) return response['choices'][0]['message']['content'].strip() # 示例查询: query = "埃菲尔铁塔位于哪里?" response = query_with_cag(knowledge_base, query) print("答案是:", response)
- 预加载的静态数据集:
knowledge_base
这一部分包含了预加载的知识。 - 整合查询: 知识直接进入上下文窗口。
- 直接执行查询: 模型在生成响应时不进行实时检索。
答案是:埃菲尔铁塔位于法国巴黎。
这个例子说明了CAG通过扩展的上下文窗口减少对外部检索的依赖。
✅ 企业文档助手:静态数据集,如员工手册和用户手册。
✅ 医疗知识检索:医学指南或治疗协议。
✅ 法律文档预览:预加载合同和法律文件,以便快速分析。
✅ 在线学习平台:静态课程内容预加载,以支持动态查询。
- 更大的上下文窗口: 随着上下文窗口限制的增加(例如,100 万个 token),CAG 将变得更加可扩展。
- 混合架构: 结合 CAG 和 RAG 来平衡静态和动态数据之间的需求。
- 优化的 token 管理: 更智能地管理上下文窗口以高效处理更大的数据集。
缓存增强生成(CAG) 并不是一个 检索增强生成(RAG) 的通用替代品,但在 较小的数据集、低延迟要求和静态知识源 的场景中,它则表现得更为出色。
- 对于适合上下文窗口的静态、紧凑型数据集,建议使用 CAG。
- 对于动态、演进中的数据集,优先选择 RAG。
- 混合策略 可能主导未来的架构。
如果你正在构建依赖大语言模型的应用程序,了解何时使用CAG而非RAG 可以让你的系统更高效、更经济且更具可扩展性。
🔗 了解更多关于大规模语言模型的技术知识:
- 📚 关注我,了解更多人工智能的见解!
- 🌐 关注最新的AI研究动态和最佳实践分享。
这篇关于?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-15你可能误会了!用 TypeScript 的正确姿势并不是这样子的
- 2025-01-14成本考量下,开源 CMS 内容管理系统为何脱颖而出
- 2025-01-14用Diffusers结合CivitAI模型、LoRAs和文本反转生成更高质量的图像
- 2025-01-14利用ChatGPT自动构建知识图谱的方法讲解
- 2025-01-14Apache Spark及分布式计算概览
- 2025-01-14AWS入门第一篇——云基础与EC2实例详解
- 2025-01-14Apache Iceberg:现代数据栈中的“新一代Hadoop”?
- 2025-01-14深入理解 ECMAScript 2024 新特性:Promise.withResolvers
- 2025-01-13SRM vs SCM:企业管理中的差异战略与实践
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作