Agent 记忆

241 阅读7分钟

一、记忆的分类

1. 按存储时间

  • 感知记忆(Sensory Memory)

    • 从环境中捕获的信息
    • 在感知记忆区信息只能保留很短的时间
    • 属于信息输入区
  • 短期记忆(Short-Term Memory)

    • 存储思考过程中需要处理的信息
    • 对应工作记忆区、信息加工区
  • 长期记忆(Long-Term Memory)

    • 包括知识、技能
    • 长期信息存储区

👉 信息的输入与加工会变成长期记忆进行存储,这个过程贯穿整个记忆区。


2. 按内容性质分类

  • 声明式记忆(Declarative Memory / 显式记忆)

    • 可用语言描述,例如所掌握的知识内容
    • 需要有意识主动回忆
  • 非声明式记忆(Non-Declarative Memory / 隐式记忆)

    • 无法被语言描述,例如骑车技能
    • 无需意识参与,也被称为“肌肉记忆”

3. 按存储内容分类

  • 经历 - 情景记忆(Episodic Memory)

    • 代表过去发生的事件
  • 知识 - 语义记忆(Semantic Memory)

    • 存储掌握的知识
  • 技能 - 程序记忆(Procedural Memory)

    • 存储掌握的技能

👉 综合来看,记忆可定义为:存储在哪个记忆区 + 以何种形式存在 + 属于哪类记忆

例如:

  • 骑车技能 = 存储在 长期记忆区 + 隐式形式 + 程序记忆
  • 写文章时的知识运用 = 存储在 短期记忆区 + 显式形式 + 语义记忆

二、记忆操作

记忆是对信息进行 编码、存储、检索 的过程。

1. 编码(Encode)

  • 获取和处理信息,将其转化为可存储的形式

2. 存储(Storage)

  • 在短期记忆或长期记忆中保留编码信息

3. 提取(Retrieval)

  • 即回忆
  • 在需要时访问并使存储的信息重新进入意识

4. 其他操作

  1. 巩固(Consolidation):将短期记忆转化为长期记忆,防止遗忘
  2. 再巩固(Re-Consolidation):已存储的记忆重新激活并需要再次稳定
  3. 反思(Reflection):主动回顾、评估和检查记忆内容,调整学习策略或优化决策
  4. 遗忘(Forgetting):自然过程

三、智能体记忆

1. 存储区

  • 上下文(Context)

    • 相当于短期记忆/工作记忆区
    • 窗口有限且容易被遗忘
  • LLM(大模型)

    • 覆盖智能体的大部分支持
    • 属于长期记忆区,包含不同类型的记忆
  • 外挂记忆存储

    • 用于扩展长期记忆区
    • 由于 LLM 内知识不可更新,因此外挂存储承担补充作用
    • 对比人脑:
      • 感知记忆、短期记忆 → 上下文
      • 长期记忆 → LLM + 外挂存储

2. 存储形式

  • 参数形式

    • KV-Cache
    • LLM 属于长期记忆区参数形式的记忆
  • 非参数形式

    • 外挂存储属于长期记忆区
    • 以非参数形式存在

3. 记忆分类

  • 提示词过程(Prompt Engineering) → 优化短期记忆的显式记忆
  • 知识库 RAG → 优化长期记忆的显式记忆
  • 模型微调(Fine-Tuning) → 优化长期记忆的隐式记忆

记忆存储可分为 参数非参数 两种形式:

  • 非参数形式 通常以 Plaintext、Graph、Structured Table 结构存储
  • 记忆提取通过 检索 实现,包括:全文检索、向量检索、图检索、混合检索

四、实现框架

1. MemoryBank

特点:

  1. 对对话进行总结和定期回顾
  2. 存储摘要以便搜索记忆
  3. 通过总结形成用户画像,提供个性化回答
  4. 模拟艾宾浩斯遗忘曲线,实现动态记忆机制

底层存储分为三部分:

  1. 深度内存存储(In-Depth Memory Storage)

    • 记录多轮对话的详细内容
    • 包含时间戳,便于回顾和总结
  2. 分层事件总结(Hierarchical Event Summary)

    • 对话内容提炼,生成高层次摘要
    • 形成层次化记忆结构
  3. 动态人格理解(Dynamic Personality Understanding)

    • 通过长期互动评估用户个性
    • 生成每日个性洞察,逐步形成全局个性理解

检索方式:

  • 每一轮对话与摘要组成记忆片段
  • Embedding 存储到向量数据库
  • 当前上下文作为检索条件
  • 检索到的相似记忆 + 个性提示填充上下文

2. LETTA

  • 借鉴 虚拟内存分页思想
  • 将内容分为 Main ContentExternal Content
  • 当 Main Context 空间不足时,与 External Context 交换数据

Main Context 分为三部分:

  1. System Instructions:存储静态系统提示词
  2. Working Context:存储关键事实、偏好、用户信息、Agent 个性
  3. FIFO:滚动的历史对话记录 + Summary

操作机制:

  • 递归摘要总结(Recursive Summary)
    • 从队列中移除信息时,生成新的摘要
    • 节省 Context 空间占用

记忆的个性与提取:

  • 通过 Function Executor 完成
  • 系统指令中包含:
    1. 记忆层次结构及描述
    2. 系统可调用函数(自然语言描述)

3. ZEP

  • 自研图引擎 Graphiti
  • 提供事件感知的知识图谱

三层结构:

  1. 情景子图:存储原始输入数据
  2. 语义子图:提取语义实体和关系
  3. 社区子图:高层次语义聚类,参考 GraphRAG

记忆更新:

  1. 记忆去重
  2. 时间信息提取与边失效机制
  3. 标签传播算法构建社区

记忆提取:

  • 输入 → 检索 → 排序 → 构造上下文
  • 支持三种搜索:
    1. 语义搜索
    2. BM25 全文搜索
    3. 图的广度优先搜索

4. A-MEM

  • 借鉴 Zettelkasten 卡片笔记法
  • 每个卡片为一个知识点(Note),包含索引、上下文描述、链接

流程:

  1. 节点建设:从交互中提取记忆 → Notes
  2. 链接生成与记忆进化:与历史记忆建立连接
  3. 记忆检索:基于关键词与语义网络检索

5. Mem0 & Mem0-G

Mem0 实现:

  1. 记忆生成:上下文感知,独立后台生成 Summary
  2. 记忆更新:避免冗余,结合相似记忆和 Facts 判断更新

Mem0-G 实现:

  1. 记忆生成:两阶段流水线(实体提取 → 关系生成)
  2. 记忆更新:Embedding 检索 + 冲突检测机制
  3. 记忆检索:
    • 实体中心法:锚点节点检索
    • 语义三元组法:整体查询向量匹配

6. MemOS

官网:memos-playground.openmem.net/cn/

核心能力:

  1. 记忆作为系统资源
  2. 演进作为核心能力(持续学习、自我升级)
  3. 治理作为安全基础(全生命周期治理)

记忆类型:

  • 纯文本记忆(Plaintext Memory) → 长期记忆区,显式记忆
  • 激活记忆(Activation Memory) → 短期记忆区,隐式记忆
  • 参数记忆(Parameter Memory) → 长期记忆区,隐式记忆

👉 支持动态转换:

  • 纯文本 → 激活
  • 纯文本/激活 → 参数
  • 参数 → 纯文本

统一抽象:MemCube

  • 包含 Metadata(描述信息、权限、动态指标)
  • 通过 usage 判断冷热记忆 → 缓存/归档/切换

系统框架:

  1. 输入 → MemReader → MemoryCall(标准化 API 调用)

    • 任务意图(Task Intent):操作类型(存、取、删、改)
    • 时间范围(Time Scope):过去/现在/未来
    • 主题实体(Topic Entities):关键名词
    • 上下文锚点(Contextual Anchors):与前文关联
  2. 多视角记忆结构:标签系统、知识图谱、语义分层

  3. 混合检索与动态调度


7. MIRIX

  • 借鉴人类记忆机制 → 设计 多模块记忆框架
  • 六个组件
    1. 核心记忆(用户信息/偏好)
    2. 情节记忆(事件)
    3. 语义记忆(概念/名字)
    4. 程序记忆(步骤/流程)
    5. 资源记忆(文件/文档)
    6. 知识库(地址/电话等)

更新与提取机制:

  • 记忆更新:Meta Memory Manager 负责路由更新
  • 记忆提取:先粗检索,再定向深检索

五、实现总结

  • 早期 Memory:主要聚焦对话记忆
  • 现阶段:扩展至任务执行、决策支持、个性化服务

优化手段:

  1. 精细化记忆管理 → 分区/分层/分而治之
  2. 组合多种记忆存储结构 → 文本、索引、知识图谱混合
  3. 检索优化 → 混合检索 + Embedding + Reranker

📌 总结

记忆不仅是信息存储,更是动态的 编码 → 存储 → 提取 → 更新 过程。

无论人类还是智能体,核心问题都是:

  • 存储在哪里?
  • 以何种形式?
  • 如何提取与更新?

参考: mp.weixin.qq.com/s/LYx4pV1L9…