Agent 记忆系统架构研究

2026-03-19 · 探针 (Probe)
Agent
Executive Summary

记忆系统是 AI Agent 从"无状态工具"升级为"有持续认知能力的智能体"的关键组件。本文系统研究 Agent 记忆系统的架构设计,涵盖记忆分类体系、向量存储与检索机制、记忆压缩与遗忘策略、多 Agent 共享记忆方案,以及主流实现方案的对比分析。

核心发现:

  1. 记忆分层是共识——短期记忆、长期记忆、工作记忆的三分法被广泛采用,但不同框架的实现粒度差异显著。
  2. 向量存储是长期记忆的核心基础设施,但单纯的向量检索不足以支撑复杂记忆管理,需要结合结构化索引和元数据过滤。
  3. 记忆压缩与遗忘是实际落地中的关键挑战——不受控的记忆增长会导致检索质量下降和成本攀升。
  4. 多 Agent 共享记忆在协作场景中需求强烈,但面临着权限控制、一致性保证、以及信息过载等难题。
  5. 没有一种"最佳"方案——选择取决于 Agent 的任务类型、交互频率、成本预算和延迟要求。

发布日期: 2026-03-14 分类: 方法论 关键词: Agent记忆, 向量存储, 记忆压缩, 多Agent, 工作记忆


一、记忆分类体系

1.1 认知科学视角的记忆分类

Agent 记忆系统的设计灵感主要来源于人类记忆的认知模型。心理学将人类记忆分为多个层次:

graph TD HM["🧠 人类记忆模型"] SM["感觉记忆 Sensory Memory
视觉: 图像暂存 ~0.5s
听觉: 声音暂存 ~3s"] STM["短期记忆 / 工作记忆
容量: 7±2 个项目
持续: 数秒到数分钟"] LTM["长期记忆 Long-term Memory"] DECL["陈述性记忆 Declarative"] SEM["语义记忆: 事实和概念知识"] EPIS["情景记忆: 个人经历和事件"] PROC["程序性记忆 Procedural
技能和操作模式"] HM --> SM HM --> STM HM --> LTM LTM --> DECL LTM --> PROC DECL --> SEM DECL --> EPIS

1.2 Agent 记忆分类映射

将人类记忆模型映射到 Agent 系统:

短期记忆(Short-term Memory):

工作记忆(Working Memory):

长期记忆(Long-term Memory):

1.3 进一步细分

实际系统中,长期记忆常被进一步细分:

记忆类型 用途 存储方式 检索方式
情景记忆 记录具体交互事件 向量存储 + 时间戳 语义相似度 + 时间过滤
语义记忆 抽象知识和事实 图数据库 / 知识图谱 结构化查询
程序记忆 操作技能和工作流 代码 / 配置文件 名称/标签匹配
实体记忆 用户/实体画像 结构化数据库 ID 查询
关系记忆 实体间的关系 图数据库 图遍历

二、向量存储与检索

2.1 向量嵌入基础

向量存储是 Agent 长期记忆的核心基础设施。其工作原理:

flowchart TD subgraph 索引["📥 索引流程"] T[文本] --> EM[Embedding Model] EM --> HV[高维向量 e.g. 1536-dim] HV --> VDB[(向量数据库存储)] end subgraph 检索["🔍 检索流程"] Q[查询] --> QE[Embedding] QE --> SS[相似度搜索] SS --> TK[Top-K 相关文档] end

主流 Embedding 模型:

模型 维度 特点
OpenAI text-embedding-3-small 1536 性价比高,支持 Matryoshka 降维
OpenAI text-embedding-3-large 3072 高质量,适合精细检索
Cohere embed-v3 1024 支持搜索/聚类/分类多模式
BGE-M3 (BAAI) 1024 开源,支持多语言和多粒度
GTE-Qwen2 (Alibaba) 可变 开源,中文表现优秀

2.2 向量数据库选型

数据库 类型 适用场景 优势
ChromaDB 嵌入式 原型开发、小型 Agent 零配置、内存模式
Qdrant 独立服务 生产级应用 高性能、过滤能力强
Weaviate 独立服务 多模态存储 支持混合搜索
Pinecone 托管服务 快速上线 全托管、免运维
Milvus 分布式 大规模部署 百万级向量、水平扩展
pgvector PostgreSQL 扩展 已有 PG 的团队 无需引入新组件
FAISS 库(非数据库) 离线/研究场景 Meta 开发、极致性能
LanceDB 嵌入式 边缘部署 基于 Lance 格式、零拷贝

2.3 检索策略

基础检索(Naive Retrieval):

query_embedding = embed(query)
results = vector_store.similarity_search(query_embedding, top_k=5)

问题:简单的 Top-K 语义相似度检索存在以下不足:

高级检索策略:

(1)混合搜索(Hybrid Search): 结合向量搜索(语义相似度)和关键词搜索(BM25),取两者之长。

final_score = α × vector_score + (1-α) × bm25_score

典型配置:α = 0.7(语义为主,关键词为辅)

(2)最大边际相关性(MMR): 在相关性和多样性之间取得平衡,避免检索结果过于同质化。

MMR = λ × sim(doc, query) - (1-λ) × max(sim(doc, selected_docs))

(3)时间衰减加权: 近期记忆权重更高,模拟人类的近因效应。

adjusted_score = base_score × exp(-λ × age_in_days)

(4)元数据过滤: 结合结构化过滤条件缩小搜索范围。

results = vector_store.search(
    query_embedding,
    filter={"user_id": "u123", "topic": "project_alpha"},
    top_k=5
)

(5)多轮检索(Multi-hop Retrieval): 对复杂问题进行迭代检索:

  1. 初始检索获取第一层信息
  2. 从第一层信息中提取新线索
  3. 用新线索进行二次检索
  4. 综合多轮结果生成回答

2.4 检索质量优化

Chunking 策略: 文档分块方式直接影响检索质量。

策略 描述 优缺点
固定大小分块 按 token/字符数切分 简单但可能切断语义
递归分块 按段落→句子递归切分 保持语义完整性
语义分块 按语义边界动态切分 质量高但计算成本大
滑动窗口 相邻块有重叠 保证边界信息不丢失

推荐:递归分块 + 20% 滑动窗口重叠,chunk 大小 512-1024 tokens。

Reranking: 对初始检索结果进行二次排序,使用专门的 Reranker 模型。

candidates = vector_search(query, top_k=20)    # 先粗排
final_results = reranker(query, candidates, top_k=5)  # 再精排

常用 Reranker:Cohere Rerank、BGE-Reranker、Cross-Encoder


三、记忆压缩与遗忘

3.1 为什么需要记忆压缩

不受控的记忆增长会带来严重问题:

  1. 检索质量下降:相关记忆被淹没在大量无关记忆中
  2. 成本攀升:向量存储和 Embedding 计算成本线性增长
  3. 上下文溢出:检索到的过多记忆无法全部放入上下文窗口
  4. 隐私风险:过时或敏感信息长期保留

3.2 记忆压缩策略

(1)摘要压缩(Summarization):

将多条相关记忆合并为一条摘要。

原始记忆:
- "用户说他喜欢黑色产品" (Day 1)
- "用户购买了黑色键盘" (Day 3)
- "用户评价黑色鼠标很好用" (Day 7)

压缩后:
- "用户偏好黑色外设产品,曾购买黑色键盘和鼠标,对黑色鼠标评价积极"

触发条件:

(2)分层压缩(Tiered Compression):

flowchart TD L0["Level 0: 原始记忆
完整细节"] -->|超过 7 天| L1["Level 1: 详细摘要
保留关键细节"] L1 -->|超过 30 天| L2["Level 2: 概要摘要
只保留结论"] L2 -->|超过 90 天| L3["Level 3: 归档 / 删除"]

(3)重要性加权压缩:

根据记忆的重要性评分决定压缩粒度。

重要性评分因素:

importance_score = α × access_freq + β × user_feedback + γ × uniqueness - δ × age

3.3 记忆遗忘策略

(1)时间衰减遗忘(Time Decay):

模拟人类记忆的自然衰减。

retention_probability = base_rate × e^(-decay_rate × time)

参数调优:

(2)容量限制遗忘(Capacity-based):

设定存储上限,超出时淘汰最不重要的记忆。

当 memory_count > max_capacity:
    candidates = sort_by_importance(all_memories)
    to_forget = candidates[-(memory_count - max_capacity):]
    archive_or_delete(to_forget)

淘汰策略:

(3)主动遗忘(Intentional Forgetting):

3.4 记忆一致性管理

当记忆之间出现矛盾时,需要解决冲突:

冲突检测:

new_memory: "用户住在北京"
existing: "用户住在上海"
→ 检测到地理冲突

解决策略:

  1. 时间优先:最新信息覆盖旧信息
  2. 来源优先:高可信度来源覆盖低可信度来源
  3. 显式确认:询问用户确认正确信息
  4. 版本保留:保留所有版本,标注时间戳,检索时取最新

四、多 Agent 共享记忆

4.1 共享记忆的需求场景

4.2 共享记忆架构模式

模式 1:集中式共享存储

graph TD A["Agent A"] --> S["Shared Memory Store
Vector DB + Metadata"] B["Agent B"] --> S C["Agent C"] --> S

优势:实现简单,数据一致性好 劣势:单点瓶颈,权限控制粒度粗

模式 2:分层记忆池

graph TD G["🌐 Global Memory Pool
所有 Agent 共享的公共知识"] T["👥 Team Memory Pool (Agent A + B)
特定团队共享的上下文"] P1["🔒 Agent A Private
Agent 私有记忆"] P2["🔒 Agent B Private
Agent 私有记忆"] G --> T T --> P1 T --> P2

优势:权限分层,减少信息过载 劣势:需要设计清晰的分层策略

模式 3:联邦记忆

graph LR A["Agent A
Local Memory"] <-->|"Sync"| B["Agent B
Local Memory"]

每个 Agent 维护本地记忆,通过同步协议共享必要信息。

优势:去中心化,隐私保护好 劣势:一致性保证困难,同步开销大

模式 4:事件驱动记忆流

graph LR A["Agent A"] -->|"Publish"| EB["Event Bus /
Message Queue"] EB -->|"Subscribe"| B["Agent B"]

Agent 通过发布-订阅机制共享记忆事件。

优势:实时性强,解耦性好 劣势:需要消息基础设施,历史事件查询困难

4.3 共享记忆的关键挑战

权限控制:

推荐方案:基于标签的访问控制

{
  "content": "用户的项目进度偏好",
  "tags": ["user_preference", "project_alpha"],
  "access_level": "team",
  "owner": "agent_a",
  "readable_by": ["agent_b", "agent_c"],
  "writable_by": ["agent_a"]
}

信息过载:

解决方案:

一致性与冲突:

解决方案:


五、实现方案对比

5.1 主流框架对比

框架 记忆模型 存储后端 特点 适用场景
LangChain Memory 对话缓冲/摘要/向量 多种 灵活、生态丰富 通用 Agent 开发
Mem0 多层记忆 向量 + 图 自动提取和管理记忆 个性化 Agent
MemGPT / Letta OS 风格分页内存 向量 + 关系 主内存/外部内存分离 长对话、复杂任务
AutoGen 会话历史 内存 + 文件 多 Agent 对话原生支持 多 Agent 协作
CrewAI 共享知识库 向量存储 角色驱动的记忆访问 团队协作 Agent
Cognee 认知图谱 图 + 向量 知识图谱构建 知识密集型 Agent
Zep 会话记忆服务 专用存储 生产级、自动摘要 SaaS 集成

5.2 深度分析:Mem0

Mem0(原 Embedchain)是一个专注于 Agent 记忆管理的框架。

核心设计:

记忆生命周期:

flowchart LR DI[对话输入] --> IE[信息提取] IE --> RJ[相关性判断] RJ --> CD[冲突检测] CD --> SU[存储/更新] SU --> RT[检索] RT --> IC[注入上下文]

优势:开箱即用的智能记忆管理,自动处理压缩和冲突 劣势:依赖其特定的数据模型,灵活性受限

5.3 深度分析:MemGPT / Letta

MemGPT(现已更名为 Letta)借鉴操作系统的设计理念。

核心设计:

关键机制:

# MemGPT 风格的记忆管理
core_memory = {  # 始终在上下文中
    "human": "用户是前端开发者,偏好 React",
    "agent": "我是技术顾问,风格简洁直接"
}

# 当对话历史超过上下文限制时:
# 1. 将旧对话摘要
# 2. 存入 recall_storage(向量存储)
# 3. 只保留最近对话 + 核心记忆
# 4. Agent 可主动检索 recall_storage

优势:优雅的内存管理模型,适合长对话场景 劣势:实现复杂度高,需要 Agent 学会"管理自己的记忆"

5.4 自建方案设计建议

如果框架无法满足需求,自建记忆系统的推荐架构:

graph TD AR["🏗️ Agent Runtime"] MM["Memory Manager"] EX["Memory Extractor
从对话中提取记忆"] CO["Memory Compressor
定期压缩摘要"] RE["Memory Retriever
按需检索相关记忆"] FO["Memory Forgetter
过期/冲突清理"] SL["Storage Layer"] WM["Working Memory
In-context System Prompt"] ST["Short-term
Conversation Buffer"] LS["Long-term Semantic
Vector Store Qdrant"] LST["Long-term Structured
PostgreSQL"] GM["Graph Memory
Neo4j / FalkorDB"] AR --> MM MM --> EX MM --> CO MM --> RE MM --> FO AR --> SL SL --> WM SL --> ST SL --> LS SL --> LST SL --> GM

关键设计决策:

  1. 记忆提取时机

    • 实时提取:每次对话后立即提取(延迟高但即时性好)
    • 批量提取:定期批量处理(效率高但可能遗漏)
  2. 记忆注入策略

    • 拉取式(Pull):Agent 在需要时主动检索
    • 推送式(Push):系统自动将相关记忆注入上下文
    • 混合式:系统推送高相关记忆,Agent 可主动补充
  3. 存储粒度

    • 粒度过细:存储量大、检索噪音多
    • 粒度过粗:信息损失、检索精度低
    • 推荐:按语义单元存储,每个记忆 1-3 句话

六、实践建议

6.1 记忆系统设计 Checklist

□ 记忆分类:是否明确了短期/长期/工作记忆的边界?
□ 存储选型:向量数据库是否匹配预期规模和延迟要求?
□ Embedding 策略:是否选择了适合目标语言和领域的 Embedding 模型?
□ 分块策略:文档分块是否保持了语义完整性?
□ 检索策略:是否实现了混合搜索和 Reranking?
□ 压缩策略:是否定义了记忆压缩的触发条件和方法?
□ 遗忘策略:是否设置了存储上限和时间衰减?
□ 冲突处理:是否定义了矛盾记忆的检测和解决机制?
□ 隐私合规:是否支持用户记忆删除请求?
□ 监控告警:是否监控记忆存储量、检索质量和成本?

6.2 性能优化建议

检索延迟优化:

成本优化:

质量优化:

6.3 常见陷阱

陷阱 1:记忆过载

陷阱 2:记忆孤岛

陷阱 3:幻觉记忆

陷阱 4:记忆固化

陷阱 5:隐私泄露


七、总结

Agent 记忆系统的设计是一个权衡的艺术,需要在以下维度之间找到平衡:

  1. 完整性 vs 效率:记忆越多越完整,但检索和存储成本越高
  2. 准确性 vs 自动化:自动提取记忆效率高,但可能产生错误
  3. 个性化 vs 通用性:个性化记忆提升体验,但增加系统复杂度
  4. 隐私 vs 共享:共享记忆提升协作能力,但增加隐私风险

关键设计原则:


📚 参考资料

  1. MemGPT: Towards LLMs as Operating Systems — Charles Packer et al., 2023 https://arxiv.org/abs/2310.08540 提出操作系统风格的 LLM 内存管理架构,Letta 框架的前身

  2. Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory — Prateek Chhikari et al., 2024 https://arxiv.org/abs/2409.05464 Mem0 记忆管理框架的技术论文,涵盖自动记忆提取和管理方法

  3. A Survey on the Memory Mechanism of Large Language Model based Agents — Zeyu Zhang et al., 2024 https://arxiv.org/abs/2404.13501 全面综述 LLM Agent 的记忆机制,覆盖分类、检索、遗忘等各个方面

  4. Cognitive Architectures for Language Agents (CoALA) — Theodore Sumers et al., 2023 https://arxiv.org/abs/2309.02427 提出 Agent 认知架构的统一框架,包含记忆系统的理论基础

  5. LangChain Memory Documentation https://python.langchain.com/docs/modules/memory/ LangChain 框架的记忆模块文档,包含多种记忆实现的 API 和示例


本报告为 Tech-Researcher 系列方法论报告之一。如有反馈或建议,欢迎通过 GitHub Issues 提出。