免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

有人逆向拆解了ChatGPT 的记忆功能

发布日期:2025-12-17 13:03:11 浏览次数: 1526
作者:胡言Ray语

微信搜一搜,关注“胡言Ray语”

推荐语

ChatGPT的记忆系统竟如此简洁高效!揭秘其四大层级如何实现无缝记忆体验。

核心内容:
1. ChatGPT记忆系统的四大核心层级解析
2. 与传统RAG技术的对比优势分析
3. 开发者如何借鉴这种简洁设计思路

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

2025年在开发创业产品的时候,有一个比较困扰团队的问题就是“记忆”模块怎么写:一方面行业里从Mem0开始各种刷榜SOTA的第三方记忆服务就层出不穷,从RAG到GraphRAG到艾宾浩斯遗忘曲线,怎么高端大气上档次怎么来。另一方面实际一试呢,就非常像接入了一个又一个阿尔兹海默+强迫性幻想综合患者。

正好看到一位印度的AI工程师Manthan Gupta 通过逆向工程拆解了 ChatGPT 的记忆功能。(原文地址:https://manthanguptaa.in/posts/chatgpt_memory/ )

你会发现大道至简,作为大家公认实现得相对较好的记忆系统,ChatGPT没有用 RAG,而且就几层大家都能想到的信息一起输入:

1.会话元数据:时间、设备、是否付费、活跃度等等

2.当前会话窗口的最新会话和所有历史会话记录(超 token 限制的话截断)

3.跨会话窗口的 15 条左右历史会话摘要,只总结用户提问,不总结模型回答

4.user profile 级别的全局记忆,大概几十条,按照特定要求记录的用户姓名职业兴趣等长期事实,或者用户明确要求记录的东西

以下是原文的详细翻译:


我逆向工程了 ChatGPT 的记忆系统,这是我的发现!

作者:Manthan Gupta | 日期:2025年12月9日

当我询问 ChatGPT 记得关于我的什么信息时,它列出了 33 件事,从我的名字、职业目标到目前的健身习惯。它是如何存储和检索这些信息的?为什么感觉如此无缝?

经过大量的实验,我发现 ChatGPT 的记忆系统比我预期的要简单得多。没有向量数据库。没有基于对话历史的 RAG(检索增强生成)。

相反,它使用了四个独特的层级:适应你环境的会话元数据、长期存储的显式事实、近期聊天的轻量级摘要以及当前对话的滑动窗口

这篇博客将详细拆解每一层是如何工作的,以及为什么这种方法可能优于传统的检索系统。这里的所有内容都来自于通过对话逆向工程 ChatGPT 的行为。OpenAI 并没有公开这些实现细节。


ChatGPT 的上下文结构 (Context Structure)

在理解记忆之前,重要的是要理解 ChatGPT 在处理每一条消息时接收到的完整上下文。结构如下:

  • [0] 系统指令 (System Instructions)

  • [1] 开发者指令 (Developer Instructions)

  • [2] 会话元数据 (Session Metadata)(临时性的)

  • [3] 用户记忆 (User Memory)(长期事实)

  • [4] 近期对话摘要 (Recent Conversations Summary)(过去的聊天,标题 + 片段)

  • [5] 当前会话消息 (Current Session Messages)(本次聊天)

  • [6] 你最新的消息

前两个组件定义了高层行为和安全规则,不是本博客的重点。有趣的部分从会话元数据开始。


会话元数据 (Session Metadata)

这些细节在会话开始时注入一次。它们不会被永久存储,也不会成为长期记忆的一部分。这一块包括:

  • 设备类型(桌面/移动端)

  • 浏览器 + 用户代理 (User Agent)

  • 大致位置/时区

  • 订阅等级

  • 使用模式和活动频率

  • 近期模型使用分布

  • 屏幕尺寸、深色模式状态、JS 启用状态等

会话元数据的示例:

Plaintext

Session Metadata: 

- User subscription: ChatGPT Go 

- Device: Desktop browser 

- Browser user-agent: Chrome on macOS (Intel) 

- Approximate location: India (may be VPN) 

- Local time: ~16:00 

- Account age: ~157 weeks 

- Recent activity: 

  - Active 1 day in the last 1 

  - Active 5 days in the last 7 

  - Active 18 days in the last 30 

- Conversation patterns: 

  - Average conversation depth: ~14.8 messages 

  - Average user message length: ~4057 characters 

  - Model usage distribution: 

    * 5% gpt-5.1 

    * 49% gpt-5 

    * 17% gpt-4o 

    * 6% gpt-5-a-t-mini 

    * etc. 

- Device environment: 

  - JS enabled 

  - Dark mode enabled 

  - Screen size: 900x1440 

  - Page viewport: 812x1440 

  - Device pixel ratio: 2.0 

- Session duration so far: ~1100 seconds 

 

这些信息帮助模型根据你的环境调整回答,但在会话结束后,这些信息都不会保留。


用户记忆 (User Memory)

ChatGPT 有一个专门的工具用来存储和删除关于用户的稳定的、长期的事实。这些是数周和数月积累下来的片段,形成了一个持久的“档案”。

在我的例子中,模型存储了 33 个事实——比如:

  • 我的名字、年龄

  • 职业目标

  • 背景和过去的职位

  • 当前项目

  • 我正在研究的领域

  • 健身习惯

  • 个人偏好

  • 长期兴趣

这些不是猜测出来的;只有在以下情况时它们才会被显式存储:

  1. 用户说“记住这个”或“把这个存入记忆”;或者

  2. 模型检测到一个符合 OpenAI 标准的事实(如你的名字、职位或陈述的偏好),并且用户通过对话隐含地同意了。

这些记忆作为一个单独的块被注入到每一个未来的提示词 (Prompt) 中。

如果你想添加或删除任何内容,只需说:

  • “把这个存入记忆……”

  • “从记忆中删除这个……”

示例:

  • 用户的名字是 Manthan Gupta。

  • 曾在 Merkle Science 和 Qoohoo (YC W23) 工作。

  • 偏好通过视频、论文和动手实践混合的方式学习。

  • 构建了 TigerDB, CricLang, Load Balancer, FitMe。

  • 正在研究现代信息检索系统 (LDA, BM25, 混合检索, 稠密嵌入, FAISS, RRF, LLM 重排序)。


近期对话摘要 (Recent Conversations Summary)

这一部分最让我惊讶,因为我原以为 ChatGPT 会在过去的对话中使用某种 RAG。结果它使用的是一个轻量级摘要

ChatGPT 按照这种格式保留了一份近期对话摘要的列表:

1. <时间戳>: <聊天标题> |||| 用户消息片段 |||| |||| 用户消息片段 ||||

观察:

  • 它只总结的消息,不总结助手的。

  • 大约有 15 个摘要可用。

  • 它们充当了我近期兴趣的粗略地图,而不是详细的上下文。

这个块让 ChatGPT 在不拉取完整记录的情况下,拥有跨聊天的连续感。

传统的 RAG 系统需要:

  • 嵌入 (Embedding) 每一条过去的消息

  • 对每个查询运行相似性搜索

  • 拉取完整的消息上下文

  • 更高的延迟和 Token 成本

ChatGPT 的方法更简单:预计算轻量级摘要并直接注入。这是用详细的上下文换取速度和效率。


当前会话消息 (Current Session Messages)

这是目前对话的常规滑动窗口。它包含本次会话中交换的所有消息的完整历史记录(未摘要)。

我无法从 ChatGPT 那里套出确切的 Token 限制,但它确实确认了:

  • 上限基于 Token 数量,而不是消息条数。

  • 一旦达到限制,当前会话中较旧的消息会被移出(但记忆事实和对话摘要保留)。

  • 这个块中的所有内容都逐字传递给模型,保持完整的对话上下文。

这就是允许助手在一次会话中连贯推理的原因。


这一切是如何协同工作的

当你向 ChatGPT 发送消息时,会发生以下情况:

  1. 会话开始:会话元数据被注入一次,给 ChatGPT 提供关于你的设备、订阅和使用模式的上下文。

  2. 每一条消息:你存储的记忆事实(我这里是 33 条)总是包含在内,确保回答符合你的偏好和背景。

  3. 跨聊天感知近期对话摘要提供了你兴趣的轻量级地图,而无需拉取完整的记录。

  4. 当前上下文当前会话消息的滑动窗口保持对话内的连贯性。

  5. Token 预算:随着会话增长,旧消息会被移出,但你的记忆事实和对话摘要保留,保持连续性。

这种分层方法意味着 ChatGPT 可以让人感觉是个性化且具有上下文感知的,而没有搜索成千上万条过去消息的计算成本。


结论

ChatGPT 的记忆系统是一个多层架构,平衡了个性化、性能和 Token 效率。通过结合临时的会话元数据、显式的长期事实、轻量级对话摘要和当前消息的滑动窗口,ChatGPT 实现了一些了不起的事情:它让人感觉个性化且具有上下文感知,却没有传统 RAG 系统的计算开销。

这里的关键洞察是,并非所有东西都需要成为传统意义上的“记忆”。

  • 会话元数据实时适应你的环境。

  • 显式事实跨会话持久存在。

  • 对话摘要提供没有细节的连续性。

  • 当前会话保持连贯性。

这些动态组件结合在一起——随着会话进行和你的偏好演变而更新——创造了一个真正了解你的系统的错觉。

对于用户来说,这意味着 ChatGPT 随着时间的推移会感觉越来越个性化,而无需显式的知识库管理。对于开发者来说,这是实用工程的一课:有时更简单、更精心策划的方法胜过复杂的检索系统,尤其是当你控制整个流程时。

权衡是显而易见的:ChatGPT 牺牲了详细的历史背景来换取速度和效率。但对于大多数对话来说,这正是恰当的平衡。系统记住了重要的事情(你的偏好、目标和近期兴趣),同时保持快速和响应灵敏。

(注:本博文基于通过对话进行的实验和逆向工程,非官方文档——请辩证看待。)


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询