MemGPT 论文深度解读:突破 LLM 上下文窗口限制的层级记忆管理
MemGPT提出了一种突破大语言模型上下文窗口限制的创新方法,通过借鉴操作系统的虚拟内存管理机制,构建了三级记忆架构(上下文窗口、向量存储、归档存储)和中断驱动的控制流。该系统实现了虚拟上下文管理,让LLM在有限窗口内获得"无限"记忆能力,解决了长对话中的记忆溢出问题。核心创新包括层级记忆系统、语义向量检索和被动中断机制,显著提升了长文档分析和多轮对话性能。尽管存在检索延迟和依赖底层模型等局限,M
MemGPT: Towards LLMs as Operating Systems
论文:UC Berkeley Packer, Wooders, Lin, Fang, Patil, Stoica, Gonzalez,2023
本文记录我的论文学习过程与核心理解
一、论文基础介绍
基本信息
| 项目 | 信息 |
|---|---|
| 论文 | MemGPT: Towards LLMs as Operating Systems |
| 原文链接 | https://arxiv.org/abs/2310.08560 |
| 作者 | UC Berkeley(Packer, Wooders, Lin, Fang, Patil, Stoica, Gonzalez) |
| 时间 | 2023(2024 更新) |
| 引用 | 600+(Semantic Scholar) |
| 核心贡献 | ① 虚拟上下文管理技术 ② 类 OS 分层记忆系统 ③ 突破 LLM 上下文窗口限制 |
| 开源 | https://github.com/memgpt |
论文背景与动机
在前六篇论文中,我们依次解决了:
- CoT:推理能力
- ReAct:推理+行动协同
- Toolformer:自主工具使用
- AgentVerse:多 Agent 协作
- MetaGPT:结构化 SOP 协作
- Voyager:终身学习能力
但有一个根本限制始终存在:
LLM 的上下文窗口是有限的——即使是 128K token 的模型,当对话历史达到几十万字时,仍然会溢出。
MemGPT 要解决的核心问题是:
如何让 LLM 在有限的上下文窗口内,实现"无限"记忆能力?
二、核心问题
传统 Agent 的记忆困境
| 方法 | 问题 |
|---|---|
| 完整历史塞进 context | 超出 window 就崩溃 |
| 只保留最近 N 轮 | 早期重要上下文永久丢失 |
| 外部向量检索(RAG) | 检索质量不稳定,无法理解完整时间线 |
| 压缩 Prompt | 重要细节被误删 |
核心洞察
**传统方法是在"空间内挤更多内容",MemGPT 是在"空间内建立层级管理体系"——像 OS 的虚拟内存一样,把不常用的数据换出到外部,把常用的换入到快速存储。
三、核心思想:类 OS 的层级记忆
MemGPT 的核心灵感来自操作系统:
传统 OS: MemGPT:
┌────────────────┐ ┌────────────────┐
│ CPU Register │ ←→ │ LLM Context │ ←→ 「快」记忆
│ (极快·极小) │ │ (上下文窗口) │
├────────────────┤ ├────────────────┤
│ L1/L2 Cache│ │ 外部向量存储 │
│ (快·小) │ ←→ │ (语义检索) │
├────────────────┤ ├────────────────┤
│ Main Memory │ │ 原始对话日志 │
│ (大·慢) │ │ (完整历史) │
├────────────────┤ ├────────────────┤
│ Disk │ │ 归档存储 │
│ (极大·极慢) │ │ (极远记忆) │
└────────────────┘ └────────────────┘
MemGPT 的三层记忆
| 层级 | 类比 OS | 容量 | 速度 | 存储内容 |
|---|---|---|---|---|
| Context Window | CPU Register | 极小(~128K) | 极速 | 正在处理的片段 |
| External Recall(向量存储) | Main Memory / SSD | 中(向量库) | 快 | 检索回来的相关记忆片段 |
| Archival Storage(归档存储) | Disk / HDD | 无限 | 慢 | 完整历史对话日志 |
向量存储 vs 归档存储
这是两个常被混淆的概念,需要重点区分:
| External Recall(向量存储) | Archival Storage(归档存储) | |
|---|---|---|
| 存什么 | 语义向量(embedding) | 原始对话原文 |
| 像 | 书签 + 内容摘要 | 完整日记本 |
| 目的 | 快速检索"这段话在讲什么" | 保留"当时具体怎么说的" |
| 容量 | 中(只存检索回来的片段) | 无限(存所有对话) |
| 速度 | 快 | 慢 |
| 触发时机 | 检索时从归档调出 | 一直存储所有对话 |
四、核心机制:虚拟上下文管理与中断
虚拟上下文管理
MemGPT 使用虚拟上下文管理,让 LLM 看起来拥有"无限"上下文:
┌─────────────────────────────────────────────────────┐
│ MemGPT 工作流程 │
│ │
│ 用户消息 ──→ 触发中断(Interrupt) │
│ ↓ │
│ 检索向量存储(External Recall) │
│ ↓ │
│ 检索归档存储(Archival) │
│ ↓ │
│ 更新上下文窗口(Context Window) │
│ ↓ │
│ LLM 处理回复 │
│ ↓ │
│ 必要时换出(Context 满时) │
└─────────────────────────────────────────────────────┘
中断机制(Interrupt)
为什么需要中断?
LLM 自己无法主动管理记忆——它不能自己"决定"去查外部存储。
中断解决了这个问题:
- 用户发消息 → 中断 LLM 当前处理
- 系统去向量存储/归档存储检索相关记忆
- 把检索结果加载回 context window
- 恢复 LLM 处理,给出回复
中断机制 = LLM 的"提醒助手"。LLM 自己是不会主动去查记忆的,必须靠中断打断它、帮它查好、再让它继续。
检索机制:向量检索 vs 关键词匹配
为什么必须用向量检索,不能用关键词匹配?
| 场景 | 关键词搜索 | 向量搜索 |
|---|---|---|
| 用户说"上次讨论的那个方案" | 记忆里写"北京分公司提案" → 搜不到 | ✅ 语义相近,能匹配 |
| 用户说"我家的猫" | 记忆里写"那只宠物猫" → 搜不到 | ✅ 语义相同,能匹配 |
| 用户说"那家餐厅" | 记忆里写"上次去吃饭的地方" → 搜不到 | ✅ 语义相关,能匹配 |
根本原因:
- 关键词匹配是字面比较,同义词、上下文、隐含意图都捕捉不到
- 向量检索是语义比较——把文字转成 embedding,比较的是"意思"是否相近
五、与前文的递进关系
CoT → 推理链(让模型思考)
↓
ReAct → 推理+行动(与环境交互)
↓
Toolformer → 自主工具学习(调用外部API)
↓
AgentVerse → 多Agent协作(分工)
↓
MetaGPT → SOP结构化协作(规范化流程)
↓
Voyager → 终身学习(跨时间维度的能力积累)
↓
MemGPT → 无限记忆(突破上下文窗口限制)
六、核心创新点
创新①:虚拟上下文管理
像 OS 的虚拟内存一样,通过数据换入/换出,在有限 context 内提供"无限"上下文的错觉。
创新②:层级记忆系统
三层记忆各司其职:
- 热层(Context):当前处理
- 温层(向量存储):检索回来的相关片段
- 冷层(归档存储):完整历史
创新③:中断驱动的控制流
通过中断机制,让 LLM 能够被动响应检索请求,而不需要 LLM 主动发起(LLM 自己无法主动管理记忆)。
创新④:语义向量检索
用 embedding 而非关键词匹配,实现语义级别的记忆检索。
七、实验结果与意义
主要发现
| 任务 | MemGPT vs 其他方法 | 提升幅度 |
|---|---|---|
| 长文档分析(超 context 窗口) | 最优 | 显著领先 |
| 多轮对话记忆保持 | 最优 | 显著领先 |
| 跨会话信息检索 | 最优 | 显著领先 |
八、局限性
| 局限性 | 说明 |
|---|---|
| 检索质量依赖 embedding 模型 | 向量化的质量直接影响检索准确性 |
| 归档存储检索较慢 | 数据量大时检索延迟明显 |
| 中断触发策略需优化 | 频繁中断影响体验,不足则记忆丢失 |
| 仍受限于底层 LLM 能力 | 记忆管理做得好,但回复质量仍受限于基础模型 |
九、总结
核心结论(一句话)
MemGPT 通过虚拟上下文管理 + 三层记忆架构 + 中断驱动机制,让 LLM 在有限的 context 窗口内实现了"无限"记忆能力,解决了长对话场景下的记忆溢出问题。
核心知识卡片
| 知识点 | 掌握要点 |
|---|---|
| 三层记忆 | Context(热)/ 向量存储(温)/ 归档存储(冷) |
| 向量存储 vs 归档存储 | 向量存检索结果,归档存全部原文 |
| 中断机制 | LLM 无法主动查记忆,需要中断打断当前处理、帮它检索 |
| 向量检索优势 | 语义相近就能匹配,关键词只能字面匹配 |
| vs 简单塞 context | 分层管理 + 主动迁移,而非被动溢出 |
十、核心知识掌握
知识要点 1:三层记忆
问题: MemGPT 的三层记忆和简单地把所有历史塞进 context 有什么区别?
掌握要点:
- 传统方式:把所有对话平铺在 context 里 → 超出 window 就崩溃
- MemGPT 方式:分层管理
- Context Window:存放当前最相关片段(热数据)
- 向量存储:存放检索回来的相关记忆(中温数据)
- 归档存储:存放完整历史对话原文(冷数据)
- 核心区别:MemGPT 有主动的"记忆迁移"机制 + 向量检索机制
知识要点 2:中断机制
问题: 中断机制解决了什么问题?
掌握要点:
- LLM 自己无法主动管理记忆——它不能自己决定去查外部存储
- 中断在用户发消息时触发:打断 LLM → 检索记忆 → 加载回 context → 恢复处理
- 中断机制 = LLM 的"提醒助手"
知识要点 3:向量检索 vs 关键词匹配
问题: 为什么向量检索不能替换成关键词匹配?
掌握要点:
- 关键词匹配是字面比较,同义词、上下文、隐含意图都捕捉不到
- 向量检索是语义比较,把文字转成 embedding,比较"意思"是否相近
- 场景:“上次讨论的那个方案” vs “北京分公司提案” → 关键词搜不到,向量检索可以
十一、附录:完整精读计划
必读经典(8篇)
| # | 论文 | 核心贡献 | 状态 |
|---|---|---|---|
| 1 | Chain-of-Thought | 推理链提示 | ✅ 已完成 |
| 2 | ReAct | 推理+行动交替模式 | ✅ 已完成 |
| 3 | Toolformer | LLM 自学使用工具 | ✅ 已完成 |
| 4 | AgentVerse | 多 Agent 协作框架 | ✅ 已完成 |
| 5 | MetaGPT | 结构化多 Agent 协作(SOP + 结构化通信) | ✅ 已完成 |
| 6 | Voyager | 具身智能 + 终身学习 | ✅ 已完成 |
| 7 | MemGPT | 层级记忆管理 | ✅ 已完成 |
| 8 | Computer Use | GUI Agent 突破 | 📋 待读 |
推荐阅读顺序
Week 1: CoT ✅ → ReAct ✅ → Toolformer ✅(推理 + 工具基础,全部完成)
Week 2: AgentVerse ✅ → MetaGPT ✅ → Generative Agents(多 Agent 架构)
Week 3: Voyager ✅ → ChatDev → Reflexion(实践系统 + 反思)
Week 4: MemGPT ✅ → RAG vs Memory(记忆系统)
Week 5: GAIA → AgentBench(评测体系)
Week 6: Computer Use → Agentic RAG → Self-Discovering(前沿)
十二、参考资料
- 原文论文:https://arxiv.org/abs/2310.08560
- 开源代码:https://github.com/memgpt
- 相关阅读:
- Computer Use 论文精读](/ai-theory/computer-use-paper-learning)
- Agentic RAG 论文精读](/ai-theory/agentic-rag-paper-learning)
- Self-Discovering 论文精读](/ai-theory/self-discovering-paper-learning)
如果你也在学习 AI Agent,欢迎交流讨论,我的 blog:https://sunrong.site
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)