AI 的「记忆」是怎么实现的,存在哪

2小时前发布

AI 的「记忆」是怎么实现的,存在哪

上个月说过的事,这个月它全忘了。同一款产品,有人发现它记得自己喜欢简洁回答,有人发现换个窗口就什么都不记得。这些差别不是玄学,背后是几套不同的机制在起作用。

「记忆」这个词被用得很松。它有时指上下文窗口,有时指放在服务器上的对话记录,有时指模型权重里学到的知识。三件事完全不同,混在一起谈就会得出矛盾结论。

最浅的一层:上下文窗口

最原始的记忆就是当前这段对话。你说过的话、它答过的话,都在窗口里,它每一步都能看到。这是它能接上话、能理解「刚才提到的那个东西」的原因。

窗口是有限的。算到上限,最早的内容会被挤出去。挤出去之后它就不记得了,表现是突然问「你刚才说谁」,或者把前面已经明确的条件忘了。

窗口记忆的特点是即时、精确、随会话结束而消失。关掉页面,这一层就清空了。

档案室里成排的灰 {MOD}铁皮文件柜,几个抽屉半开

第二层:对话历史的回填

很多产品在你再次打开同一个会话时,会把之前的历史拼回上下文里。看起来像记住了,实际是把旧内容重新塞进窗口。

这种做法有上限。历史越长,占的窗口越多,留给本次对话的空间越少。所以产品会做取舍:只回填最近若干轮,或者对早期内容做摘要。

摘要这一步是有损的。原本二十轮对话被压成三百字,细节、语气、具体条件都会丢。你在第三轮说过「预算不超过八万」,摘要里变成「有预算限制」,后面它给你的方案就超了。

跨会话的偏好记忆

有些产品会单独存一份用户画像:职业、常用语言、回答偏好、正在做的项目。这份东西每次对话开头被注入,效果是它一直记得你是谁。

这份画像由谁写、什么时候更新、能不能关,各家不同。有的产品让你在设置里看和改,有的完全在后台生成。作为用户,值得花两分钟找一下这个开关在哪。

第三层:外挂的记忆库

再往上一层,是把记忆放到模型外面。做法是把历史对话、文档、笔记切成段落,转成一组数字向量,存进数据库。每次提问,先按相似度检索出最相关的几段,再拼进上下文。

这套东西业内叫检索增强。它的好处是容量不受窗口限制,存几万条不算多。坏处是检索不一定准:你问甲,它捞出来的是讲了甲但重点在乙的段落,回答就偏了。

检索质量取决于切分方式和检索策略。切得太碎,一段话被劈成三截,语义断了;切得太粗,一段里混着五个主题,捞出来一半用不上。这类调优很琐碎,效果差别却很大。

还有一层是时效。向量库里的旧文档不会自动作废,价格改了、政策换了,旧内容仍然躺在库里等着被捞。所以带记忆的产品要配一套清理机制,谁改、多久清一次、旧版本留不留,这些定不下来,检索就会把过时信息当现行标准用。

第四层:写进模型权重

最彻底的一层是把信息写进模型本身,靠微调。把企业自己的术语、产品参数、常见问答做成训练样本,跑一轮微调,模型就把这些内容当成自己的知识。

这一层的特点是稳定、不占上下文、不需要检索。代价是更新麻烦——要改一条内容,得重新跑一轮训练。所以它适合放那些长期不变的东西,不适合放每天都在变的信息。

办公桌上摊开的纸质笔记本,夹着几张空白便利贴

四处存放位置的区别

一处是对话记录,放在产品方的数据库里,按会话编号归档。你翻历史记录能看到,产品方后台也能看到。

一处是用户画像和长期偏好,同样放在数据库里,跟账号绑定,单独一张表。

一处是向量库里的文档片段,位置也许是云端,也许在企业自己的服务器上。

还有一处是模型权重里的知识。这部分不叫记忆,叫训练结果。你改不了,也删不掉,只能通过换模型来换掉它。

明白这四处的区别,很多困惑就有答案了。「换个窗口就忘了」是因为只用到了最浅那层;「记得我的偏好」是画像表起了作用;「它知道我公司的产品参数」多半是文档被检索到了。

为什么它老是记不住

三种典型的丢失

被截断。长对话聊到后面,早期内容被挤出窗口。这不是故障,是设计上的取舍。

检索没命中。你问的方式和文档里的表述差得远,相似度算出来低,那段内容就没被捞上来。换个说法再问一次,答案立刻就有了。

信息本身矛盾。你在两个会话里给过不同的条件,系统不知道该信哪个。有的产品会取最新的,有的会混着用,结果就是前后不一致。

摘要丢了细节。前面提到的数字、日期、专有名词,在压缩过程中被抹平。这类丢失最难发现,因为整体意思还在,只有细节错了。

怎么分辨是哪一种

换个说法再问一遍,它能答上来,说明之前是检索没命中,问题出在表述差异上。换了说法还答不上,说明内容根本没进库,或者被截掉了。

问它「我刚才说过什么」,如果它复述的前几轮准确、再往前就断,那是窗口截断。如果它把前面几轮的细节说岔,那是摘要压缩导致的失真。

企业用的时候要注意什么

数据留存。对话记录放在哪里、留多久、谁能看,这些在采购时要问清楚。涉及客户信息、报价、工艺参数的对话,留在第三方服务器上有合规风险。

记忆的污染。多人共用一个账号时,甲的习惯会被当成全体偏好,乙用起来就觉得别扭。团队场景要给每人独立账号。

错误记忆的清理。一旦某条错误信息进了画像或知识库,它会持续影响后续所有回答。发现答错,要去源头改,不能只在对话里纠正一句。

书架上一排贴了 {MOD}标的收纳盒,其中几个被抽出来

想让它记住,怎么给

给稳定的事实,别给会变的状态。「我们公司做五金件表面处理」这类信息适合长期记住;「这个月主推某个型号」这类会变,说了它记住反而是负担。

一次给全,别分次挤。同一个事实分五轮说完,中间容易被截断,也容易被摘要揉碎。

明确说这是一条要长期遵守的规则。含糊地说「我比较喜欢简洁」,它也许当成这次的要求;说「以后所有回答都先给结论,不超过三句」,被当成规则的机会高得多。

做一个长期项目时,把背景写成一段固定的话,每次开新会话先贴一遍。这段话包括项目是做什么的、当前进行到哪、有哪些固定约束。三十秒的动作,省掉后面反复解释的麻烦,也避免它拿上一个项目的记忆来套这一个。

重要的东西自己留一份。别把关键信息只交给它的记忆,模型换代、产品改版、账号迁移,任一环节都可能让它清零。手里有一份原始记录,重开一段对话时贴回去就行。

最后一条经验:把长期记忆当成缓存,不当成档案。缓存能加速,会失效,也能被清掉。真正要留的东西,还是得自己有个地方存着。