文章总结: 这篇文章介绍了ChatGPT的记忆架构,分析了其四个层次的记忆方案:会话元数据、用户记忆、近期对话摘要和当前会话消息。与预期的向量数据库和复杂RAG检索系统不同,ChatGPT采用简单直接的方法,将所有信息直接注入到上下文中,而非使用本地查询机制。这种设计用详细上下文换取速度和效率,避免了传统RAG系统的复杂性和高成本。文章基于逆向工程分析,非官方文档。
综合评分: 86
文章分类: AI安全,技术分析
超出想象的简单!ChatGPT的记忆方案
原创
chengable
安全产品人的赛博空间
2025年12月12日 14:07
浙江
国外一位老哥逆向了ChatGPT,分析它的记忆方案。
当我们还在讨论向量数据库、复杂检索系统的时候,ChatGPT其实用了一个相当朴素的方案。
没有向量数据库,没有复杂的RAG检索系统,只有四个简单层次的组合。
四层记忆架构
1. 会话元数据(临时层)
在会话开始时注入一次,包含:
- 设备类型(桌面/移动端)
- 浏览器信息和用户代理
- 地理位置/时区
- 订阅级别和使用模式
- 屏幕尺寸、深色模式状态等
这些信息帮助模型根据你的环境调整回应,但不会在会话结束后持久化。
2. 用户记忆(长期事实层)
这是ChatGPT存储的稳定、长期的用户事实。作者有33个存储事实:
- 姓名、年龄
- 职业目标
- 背景和过去角色
- 当前项目
- 学习领域
- 健身习惯
- 个人偏好
- 长期兴趣
这些记忆不是猜测的,只有在以下情况下才会明确存储:
- 用户说”记住这个”或”存储在记忆中”
- 模型检测到符合OpenAI标准的事实(如你的姓名、职位或明确偏好),且用户通过对话默示同意
3. 近期对话摘要(跨会话连续性)
最令人意外的是这一层。我原以为ChatGPT会对过去的对话使用某种RAG系统,但它使用了轻量级摘要:
1. <时间戳>: <对话标题>
|||| 用户消息片段 ||||
|||| 用户消息片段 ||||
特点:
- 只摘要用户消息,不包含助手回复
- 大约15个摘要可用
- 作为用户近期兴趣的松散映射,而非详细上下文
这种设计避免了传统RAG系统的复杂性:嵌入每条过去消息、对每个查询运行相似性搜索、拉取完整消息上下文。
4. 当前会话消息(即时上下文)
当前对话的普通滑动窗口,包含本次会话中所有消息的完整历史(非摘要)。
- 基于token数量限制,而非消息数量
- 达到限制时,当前会话中的旧消息会滚动移除
- 但记忆事实和对话摘要保持不变
- 此块中的所有内容都逐字传递给模型,保持完整对话上下文
工作原理
当你发送消息给ChatGPT时,按以下顺序发生:
- 会话开始:注入会话元数据,提供设备、订阅和使用模式上下文
- 每次消息:存储的记忆事实始终被包含,确保回应与你的偏好和背景一致
- 跨会话感知:近期对话摘要提供轻量级兴趣映射,无需拉取完整记录
- 当前上下文:当前会话消息的滑动窗口保持对话内连贯性
- Token预算:随着会话增长,旧消息会滚动移除,但记忆事实和对话摘要保持不变,保持连续性
关键点
所有信息直接进入上下文
与传统的RAG系统不同,ChatGPT没有本地查询机制。所有相关信息都是直接预注入到上下文中:
每次请求的上下文结构:
[0] System Instructions
[1] Developer Instructions
[2] Session Metadata (会话开始时注入一次)
[3] User Memory (每次都注入)
[4] Recent Conversations Summary (每次都注入)
[5] Current Session Messages (滑动窗口)
[6] 用户最新消息
简单胜过复杂
ChatGPT的方法是预计算轻量级摘要并直接注入。这用详细上下文换取速度和效率。
传统RAG系统需要:
- 嵌入每条过去消息
- 在每个查询上运行相似性搜索
- 拉取完整消息上下文
- 更高的延迟和token成本
这篇文章基于实验和通过对话进行的逆向工程,而非官方文档——所以请谨慎对待
Blog:https://manthanguptaa.in/posts/chatgpt_memory/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全产品人的赛博空间 chengable《超出想象的简单!ChatGPT的记忆方案》