一、记忆的分类
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. 其他操作
- 巩固(Consolidation):将短期记忆转化为长期记忆,防止遗忘
- 再巩固(Re-Consolidation):已存储的记忆重新激活并需要再次稳定
- 反思(Reflection):主动回顾、评估和检查记忆内容,调整学习策略或优化决策
- 遗忘(Forgetting):自然过程
三、智能体记忆
1. 存储区
-
上下文(Context)
- 相当于短期记忆/工作记忆区
- 窗口有限且容易被遗忘
-
LLM(大模型)
- 覆盖智能体的大部分支持
- 属于长期记忆区,包含不同类型的记忆
-
外挂记忆存储
- 用于扩展长期记忆区
- 由于 LLM 内知识不可更新,因此外挂存储承担补充作用
- 对比人脑:
- 感知记忆、短期记忆 → 上下文
- 长期记忆 → LLM + 外挂存储
2. 存储形式
-
参数形式
- KV-Cache
- LLM 属于长期记忆区参数形式的记忆
-
非参数形式
- 外挂存储属于长期记忆区
- 以非参数形式存在
3. 记忆分类
- 提示词过程(Prompt Engineering) → 优化短期记忆的显式记忆
- 知识库 RAG → 优化长期记忆的显式记忆
- 模型微调(Fine-Tuning) → 优化长期记忆的隐式记忆
记忆存储可分为 参数 与 非参数 两种形式:
- 非参数形式 通常以 Plaintext、Graph、Structured Table 结构存储
- 记忆提取通过 检索 实现,包括:全文检索、向量检索、图检索、混合检索
四、实现框架
1. MemoryBank
特点:
- 对对话进行总结和定期回顾
- 存储摘要以便搜索记忆
- 通过总结形成用户画像,提供个性化回答
- 模拟艾宾浩斯遗忘曲线,实现动态记忆机制
底层存储分为三部分:
-
深度内存存储(In-Depth Memory Storage)
- 记录多轮对话的详细内容
- 包含时间戳,便于回顾和总结
-
分层事件总结(Hierarchical Event Summary)
- 对话内容提炼,生成高层次摘要
- 形成层次化记忆结构
-
动态人格理解(Dynamic Personality Understanding)
- 通过长期互动评估用户个性
- 生成每日个性洞察,逐步形成全局个性理解
检索方式:
- 每一轮对话与摘要组成记忆片段
- Embedding 存储到向量数据库
- 当前上下文作为检索条件
- 检索到的相似记忆 + 个性提示填充上下文
2. LETTA
- 借鉴 虚拟内存分页思想
- 将内容分为 Main Content 和 External Content
- 当 Main Context 空间不足时,与 External Context 交换数据
Main Context 分为三部分:
- System Instructions:存储静态系统提示词
- Working Context:存储关键事实、偏好、用户信息、Agent 个性
- FIFO:滚动的历史对话记录 + Summary
操作机制:
- 递归摘要总结(Recursive Summary)
- 从队列中移除信息时,生成新的摘要
- 节省 Context 空间占用
记忆的个性与提取:
- 通过 Function Executor 完成
- 系统指令中包含:
- 记忆层次结构及描述
- 系统可调用函数(自然语言描述)
3. ZEP
- 自研图引擎 Graphiti
- 提供事件感知的知识图谱
三层结构:
- 情景子图:存储原始输入数据
- 语义子图:提取语义实体和关系
- 社区子图:高层次语义聚类,参考 GraphRAG
记忆更新:
- 记忆去重
- 时间信息提取与边失效机制
- 标签传播算法构建社区
记忆提取:
- 输入 → 检索 → 排序 → 构造上下文
- 支持三种搜索:
- 语义搜索
- BM25 全文搜索
- 图的广度优先搜索
4. A-MEM
- 借鉴 Zettelkasten 卡片笔记法
- 每个卡片为一个知识点(Note),包含索引、上下文描述、链接
流程:
- 节点建设:从交互中提取记忆 → Notes
- 链接生成与记忆进化:与历史记忆建立连接
- 记忆检索:基于关键词与语义网络检索
5. Mem0 & Mem0-G
Mem0 实现:
- 记忆生成:上下文感知,独立后台生成 Summary
- 记忆更新:避免冗余,结合相似记忆和 Facts 判断更新
Mem0-G 实现:
- 记忆生成:两阶段流水线(实体提取 → 关系生成)
- 记忆更新:Embedding 检索 + 冲突检测机制
- 记忆检索:
- 实体中心法:锚点节点检索
- 语义三元组法:整体查询向量匹配
6. MemOS
官网:memos-playground.openmem.net/cn/
核心能力:
- 记忆作为系统资源
- 演进作为核心能力(持续学习、自我升级)
- 治理作为安全基础(全生命周期治理)
记忆类型:
- 纯文本记忆(Plaintext Memory) → 长期记忆区,显式记忆
- 激活记忆(Activation Memory) → 短期记忆区,隐式记忆
- 参数记忆(Parameter Memory) → 长期记忆区,隐式记忆
👉 支持动态转换:
- 纯文本 → 激活
- 纯文本/激活 → 参数
- 参数 → 纯文本
统一抽象:MemCube
- 包含 Metadata(描述信息、权限、动态指标)
- 通过 usage 判断冷热记忆 → 缓存/归档/切换
系统框架:
-
输入 → MemReader → MemoryCall(标准化 API 调用)
- 任务意图(Task Intent):操作类型(存、取、删、改)
- 时间范围(Time Scope):过去/现在/未来
- 主题实体(Topic Entities):关键名词
- 上下文锚点(Contextual Anchors):与前文关联
-
多视角记忆结构:标签系统、知识图谱、语义分层
-
混合检索与动态调度
7. MIRIX
- 借鉴人类记忆机制 → 设计 多模块记忆框架
- 六个组件:
- 核心记忆(用户信息/偏好)
- 情节记忆(事件)
- 语义记忆(概念/名字)
- 程序记忆(步骤/流程)
- 资源记忆(文件/文档)
- 知识库(地址/电话等)
更新与提取机制:
- 记忆更新:Meta Memory Manager 负责路由更新
- 记忆提取:先粗检索,再定向深检索
五、实现总结
- 早期 Memory:主要聚焦对话记忆
- 现阶段:扩展至任务执行、决策支持、个性化服务
优化手段:
- 精细化记忆管理 → 分区/分层/分而治之
- 组合多种记忆存储结构 → 文本、索引、知识图谱混合
- 检索优化 → 混合检索 + Embedding + Reranker
📌 总结
记忆不仅是信息存储,更是动态的 编码 → 存储 → 提取 → 更新 过程。
无论人类还是智能体,核心问题都是:
- 存储在哪里?
- 以何种形式?
- 如何提取与更新?