找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1622

积分

0

好友

232

主题
发表于 6 天前 | 查看: 22| 回复: 0

今年4月,OpenAI为ChatGPT推出了记忆功能,使其能够引用过去的聊天记录,从而提供更个性化的回复。这项功能引发了广泛的好奇:它究竟是如何存储和检索这些海量对话信息的?

近日,研究者Manthan Gupta通过一系列实验,对ChatGPT和Claude的记忆系统进行了逆向工程分析。他发现,两大主流模型的记忆实现方式各有特色,且都比预想的更为精巧高效。

图片

一、ChatGPT的记忆系统:四层架构

在剖析记忆架构前,需先理解ChatGPT处理每次对话时所接收的完整上下文结构:

[0] 系统指令
[1] 开发者指令
[2] 会话元数据(临时)
[3] 用户记忆(长期事实)
[4] 近期对话摘要
[5] 当前会话消息
[6] 用户的最新消息

其中,系统与开发者指令定义了模型的高层行为与安全规则。记忆功能的核心则由以下四层架构实现:

1. 会话元数据

这部分信息在每次会话开始时注入,不会被永久保存。其内容包括设备类型、浏览器、大致时区、用户订阅级别、近期活动频率、模型使用分布以及屏幕偏好等。这些元数据帮助模型适应用户的当前环境,但会话结束即失效。

2. 用户记忆(长期事实)

这是实现个性化的关键。ChatGPT使用专用工具存储关于用户的稳定、长期的数据点(Facts),例如姓名、职业目标、项目经历、个人偏好等。这些信息通常在用户明确指令(如“记住这个”)或模型检测到用户隐含同意时被存储。这些Facts会作为独立的数据块注入到未来的每一个提示中,形成持久的用户画像。对人工智能模型而言,这种明确的长期记忆是实现高度个性化交互的基础。

图片

3. 近期对话摘要

令人意外的是,ChatGPT并未采用传统的RAG(检索增强生成)技术来检索完整历史。相反,它使用了一种轻量级的摘要机制,格式类似于:

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

模型仅保留约15条这样的摘要,它们并非详尽记录,而是勾勒出用户近期兴趣的轮廓,以极低的Token成本维持跨对话的连贯性。

4. 当前会话消息(滑动窗口)

这是正在进行的对话的完整记录,确保会话内的推理连贯。但受限于Token预算,当对话长度超过窗口限制时,最早的消息会被移出窗口,而前述的长期记忆和对话摘要则不受影响。

协同工作流程

  • 会话开始:注入一次会话元数据。
  • 每条消息处理:均包含长期用户记忆Facts。
  • 跨会话感知:通过近期对话摘要实现。
  • 会话内连贯性:由当前消息的滑动窗口保证。
    这种分层设计使ChatGPT具备了强大的个性化和上下文感知能力,同时避免了为每次查询检索全部历史带来的高昂计算成本,相比传统的RAG方案更为高效可控。

二、Claude的记忆系统:按需检索

逆向ChatGPT后,Manthan Gupta又对Claude的记忆系统进行了分析。他发现Claude采用了截然不同的策略:按需工具调用与选择性检索,而非预先注入摘要。

Claude的提示结构如下:

[0] 系统提示(静态指令)
[1] 用户记忆
[2] 对话历史
[3] 当前消息

1. 用户记忆

与ChatGPT类似,Claude也以XML格式存储用户的精简、稳定事实(如姓名、工作、偏好)。记忆更新分为两种方式:隐式(根据对话在后台定期更新)和显式(用户通过“记住这一点”等指令直接编辑)。

2. 对话历史:三种机制协同

这是Claude与ChatGPT最大的不同之处,它采用了更复杂的多机制方案:

  • 滚动窗口:存储当前对话的完整消息,约19万Token的上下文预算,超出则丢弃旧消息。
  • conversation_search工具:允许Claude在认为需要时,主动按主题或关键词搜索过去的对话。
  • recent_chats工具:允许Claude根据时间范围检索最近的对话。

这两种工具的响应会以包含标题和消息片段的格式返回,仅在模型判定相关时才会被调用。

协同工作流程

  • 系统提示和用户记忆提供持续背景。
  • 滚动窗口维持当前会话连贯。
  • 当模型推断需要更多历史上下文时,会主动调用搜索工具进行检索。
    这种设计更加高效(不浪费Token在无关历史上),但也对模型的判断能力提出了更高要求——如果它未能检索相关上下文,可能会错过重要信息。

三、架构对比与思考

通过逆向工程,我们可以清晰地看到两种设计哲学:

  • ChatGPT:采用预计算、分层注入的架构,通过会话元数据、长期记忆、近期摘要和滑动窗口四层,确保每次回复都具备连贯性与个性化,确定性较高。
  • Claude:采用按需检索、工具驱动的架构,将长期记忆与当前窗口作为基础,把对深度历史的上文依赖交给模型主动判断和工具调用,灵活性更强。

这两种方案都是对海量对话上下文管理的精妙探索,旨在平衡个性化体验、计算成本与响应速度。对于开发者和研究者而言,理解这些底层机制,有助于更好地设计与大模型交互的策略,并启发自身AI应用中对记忆模块的实现。


本文基于Manthan Gupta的逆向工程研究,原文地址:




上一篇:VSCode远程开发配置全攻略:实现多设备跨环境无缝编码
下一篇:LangChain数据流与避坑指南:RAG与Agent场景的实战解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 23:12 , Processed in 0.152611 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表