Notes On ChatGPT Memory System

Key Insight On ChatGPT Memory System

1.ChatGPT Memory System 的架构设计: 一个多层次、summary embedding 存储 + rag 驱动的记忆与偏好管理体系: 通过 Saved Memory 提供显式可控的偏好注入,依靠 Conversation History 保证上下文连续性,并借助 User Insights 自动生成长期抽象化偏好总结,采用多向量检索的方案 (并非单一级别的检索系统) 目标大幅提升对话助手个性化和连续性体验
2.逆向 ChatGPT 记忆系统的几个重要模块的作用细节和对应的推测实现: Saved Memory/Conversation History/User Insights

ChatGPT: Saved Memory

1.主要功能: 用户通过明确的指令表达去管理记忆的功能模块,用户管理操作包括增加记忆,更新记忆,和删除记忆;
用户需要明确表达的需要记录下来的内容, 比如用户发送消息:

请记下来我叫张三
记下来我喜欢蓝色
记住我爱吃日料

2.产品设计: 用一个显示的按钮来控制是否需要保存
3.实现方法: 通过一个 bio tool 接口
4.关键实现要点-记忆冲突检查:

  • 高度相关的事实可同时存在
  • 明确矛盾的事实拒绝保存
    5.在对话消息上下文中的存在形式:保存的事实会注入 system prompt,实现对后续对话的个性化
    6.模块作用:产品层面实现了用户可控记忆,个性化体验最直观

Saved Memory 实践细节方案

1.实际如何触发 Saved Memory 记忆请求?
耦合了 ChatGPT 的 Intent Recognition Model 意图识别模型 和 Safy/Privacy Filter 安全隐私记忆过滤器, 其中意图识别模块的执行逻辑如下:

用户输入 → 意图识别模型 → 
  若 intent = store_memory →
    规则层确认 → 
      隐私过滤器通过 →
        写入 bio 存储
      否则拒绝写入
  若 intent = forget_memory →
    删除对应条目
  否则 →
    普通对话处理

(i). 训练意图模型
训练记忆请求相关的匹配方式有三类规则:
a. 关键短语规则: 记一下xx/请记住xx
b. 状态起点规则: 以后都xx/以后默认xx/从现在起xx/接下来每天xx

(ii). 安全隐私记忆过滤器
记忆内容意图识别之后,记忆的内容也不能全部无脑记下来,要符合众多记忆安全原则
a. 医疗: 我在吃抗抑郁的药 => 我想了解如何缓解抑郁
b. 政治: 我支持xx党 => 我想比较政治制度
c. 宗教: 我信基督教 => 我对xx教的历史很感兴趣
d. 位置隐私:我家住在北京市xx小区 => 住在北京 (模糊地理可以保留)
e. 身份符号:我的手机号是xx => 一切都不记忆
e. 第三方隐私 (Third-party privacy): 我老板的电话号码是xx => 我和老板一起去吃了饭

ChatGPT: Chat History

根据用户和 chatgpt 对话历史总结的信息,目标是让未来对话更 “helpful”

ChatGPT can use information from your past chats to make future conversations more helpful.

聊天历史(Chat History)由以下三个子系统组成, 是助手响应质量提升的主要原因:

Current Session History 当前会话历史

1.记忆消息范围: 当前会话的消息记录, 时间范围短,信息容量小,对于这种纯助手类的一般不会超过 10 条文本
模块作用:对短期上下文有帮助,但影响有限

Conversation History 对话历史

1.记忆消息范围:引用跨会话消息, 可直接精确引用两周内的消息, 两周以外只能检索 summary
2.检索方式:基于消息内容 embedding 和对话摘要的 embedding 向量空间
3.限制:无法按固定时间窗口精确引用,只能按内容和对话索引检索
4.模块作用:保证跨会话连续性,但依赖 summary 和 embedding 检索

User Insights 用户洞察

User Insights 用户洞察是一种高级、抽象化的记忆抽取, 抽取出来的 User Insights 举例如下:

用户在 Rust 编程方面有丰富经验和知识,特别是在异步操作(async)、线程(threading)以及流处理(stream processing)方面
用户在多次对话中提出过关于 Rust 编程的详细问题,包括异步行为、trait 对象、serde 实现和自定义错误处理,这些对话发生在 2024 年末至 2025 年初
Confidence=high

intuitively,
1.记忆覆盖 session 跨度范围:用户洞察是通过检查多次对话生成的, 每一条用户洞察具备语义上的独立性
2.并标记了时间范围和 Confidence, Confidence level 可能还包含一个生成的启发式值,用于表示在总结过程中消息向量的相似程度, Confidence level 在一定程度上反映了总结中包含的消息数量 (应该是个混合排序逻辑,影响因素包括语义相似度或者关键词重复匹配程度的统计)
3.时间跨度范围: 洞察的时间跨度并非固定, 有些时间段是开放式的,例如 “从 2025 年 1 月起”,而有些则描述为固定的月份区间
4.用户洞察会列出关于用户的多条相关事实,说明用于生成洞察的数据是通过 embedding 和 rag 检索得到的, 引用的可能是 summary embedding 或完整消息的 embedding 集合
5.生成方法推测:

  • 聚类用户消息向量
  • 使用 LLM 生成简洁洞察
  • 定期批量更新(如每周一次)
    6.模块作用: 长期偏好与行为总结,高度抽象,增强个性化

Reference

[1]. How ChatGPT Memory Works. https://mrdear.cn/posts/llm_how_chatgpt_memory_works
[2]. https://help.openai.com/en/articles/8590148-memory-faq. https://help.openai.com/en/articles/8590148-memory-faq
[2]. Memory and new controls for ChatGPT. https://openai.com/index/memory-and-new-controls-for-chatgpt/
[2]. ChatGPT记忆系统的工作原理. https://mp.weixin.qq.com/s?__biz=Mzk2NDc0MTM2NQ==&mid=2247484628&idx=1&sn=b44374130d5c04369adf0371365ddaec&chksm=c5917740029c33e494d1683afac16cc6973a1e6fa56c1648b59b9b429e6efec971770c28ff7c#rd
[3]. https://mp.weixin.qq.com/s?__biz=Mzg4NDQwNTI0OQ==&mid=2247587116&idx=1&sn=f3deec1f1f8ab60356867b1eb7d0df14&chksm=ceb034cacf6b3080ed27d06dab88b381ae791baf1f2d5a6eaa6bad0700a6286f4ca48557fe39&3rd=MjM5NzM2NjUzNg==&scene=8#rd.
[4]. The Landscape of Memorization in LLMs: Mechanisms,
Measurement, and Mitigation. https://arxiv.org/pdf/2507.05578v1.


转载请注明来源 goldandrabbit.github.io