大型语言模型(LLMs)在作为AI Agent进行交互时,面临一个关键挑战:固定上下文窗口和低效的内存管理。这导致LLMs严重缺乏长期记忆能力,使得在多轮、长时间跨度的对话中难以维持上下文连贯性和个性化体验(例如,忘记用户之前的重要信息或偏好)。
MemoryOS 受操作系统(OS)内存管理原理的启发,创新性地提出了一个内存操作系统(MemoryOS),旨在为 AI Agent 提供全面且高效的内存管理。
数据分层存储
Memory OS 采用三层分级存储架构:
- STM (Short-Term Memory, 短期记忆): 存储最近的实时对话数据,以“对话页”(包含用户查询、模型响应、时间戳)为单位组织,并通过“对话链”维护短时间内的上下文连贯性。
- MTM (Mid-Term Memory, 中期记忆): 采用分段分页式存储架构 (Segmented Paging)。将具有相同主题的对话页分组为“段”(Segment)。每个段包含多个对话页,代表一个独特的主题。段的内容由 LLM 基于相关对话页总结生成。相似度计算结合了语义嵌入和关键词 Jaccard 相似度。
- LPM (Long-term Personal Memory, 长期个人记忆): 存储 User 和 AI Agent的 重要个人细节和特征,确保长期交互的一致性和个性化。
-
- 用户画像 (User Persona): 包含静态属性(性别、姓名、出生年份)、动态更新的用户知识库(User KB,存储从交互中提取的事实信息)以及用户特质(兴趣、习惯、偏好)。
- Agent 画像 (Agent Persona): 包含固定角色/性格设置(Agent Profile)和通过与用户交互发展的动态属性(Agent Traits)。
Memory 动态刷新
Memory OS 管理内存的动态刷新:
- STM -> MTM 更新: 采用FIFO(先进先出) 策略。当 STM 队列满时,最旧的对话页被转移到 MTM。
- MTM -> LPM 更新: 基于热度评分把分页段更新到 LPM,然后删除分页段。热度评分由三个因素加权计算:
-
N_visit:段被检索的次数。L_interaction:段内对话页的总数(代表交互深度)。R_recency:时间衰减系数(基于最近一次访问的时间差)。
- LPM 更新: 热度超过阈值的段会被转移到 LPM。段和对话页中的信息用于更新 User Traits、User 知识库和 Agent Traits(使用固定大小的 FIFO 队列)。转移后,
L_interaction重置为零,避免冗余。
Memory 检索
根据用户查询检索相关信息。
- STM 检索: 检索所有对话页(提供最近的上下文)。
- MTM 检索: 采用两阶段检索:
-
- 段级检索: 使用匹配分数,选择 top-m 候选段。
- 页级检索: 在候选段内,基于语义相似度选择
top-k最相关的对话页。检索后更新段的N_visit和R_recency。
- LPM 检索:
-
- User 知识库 和 Agent 特质各检索与查询向量语义最相关的
top-10条目作为背景知识。 - User 画像、Agent 画像和用户特质中的所有信息都被使用(存储偏好和特征信息)。
- User 知识库 和 Agent 特质各检索与查询向量语义最相关的
LLM 上下文生成
Response Generation (生成): 整合从 STM、MTM 和 LPM 检索到的内容以及用户查询,构造最终的提示词(Prompt)输入给 LLM,生成上下文连贯、准确且个性化的响应。
LoCoMo 测试结果
成果总结
- 创新架构: 设计了包含STM、MTM、LPM的三层分级存储架构,并整合存储、更新、检索、生成四大核心模块。(这里其实同期还有另一个交大的 MemOS 项目也是类似的概念,不知道哪个在前)
- 关键技术:
-
- 在更新机制中引入基于热度评分的动态管理(结合访问频率、交互深度、时间衰减)。
- 在 MTM 检索中采用两阶段检索策略。
- 在 LPM 中构建并动态更新用户画像和 Agent 画像。
- 显著效果: 通过大量实验验证了 MemoryOS 在维持长期对话连贯性、准确性和个性化方面的卓越性能,尤其在超长对话场景下优势明显。
- MemoryOS 开源代码
MemoryOS 通过借鉴操作系统的内存管理理念(特别是分段分页式结构和热度更新),为 AI Agent 构建了一个系统化、分层次、动态的内存管理系统。它有效克服了 LLM 固定上下文窗口的限制,显著提升了 AI Agent 在长对话中维持上下文连贯性和用户个性化体验的能力,是 AI Agent 长期记忆管理领域的一项重要进展。