ChatGPT 的记忆功能:重温《惨痛的教训》
本文作者通过直接向 ChatGPT 提问的方式,对其记忆系统进行了逆向工程,揭示了其工作原理和内部结构。
ChatGPT 记忆系统的四大组成部分
Section titled “ChatGPT 记忆系统的四大组成部分”ChatGPT 的记忆系统主要由四个部分组成,每次交互时都会被提供给模型:
-
交互元数据 (Interaction Metadata):
- 包含用户的设备信息(屏幕尺寸、浏览器/操作系统)、使用模式(话题偏好、消息长度、活跃度)等。
- 模型可利用这些数据隐式地推断用户环境(如自动识别用户使用 iPhone),从而提供更具针对性的回答。
-
近期对话内容 (Recent Conversation Content):
- 包含最近几十次对话的用户消息摘要(不含 AI 的回复)。
- 这有助于在不同对话间建立联系,让模型更好地理解上下文,例如在用户连续多个对话都讨论日本旅行后,能推断出“那里”指的是日本。
-
模型设定上下文 (Model Set Context):
- 用户明确告知并可以随时在设置中查看和删除的事实,例如“我对贝类过敏”。
- 这是用户完全可控的、最高优先级的“事实来源”,可以覆盖其他记忆模块中的信息。
-
用户知识记忆 (User Knowledge Memories):
- 这是最新、最核心的部分。它是 OpenAI 定期从用户的海量对话历史中生成的、高度浓缩的 AI 摘要。
- 这些记忆对用户不可见、不可直接编辑,包含了关于用户职业、兴趣、项目、技术栈、品牌偏好等极其详细的细节。
- 虽然信息密度极高,但可能包含过时或不准确的内容(例如用户曾计划但未成行的旅行)。
核心工作原理:“惨痛的教训” (The Bitter Lesson)
Section titled “核心工作原理:“惨痛的教训” (The Bitter Lesson)”文章指出,ChatGPT 的记忆系统并未使用复杂的检索增强生成(RAG)、向量数据库等技术来筛选相关记忆。
相反,它采取了一种“简单粗暴”但有效的方式:每次交互都将上述所有四类记忆信息全部塞入模型的上下文窗口。
这体现了 OpenAI 的核心赌注:
- 模型足够智能: 相信强大的模型能自行在海量上下文中分辨和利用相关信息,忽略无关信息。
- 算力和上下文窗口将越来越便宜: 随着技术发展,将所有信息打包发送的成本会变得微不足道。
这再次印证了强化学习之父 Rich Sutton 在 2019 年写的 《惨痛的教训(The Bitter Lesson)》——与其构建复杂的工程解决方案,不如将资源投入到提升模型本身的能力和算力上。
ChatGPT 的记忆功能类似 LLM 的训练过程:“用户知识记忆”如同一个庞大但更新缓慢的基础模型,而其他三部分则像是用于实时调整和修正的引导层(类似于 RLHF 和上下文学习)。
- 用户知识记忆: 像预训练模型,浓缩了长期信息但会过时。
- 模型设定上下文: 相当于用户的 RLHF,具有最高优先级。
- 近期对话内容: 类似于即时的 in-context 学习。
- 交互元数据: 则像系统默认参数,提供环境信号。
未来的挑战不仅在于技术(如更频繁地更新“用户知识记忆”),更在于产品层面:如何处理过时信息、如何验证事实,以及 AI 为用户建立详细档案所带来的隐私和伦理问题。