Loading... # 从 RAG 到 Agent Memory 的技术演进分析 # 一、概述 ## 1. 背景 随着 AI Agent 技术的发展,如何让 AI 系统具备持久化记忆能力成为关键问题。本文从第一性原理出发,分析从检索增强生成(RAG)到 Agentic RAG,再到 Agent Memory 的技术演进路径。 ## 2. 核心问题 ### A. 问题定义 传统大语言模型(LLM)是无状态的,其知识仅限于训练阶段的参数化知识。如何让 LLM 在推理过程中访问外部知识源,并实现持久化记忆? ### B. 解决思路演进 - RAG:一次性检索外部知识 - Agentic RAG:通过工具动态检索 - Agent Memory:通过工具读写实现持久化记忆 ## 3. 技术本质 从本质上讲,RAG、Agentic RAG 和 Agent Memory 都是在解决同一个问题:如何在外部知识源(如文本文件或数据库)中创建、读取、更新和删除信息,并将其与 LLM 的上下文窗口进行交互。 # 二、RAG:只读的一次性检索 ## 1. 核心概念 检索增强生成(Retrieval-Augmented Generation,RAG)于 2020 年由 Lewis 等人提出,2023 年开始流行。它是首个让无状态 LLM 能够访问过去对话和训练时未见过的外部知识的概念。 ## 2. 工作原理 ### A. 系统组成 - 离线索引阶段:将文档存储到外部知识源(如向量数据库) - 在线查询阶段:根据用户查询检索相关上下文,结合查询一起输入 LLM ### B. 工作流程 ```mermaid graph LR A[文档集合] -->|离线索引| B[向量数据库] C[用户查询] -->|生成embedding| D[相似度搜索] D -->|检索top-k| B B -->|返回相关上下文| E[LLM生成] C --> E E --> F[最终回答] ```  ### C. 伪代码实现 ```python # Stage 1: Offline ingestion def store_documents(documents): for doc in documents: embedding = embed(doc) database.store(doc, embedding) # Stage 2: Online Retrieval + Generation def search(query): query_embedding = embed(query) results = database.similarity_search(query_embedding, top_k=5) return results def answer_question(question): # Always retrieve first, then generate context = search(question) prompt = f"Context: {context}\nQuestion: {question}\nAnswer:" response = llm.generate(prompt) return response ``` ## 3. 关键限制 RAG 是一次性解决方案,存在以下局限: ### A. 盲目检索 无论是否必要,都会从外部知识源检索额外信息 ### B. 单次检索 只检索一次,不考虑检索结果是否相关或正确 ### C. 单一数据源 所有额外信息来自同一个外部知识源 ### D. 只读操作 信息只能离线存储,推理时无法写入、修改或删除 # 三、Agentic RAG:工具调用的只读检索 ## 1. 核心改进 Agentic RAG 将检索步骤定义为 Agent 可以使用的工具,解决了 Naive RAG 的多个限制: ### A. 智能决策 Agent 首先判断是否需要额外信息 ### B. 工具选择 决定使用哪个工具进行检索(如专有数据库 vs 网络搜索) ### C. 结果评估 评估检索到的信息是否与用户查询相关 ## 2. 工作流程 ```mermaid graph LR A[用户查询] --> B{Agent决策} B -->|需要检索| C[选择工具] C --> D[SearchTool] D --> E[向量数据库] D --> F[网络搜索] E --> G{评估结果} F --> G G -->|相关| H[LLM生成回答] G -->|不相关| C B -->|不需要| H H --> I[返回用户] ```  ## 3. 伪代码实现 ```python class SearchTool: def __init__(self, database): self.database = database def search(self, query): query_embedding = embed(query) results = self.database.similarity_search(query_embedding, top_k=5) return results def agent_loop(question): messages = [{"role": "user", "content": question}] while True: response = llm.generate( messages, tools=[SearchTool] ) if response.tool_calls: for tool_call in response.tool_calls: if tool_call.name == "search": results = search_tool.search(tool_call.arguments["query"]) messages.append({ "role": "tool", "content": f"Search results: {results}" }) else: return response.content ``` ## 4. 持续限制 虽然 Agentic RAG 实现了动态检索,但信息仍然是在离线阶段存储的,推理时只能读取而不能写入、修改或删除。这意味着系统无法从过去的交互中学习和改进。 # 四、Agent Memory:工具调用的读写操作 ## 1. 核心突破 Agent Memory 通过引入内存管理概念,克服了 RAG 和 Agentic RAG 的限制,使 Agent 能够从过去的交互中学习,并通过更个性化的方式提升用户体验。 ## 2. 工作原理 ### A. 基础架构 基于 Agentic RAG 的基本原理,使用工具从外部知识源(内存)检索信息。 ### B. 关键扩展 与 Agentic RAG 不同,Agent Memory 还使用工具向外部知识源写入信息。 ### C. 工作流程 ```mermaid graph LR A[用户查询] --> B{Agent决策} B -->|需要检索| C[SearchTool] B -->|重要信息| D[WriteTool] C --> E[内存系统] D --> E E -->|返回记忆| F[LLM生成] F --> G[返回用户] G -->|交互完成| D ```  ## 3. 内存管理策略 ### A. 简单实现 将原始对话历史存储在集合中,Agent 可以搜索过去的对话以查找相关信息。 ### B. 扩展实现 - 对话摘要:提示内存管理系统创建对话摘要供将来参考 - 事件驱动记忆:Agent 在对话中注意到重要信息(如用户偏好 emoji 或生日)并基于此事件创建记忆 ### C. 伪代码实现 ```python class SearchTool: def __init__(self, database): self.database = database def search(self, query): results = self.database.search(query) return results class WriteTool: def __init__(self, database): self.database = database def store(self, information): self.database.store(information) def agent_loop(question): messages = [{"role": "user", "content": question}] while True: response = llm.generate( messages, tools=[SearchTool, WriteTool] ) if response.tool_calls: for tool_call in response.tool_calls: if tool_call.name == "search": results = search_tool.search(tool_call.arguments["query"]) messages.append({ "role": "tool", "content": results }) elif tool_call.name == "store": result = write_tool.store( tool_call.arguments["information"] ) messages.append({ "role": "tool", "content": result }) else: return response.content ``` ## 4. 新挑战 Agent Memory 虽然实现了持久化,但也引入了新挑战: - 内存损坏 - 需要内存管理策略(如遗忘机制) # 五、三种技术对比 ## 1. 功能对比表 | 技术 | 存储信息 | 检索信息 | 编辑和删除信息 | |------|---------|---------|---------------| | RAG | 离线索引阶段 | 一次性检索 | 手动操作 | | Agentic RAG | 离线索引阶段 | 通过工具动态检索 | 手动操作 | | Agent Memory | 通过工具动态存储 | 通过工具动态检索 | 通过工具动态操作 | ## 2. 技术演进路径 ```mermaid graph TD A[RAG] -->|工具化| B[Agentic RAG] B -->|写入能力| C[Agent Memory] A1[离线存储] --> A A2[一次性检索] --> A A3[只读操作] --> A B1[离线存储] --> B B2[动态检索] --> B B3[只读操作] --> B C1[动态存储] --> C C2[动态检索] --> C C3[动态读写] --> C ```  ## 3. 关注点演变 ### A. 第一阶段:如何检索信息 优化 Naive RAG 的检索方面,使用不同的检索技术: - 向量搜索 - 混合搜索 - 关键词搜索 ### B. 第二阶段:从哪里检索 使用正确的工具从不同知识源检索信息: - 是否需要检索信息? - 如果需要,从哪里检索? ### C. 第三阶段:如何管理信息 随着 Agent Memory 的出现,重点转向信息管理: - 信息的创建、修改和删除 - 内存管理和遗忘策略 - 个性化用户体验 # 六、简化模型的局限性 ## 1. 单一内存源 上述简化模型只展示了单一内存源,但在实际应用中,可以使用多个数据集合来存储不同类型的内存: ### A. 程序性内存(Procedural Memory) 例如:与用户互动时使用 emoji ### B. 情景内存(Episodic Memory) 例如:用户在 10 月 30 日讨论旅行计划 ### C. 语义内存(Semantic Memory) 例如:埃菲尔铁塔高 330 米 ### D. 对话历史 原始对话历史的单独数据集合 ## 2. 内存管理策略 简化模型缺少 CRUD 操作之外的高级内存管理策略,如 MemGPT 中实现的: - 内存压缩 - 重要性评估 - 遗忘机制 ## 3. 相关研究 CoALA(Complement and Augment Language Agents)论文详细讨论了多类型内存系统的设计。 # 七、技术实现要点 ## 1. 核心组件 ### A. 向量数据库 - 存储文档 embedding - 支持相似度搜索 - 常见选择:Chroma、FAISS、Pinecone ### B. Embedding 模型 - 将文本转换为向量表示 - 常见选择:OpenAI embeddings、Sentence Transformers ### C. LLM - 生成回答和决策 - 需要支持工具调用(Function Calling) - 常见选择:GPT-4、Claude、开源模型 ## 2. 工具设计原则 ### A. SearchTool - 输入:查询文本 - 输出:相关文档列表 - 实现:向量相似度搜索 ### B. WriteTool - 输入:要存储的信息 - 输出:存储确认 - 实现:数据库写入操作 ### C. 其他工具 - UpdateTool:更新现有记忆 - DeleteTool:删除过时记忆 - ConsolidateTool:合并相似记忆 ## 3. 提示工程 设计合适的系统提示,使 Agent 能够: - 识别何时需要检索信息 - 识别何时需要存储信息 - 评估检索结果的相关性 - 生成有价值的记忆摘要 # 八、应用场景 ## 1. 个人助理 - 记住用户偏好和习惯 - 跟踪重要事件和日期 - 提供个性化建议 ## 2. 客户服务 - 记录客户历史问题 - 提供连续性服务体验 - 自动生成常见问题解答 ## 3. 知识管理 - 构建企业知识库 - 自动总结会议记录 - 跨会话信息关联 ## 4. 教育辅导 - 跟踪学习进度 - 记住学生薄弱环节 - 提供个性化学习路径 # 九、总结 ## 1. 技术本质 从 RAG 到 Agentic RAG 再到 Agent Memory 的演进,本质上是在解决同一个问题:如何在外部知识源中管理信息并与 LLM 交互。 ## 2. 关键差异 - RAG:离线存储、一次性检索、只读 - Agentic RAG:离线存储、动态检索、只读 - Agent Memory:动态存储、动态检索、读写 ## 3. 发展趋势 技术发展的重点从如何检索信息,到从哪里检索,最终发展到如何管理信息。Agent Memory 通过引入持久化和个性化能力,为 AI Agent 系统带来了更接近人类记忆的特性。 ## 4. 未来方向 - 更复杂的内存管理策略 - 多模态记忆(图像、音频等) - 分布式内存系统 - 隐私保护和安全记忆 *** ## 参考资料 1. [The Evolution from RAG to Agentic RAG to Agent Memory – Leonie Monigatti](https://www.leoniemonigatti.com/blog/from-rag-to-agent-memory.html) 最后修改:2026 年 01 月 17 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏