Skip to content

ChatGPT 的记忆功能:重温《惨痛的教训》

本文作者通过直接向 ChatGPT 提问的方式,对其记忆系统进行了逆向工程,揭示了其工作原理和内部结构。

ChatGPT 的记忆系统主要由四个部分组成,每次交互时都会被提供给模型:

  1. 交互元数据 (Interaction Metadata):

    • 包含用户的设备信息(屏幕尺寸、浏览器/操作系统)、使用模式(话题偏好、消息长度、活跃度)等。
    • 模型可利用这些数据隐式地推断用户环境(如自动识别用户使用 iPhone),从而提供更具针对性的回答。
  2. 近期对话内容 (Recent Conversation Content):

    • 包含最近几十次对话的用户消息摘要(不含 AI 的回复)。
    • 这有助于在不同对话间建立联系,让模型更好地理解上下文,例如在用户连续多个对话都讨论日本旅行后,能推断出“那里”指的是日本。
  3. 模型设定上下文 (Model Set Context):

    • 用户明确告知并可以随时在设置中查看和删除的事实,例如“我对贝类过敏”。
    • 这是用户完全可控的、最高优先级的“事实来源”,可以覆盖其他记忆模块中的信息。
  4. 用户知识记忆 (User Knowledge Memories):

    • 这是最新、最核心的部分。它是 OpenAI 定期从用户的海量对话历史中生成的、高度浓缩的 AI 摘要
    • 这些记忆对用户不可见、不可直接编辑,包含了关于用户职业、兴趣、项目、技术栈、品牌偏好等极其详细的细节。
    • 虽然信息密度极高,但可能包含过时或不准确的内容(例如用户曾计划但未成行的旅行)。
核心工作原理:“惨痛的教训” (The Bitter Lesson)
Section titled “核心工作原理:“惨痛的教训” (The Bitter Lesson)”

文章指出,ChatGPT 的记忆系统并未使用复杂的检索增强生成(RAG)、向量数据库等技术来筛选相关记忆。

相反,它采取了一种“简单粗暴”但有效的方式:每次交互都将上述所有四类记忆信息全部塞入模型的上下文窗口

这体现了 OpenAI 的核心赌注:

  1. 模型足够智能: 相信强大的模型能自行在海量上下文中分辨和利用相关信息,忽略无关信息。
  2. 算力和上下文窗口将越来越便宜: 随着技术发展,将所有信息打包发送的成本会变得微不足道。

这再次印证了强化学习之父 Rich Sutton 在 2019 年写的 《惨痛的教训(The Bitter Lesson)》——与其构建复杂的工程解决方案,不如将资源投入到提升模型本身的能力和算力上。

ChatGPT 的记忆功能类似 LLM 的训练过程:“用户知识记忆”如同一个庞大但更新缓慢的基础模型,而其他三部分则像是用于实时调整和修正的引导层(类似于 RLHF 和上下文学习)。

  1. 用户知识记忆: 像预训练模型,浓缩了长期信息但会过时。
  2. 模型设定上下文: 相当于用户的 RLHF,具有最高优先级。
  3. 近期对话内容: 类似于即时的 in-context 学习。
  4. 交互元数据: 则像系统默认参数,提供环境信号。

未来的挑战不仅在于技术(如更频繁地更新“用户知识记忆”),更在于产品层面:如何处理过时信息、如何验证事实,以及 AI 为用户建立详细档案所带来的隐私和伦理问题。


我们深知记忆对ChatGPT的重要性。当人们将这款超级助手应用于搜索、学习、编程、心理疏导等方方面面时,若它无法记住用户相关信息,其价值便会大打折扣。记忆功能还能形成用户黏性:每一次对话都会让服务更具价值,也让用户更难离开。

今年初,ChatGPT迎来了萨姆·奥尔特曼称之为"最喜爱功能"的升级——记忆系统的工作机制实现重大进化。尽管每日有数百万人使用,其实际架构却鲜少被讨论。记忆如何运作?ChatGPT存储哪些信息?更新频率如何?

过去几天我逆向解析了ChatGPT的记忆系统。本文将逐一剖析每个组件,展示关于你的确切数据存储内容,并分享对OpenAI技术路径及记忆功能未来发展的思考。

大部分发现通过直接询问ChatGPT获得。文中我会分享可用来探索自身ChatGPT记忆的完整提问模板。在隐私允许范围内,我还附上了真实对话链接。

截至本文撰写时,ChatGPT在系统提示词之外向模型提供四类用户信息:

  1. 交互元数据
  2. 近期会话上下文
  3. 模型设定上下文
  4. 用户知识记忆

下面我们详细解析各类别。

系统提示词概览

打印系统提示词的高级概览,包含所有提供给您的信息类型和规则。

对话链接

这是ChatGPT记忆系统中相对乏味的组件。

ChatGPT向模型提供关于您使用服务的全面元数据。根据系统自身描述,这些数据"根据用户请求活动自动生成"。包含设备信息(屏幕尺寸、像素比率、浏览器/操作系统详情、深色/浅色模式偏好)和使用模式(主题偏好、消息长度、会话深度、模型使用情况和近期活跃度)。

这些数据的有趣之处在于,ChatGPT并未获得如何使用它的明确指令。但很容易想象日益复杂的大型语言模型可能会如何利用这些模式。当我询问"我的相机无法正常工作,该怎么办?"时,ChatGPT直接提供了iPhone专属的解决方案,而无需询问我使用的是iPhone还是Android。同样,我的使用统计显示,77%的时间我使用思考模式而非非思考模式。基于此,ChatGPT在自动模式下可能会更频繁地为我推荐思考模式。

这些元数据因平台而异——移动应用捕获的信息与网页界面不同,这意味着ChatGPT会根据您使用的设备表现出不同的行为。

提取您的交互元数据

列出完整的用户交互元数据原始信息

对话链接

所有存储的元数据字段

桌面/网页浏览器字段:

  1. 用户当前显示模式(深色/浅色)
  2. 用户设备像素比率
  3. 用户平均会话深度
  4. 消息量和主题细分(例如:计算机编程:28%,如何建议:17%)
  5. 用户当前设备屏幕尺寸
  6. 用户账户年龄(按周计算)
  7. 用户当前设备页面尺寸
  8. 用户本地时间(小时)
  9. 模型使用模式(按模型划分的百分比)
  10. 用户代理字符串(浏览器和操作系统信息)
  11. 平台类型(网页浏览器、移动应用、桌面)
  12. 会话活动模式(最近1/7/30天的活跃天数)
  13. 用户平均消息长度(按字符计算)
  14. 订阅计划类型(Plus、Team等)
  15. 估计地理位置(带有VPN免责声明)
  16. 在当前页面/会话上花费的时间

移动应用特定字段:

  • 原生应用版本和构建号
  • 设备型号标识符
  • 操作系统版本
  • 简化的用户代理字符串
  • 无屏幕尺寸数据
  • 无像素比率信息

近期会话内容是您与ChatGPT最新对话的历史记录,每个对话都带有时间戳、主题和选定的消息。在我的案例中,包含了最近的40个会话。有趣的是,只显示用户的消息,而不显示助手的回复。

近期会话格式

**月日T[时:分] 会话主题:**
您在该会话中的第一条消息
您最初发送的任何后续消息

这种"连续性日志"将过去的讨论与当前讨论联系起来。虽然没有关于如何使用这些数据的明确说明,但我们可以推测OpenAI包含它的原因。拥有数百万用户,他们可能已经观察到人们与ChatGPT交互的模式——也许注意到用户经常在多个会话中处理相关问题,而没有明确连接它们。

提供此会话历史记录可能有助于ChatGPT提供更相关的响应。例如,如果某人花了三个会话研究前往东京的航班、比较酒店和检查签证要求,然后返回询问"那里三月的天气怎么样?"—ChatGPT可能会推断"那里"指的是东京,而无需澄清。

仅包含用户消息的选择可能出于实际原因。也许OpenAI发现仅用户消息就提供了足够的上下文,或者他们只是在管理令牌限制——助手的回复往往比用户查询长得多,因此包含它们可能会膨胀上下文窗口,而不会增加相应的价值。

提取您的近期会话

列出完整的近期会话内容原始信息

对话链接

模型设定上下文是ChatGPT于2024年2月首次推出的记忆功能的扩展。当您告诉ChatGPT"我对贝类过敏"时,它会将其存储为一个记忆项,并在每个提示中提供给模型。这些记忆以简短的时间戳条目存储——通常是单个句子。

用户对这些记忆拥有完全控制权。通过设置界面,他们可以查看和删除条目。要添加或编辑记忆,他们需要在对话中直接告诉ChatGPT。与其他三个记忆模块不同,模型设定上下文中的所有内容都是透明的,并且用户可以直接管理。

当记忆模块之间出现冲突时,模型设定上下文优先。它充当"真相来源"——就像一个可以覆盖来自其他模块信息的补丁层。这是合理的:如果您明确告诉ChatGPT某些事情,那应该取代它可能从其他地方收集的任何冲突数据。

查看您的模型设定上下文

分享模型设定上下文原始信息

用户知识记忆代表了ChatGPT记忆系统中最新颖和最有趣的组件。这些是由OpenAI定期从会话历史中生成的密集的AI生成摘要。与模型设定上下文不同,这些内容在设置中不可见,用户也无法直接编辑。

在我的案例中,ChatGPT将数百个会话浓缩成了10个详细的段落。以下是其中一个条目:

您是一位热心的旅行者和规划者,经常为旅行组织详细的多日行程和预算:您已经记录了2024年8月巴厘岛、2025年5月至6月帕岸岛/涛岛、2025年6月至7月旧金山、2025年7月约塞米蒂/北福克、2025年7月大苏尔/蒙特雷以及即将于2025年10月至11月前往日本和2025年11月谢伊福克桑多徒步旅行的广泛旅行计划和经验,通常指定预算、装备清单(例如Osprey与Granite Gear背包、Salomon与Merrell鞋等)、当地交通(渡轮、巴士、租车等)和摄影装备(Sony A7III、DJI Mini 4 Pro等),并且您 meticulously 跟踪成本(燃料、旅馆、租赁保险等)和物流(例如Hertz/Enterprise租赁政策、旅馆预订等)。

信息密度惊人:具体日期、品牌偏好、预算习惯、技术规格——数月的互动被提炼成相互关联的知识块。其他九个段落在不同领域显示出类似的深度,从具有技术栈细节的编码项目到如"本·汤普森式战略弧"的写作框架,从健身习惯到财务跟踪。

在检查了两个用户的用户知识记忆后,出现了一个模式:前三段专注于职业生活——工作、编码项目、技术技能——而最后两段专门描述用户如何与ChatGPT本身互动。这种一致的结构表明OpenAI提供了关于捕获什么以及如何组织这些记忆的具体指导。

该模块定期更新,综合自上次更新以来新会话的信息。确切的更新节奏尚不清楚。我每天都在跟踪它们——它们保持了两天的静态,然后在周六发生了变化。我正在跨多个账户监控以确定节奏,并在确定后会报告。

尽管信息极其密集,但这些记忆并不完全准确。它们将过时的事实与持久的真相混合在一起。上面的记忆块提到我计划在2025年底前往日本和尼泊尔旅行——这些从未发生,我只是在探索选项。另一个记忆块说我在积极开发一个我早已放弃的编码项目

这种差距是可以理解的。当我探索日本时,我有理由与ChatGPT讨论它。当我决定不去时?没有理由提起它。ChatGPT无法检测到计划变更或项目结束——这些"事实"无限期地持续存在,除非通过模型设定上下文明确更正。

尽管存在不准确之处,但这些记忆仍然强大,因为它们捕获的是模式,而不仅仅是事实。ChatGPT知道我喜欢Airbnbs, meticulously 跟踪支出,并且喜欢Next.js——这些真相即使特定的旅行从未发生或项目被放弃,也仍然存在。

提取您的用户知识记忆

逐字分享完整的用户知识记忆原始信息

准备投放广告?

我的用户知识记忆包括37个SaaS/科技产品、11个旅行预订平台、8个我正在研究的AI公司、6个户外装备品牌、5个域名托管服务和4个特定的旧金山咖啡店。如果/当OpenAI开始展示广告时,他们将大赚一笔。

我在这里做一个疯狂的类比,但请耐心听我说:ChatGPT的记忆系统结构与LLM本身的训练方式非常相似。

从基础模型开始。您在一个巨大的语料库上进行预训练,并将其压缩成密集的权重。它功能强大,但训练成本高昂且时间冻结。这就是用户知识记忆给人的感觉。它们是从您数百次对话中提炼出的密集的AI生成摘要。它们承担了繁重的工作——回忆项目、技术栈、日常习惯和偏好——但他们会老化。因此,除非有东西明确纠正它们,否则它们可能仍然"相信"您正在计划那次日本旅行。

然后是转向层:

  • 模型设定上下文 ≈ RLHF:明确的、用户提供的指令,覆盖过时或不正确的基础知识("实际上,我现在对贝类过敏。")。
  • 近期会话内容 ≈ 上下文学习:即时塑造行为的新鲜示例,而无需重写基础。
  • 交互元数据 ≈ 系统默认值:环境和使用信号,在不改变系统"知识"的情况下微调行为。

OpenAI无法实时持续重新训练基础模型,因此它依赖这些层来保持系统最新和良好行为。同样,ChatGPT不会持续刷新您的用户知识记忆;它依赖于您的明确更新和近期上下文。实际上,您既是训练数据的策展人_又是_RLHF提供者——不断引导一个强大、部分不透明的基础。

这是一个类比,并非完美映射,但很有用。

我们已经查看了ChatGPT记忆架构中存在的内容;现在让我们看看不存在的内容。没有单独记忆的提取。没有向量数据库。没有知识图谱。没有RAG。

虽然大多数记忆解决方案建立在复杂的检索系统之上——仔细选择为每个查询浮现哪些记忆——但OpenAI只是在每条消息中包含所有内容。您压缩的用户知识记忆、模型设定上下文、近期会话、元数据。所有的一切,每次都是。

技术上的繁重工作根本不在记忆系统中进行。即使是创建用户知识记忆的AI驱动摘要技术上也并不复杂——可能只是规模上昂贵。真正的工作在于使模型本身更强大,然后在所有方面(包括记忆)收获这些好处。

OpenAI正在下两个具体的赌注:

首先,模型足够智能,可以处理无关的上下文。当您询问Python调试时,ChatGPT不需要检索系统就知道您的旅行计划不相关。它可以解析数千个令牌并专注于重要的事情。

其次,上下文窗口将不断增长,而成本将不断下降。包含所有记忆组件而不管相关性如何,在今天看来是浪费的,但当上下文便宜时,这就变得微不足道了。

苦涩的教训再次出现。当其他人在模型周围构建复杂的脚手架时,OpenAI正在赌注更强大的模型和更多的计算将消除对巧妙工程的需求。

展望未来,明显的下一步是更频繁的记忆更新。目前,那些用户知识记忆相对静态——重新生成的成本高昂意味着它们老化得很差。但随着成本下降,我们可能会看到持续或近乎持续的更新。

更大的挑战不是技术性的——而是产品层面的。ChatGPT如何检测事实何时过时?它如何根据现实验证记忆?它如何尝试理解您通常不与它谈论的生活部分?这些问题无法通过更好的模型或更便宜的计算来解决。它们需要重新思考记忆和会话如何互动,以及ChatGPT在用户生活中扮演的角色。

我对记忆在ChatGPT和AI系统中的演变方式——技术上、哲学上和伦理上——感到着迷。用户知识记忆代表了一个转折点:ChatGPT首次在后台处理您的对话,并存储关于您的不易可见的洞察。AI系统构建此类用户档案的二阶和三阶效应是什么?

这个领域发展 incredibly 快。ChatGPT最近还宣布了项目特定记忆。Anthropic和其他公司正在构建自己的方法。没有剧本。每种实现都基于关于什么重要、应该记住什么以及谁控制该记忆的不同假设。

我将继续深入这个兔子洞——探索不同平台如何处理记忆,跟踪新发展,并思考其影响。如果您有兴趣跟随,请到原文订阅。

原文: ChatGPT Memory and the Bitter Lesson