做产品 PMaker 首页
搜索
跟随系统
颜色主题
空格的键盘
所谓「它记得我」,其实是你的系统在替它存和取提取对话结束时,用一个模型调用挑出「以后还用得上」的信息记太多,记忆库很快塞满琐事存储写进记忆库并处理冲突:新记忆和旧记忆矛盾时,更新而不是追加分不清「临时」和「长期」,是最容易出错的地方注入新会话开始时取相关几条拼进系统提示,模型就表现成「还记得我」用户愿意主动告诉你的信息,做成设置项,别让 AI 去猜

模型本身没有记忆。跨会话的「记得」,全部是提取、存储、注入这三步拼出来的。

长期记忆的实现方式

提取、冲突、注入。让模型认识你,代价是什么。

提取、冲突、注入。让模型认识你,代价是什么。

「AI 助手会记住你的偏好」是很有吸引力的卖点。但要先说清楚:模型本身没有任何跨会话记忆。所有的「记得」,都是你的系统在旁边替它存和取

你会遇到的现象:

  • 用户抱怨「上次都说过了,怎么又问一遍」
  • 做了记忆功能之后,它记住了一些莫名其妙的琐事
  • 用户改了偏好,它却还按老的来

三个环节

**① 提取 —— 从这次对话里挑出值得记的。**对话结束(或进行中),由一个模型调用判断:这里面有哪些是以后还用得上的信息?比如「我一般用 Python」「我们公司在深圳」「不要给我发邮件提醒」。

**② 存储 —— 写进记忆库,并处理冲突。**新记忆进来时,要检查和已有记忆有没有矛盾。用户三个月前说「我住北京」,现在说「我搬到上海了」——这两条不能并存,必须更新而不是追加。

**③ 注入 —— 下次对话时取出来放进上下文。**新会话开始时,从记忆库里取出相关的几条,拼进系统提示或开头部分。模型看到这些内容,表现出来就是「它还记得我」。

注意第三步的本质:它和 RAG 是同一套机制——检索出相关内容,塞进上下文,区别只在检索对象是「关于这个用户的事实」而不是「文档片段」。MemGPT 这类研究正是把这个循环显式化了:模型需要一个「操作系统」替它分层存取记忆,这也是生产系统做记忆功能时最常见的蓝本。memgpt

难的是哪几步

三步里,第一步和第二步是真正的难点。

提取难在「什么值得记」没有客观标准。记太多,记忆库很快塞满琐事——用户随口提过的一句玩笑、某次临时的要求,全被当成长期偏好存下来。这些东西之后每次都会被注入上下文,既花钱又干扰判断。记太少又没有价值,用户感觉不到差别。实践中比较可行的是限定类别:只记「长期偏好」「身份事实」「明确的禁止项」这几类,不属于的一律不记。宽泛的「记住重要的事」几乎必然跑偏。

**冲突难在判断哪条该覆盖哪条。**两条记忆矛盾时,通常按时间取新的。但有例外:用户说「这次先用英文」是临时的,不该覆盖「我平时用中文」这条长期偏好。区分「临时」和「长期」是这一步最容易出错的地方。

还有一类隐蔽的问题:记忆是模型提取的,它可能提取错。一条错误记忆一旦存进去,会持续影响之后所有对话,而且很难被发现——用户不知道系统在背后记了什么。

代价

做记忆功能,成本比想象中高,三笔账要算清。

**一、每次对话多出提取的调用。**这是额外的模型开销,用户看不见但你要付钱。

**二、每次对话开头多出注入的内容。**注入的记忆占据窗口,而且每一轮都要重发。记忆越多,这笔固定开销越大。

**三、隐私和合规成本。**这条最容易被低估。你在持续存储用户的个人信息,直接涉及隐私政策、数据留存期限、用户的删除权。做之前必须让法务过一遍。

产品上还有一条必须做的:**让用户能看到和删除自己的记忆。**一个「AI 记住了关于你的这些事」的页面,允许逐条删除。这既是合规要求,也是信任基础——用户发现系统在背后记了一堆他不知道的事,反弹会很大。

该不该做

给一个务实的建议:先别做通用记忆,从几个明确的字段开始。

很多产品其实不需要一套完整的记忆系统。你要的可能只是记住用户的语言偏好、行业、常用格式——这些完全可以做成显式的设置项,让用户自己填。可预测、可修改、零提取误差、零隐私争议,成本几乎为零。

判断标准:如果这个信息用户愿意主动告诉你,就做成设置项,别让 AI 去猜。

真正需要自动记忆的,是那些用户不会主动填、但确实影响体验的东西——工作习惯、常犯的错误、偏好的表达方式。这类才值得上一整套提取和冲突处理。

还有一条边界要划清:**记忆存的是「关于用户的事实」,不是「用户的全部聊天记录」。**后者是日志,属于另一件事,两者的存储方式、保留期限、合规要求都不同,别混在一起做。

参考资料

  1. MemGPT: Towards LLMs as Operating Systems — arXiv