C/C++教程

?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?

本文主要是介绍?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
📚 执行摘要

大规模语言模型(LLMs)的发展前景正迅速变化,检索增强生成(RAG)在将外部知识整合到LLM输出中占据主导地位。然而,缓存增强生成(CAG)作为一种有前景的替代方案开始崭露头角,为特定场景提供了简单和高效的解决方案。

在这篇文章中,我们将探讨:
什么是缓存增强生成技术(CAG)?
CAG与RAG相比有何不同?
什么时候应该选择CAG而不是RAG?
用Python实现CAG的示例代码,其中涉及LLMs。

虽然RAG在运行时动态检索外部知识,CAG则将所有相关数据预先加载到模型的扩展上下文中并缓存推理状态。这不仅消除了检索延迟,还简化了架构,使之成为更佳的有限的数据集和静态的知识库的理想选择。

关于缓存增强生成(CAG)的介绍

检索增强生成(RAG)一直是最常用的增强大型语言模型的外部数据工具。RAG动态查询一个向量数据库以检索相关信息,使模型能够访问超出其训练数据的最新信息

不过,RAG 也存在一些挑战,

  • 🚦 延迟: 实时检索功能引入了延迟。
  • ⚙️ 复杂的架构: 需要向量数据库、嵌入模型以及分块策略。
  • 📊 不一致性: 检索的精度会直接影响输出质量。

缓存增强生成(CAG) 通过将所有相关文档预加载到模型的上下文窗口来简化这一过程。CAG 不再动态检索数据,而是 缓存推理过程 ,从而使模型能够直接生成输出。

🔑 CAG 和 RAG 的关键区别

⚙️ 2. 什么时候用缓存增强生成技术(CAG)?
✅ 当CAG理想的情况下:

CAG:一切顺利:

  • 很少更新的数据集: 不常更改的数据集(例如,公司文档、知识手册)。
  • 有限的数据集大小: 知识可以在LLM的上下文窗口大小中容纳(32k–100k tokens)。
  • 低延迟场景: 对速度要求高的场景(例如,实时聊天应用)。
❌ 当 RAG 更适用时 ❌
  • 动态数据集: 实时来自API的更新或持续增长的数据。
  • 可扩展的知识库: 超出单一上下文窗口容量的数据。
  • 多模态整合: 需要根据不同上下文灵活检索的场景。
🧠 3. 技术细节:CAG的工作原理(CAG是什么?)

CAG到底是怎么运作的?

CAG 工作流程简介:

1️⃣ 准备数据集: 选择所有相关知识文档。
2️⃣ 预加载上下文: 将数据集加载到 LLM的扩展上下文窗口 中。
3️⃣ 缓存推理状态: 存储推理状态以供重复查询。
4️⃣ 查询模型: 使用缓存的知识直接与模型交互。
5️⃣ 生成输出: 输出最终结果,无需检索延迟。

📊 CAG的优点:
  • 超低延迟: 运行时无需检索数据。
  • 🛠️ 简单: 无需向量数据库或嵌入模型。
  • 📈 高吞吐量: 处理同一数据集的重复任务效率很高。

不过,CAG的的主要限制是当前大型语言模型的上下文窗口的大小,这限制了可以预加载的数据量。

💻 4. Python 实现的增强缓存生成(CAG)

下面是一个简单的 CAG 工作流示例,它使用了像 OpenAI 的 gpt-4 这样的 LLM API。

🛠️ Python 代码例子
    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)
✅ 代码说明:
  1. 预加载的静态数据集: knowledge_base这一部分包含了预加载的知识。
  2. 整合查询: 知识直接进入上下文窗口。
  3. 直接执行查询: 模型在生成响应时不进行实时检索。
⚡ 输出示例: (例如)
答案是:埃菲尔铁塔位于法国巴黎。

这个例子说明了CAG通过扩展的上下文窗口减少对外部检索的依赖

🌐 5. CAG 的实际用途

企业文档助手:静态数据集,如员工手册和用户手册。
医疗知识检索:医学指南或治疗协议。
法律文档预览:预加载合同和法律文件,以便快速分析。
在线学习平台:静态课程内容预加载,以支持动态查询。

🔮 6. 基于缓存增强的生成的未来
🚀 前方展望:
  • 更大的上下文窗口: 随着上下文窗口限制的增加(例如,100 万个 token),CAG 将变得更加可扩展。
  • 混合架构: 结合 CAG 和 RAG 来平衡静态和动态数据之间的需求。
  • 优化的 token 管理: 更智能地管理上下文窗口以高效处理更大的数据集。
📚 7. 总结

缓存增强生成(CAG) 并不是一个 检索增强生成(RAG) 的通用替代品,但在 较小的数据集、低延迟要求和静态知识源 的场景中,它则表现得更为出色。

✅ 主要要点:
  • 对于适合上下文窗口的静态、紧凑型数据集,建议使用 CAG
  • 对于动态、演进中的数据集,优先选择 RAG
  • 混合策略 可能主导未来的架构。

如果你正在构建依赖大语言模型的应用程序,了解何时使用CAG而非RAG 可以让你的系统更高效、更经济且更具可扩展性。

🔗 了解更多关于大规模语言模型的技术知识:

  • 📚 关注我,了解更多人工智能的见解!
  • 🌐 关注最新的AI研究动态和最佳实践分享。
AI #CAG #RAG #LLMs #ML #技术革新 #生成AI #Python #AI研究 🚀
这篇关于?? 缓存增强生成(CAG):一个崛起的RAG竞争对手?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!