← 博客

AI 记忆是如何工作的:情景记忆、语义记忆与画像记忆

发布于 2026-07-04 · 更新于 2026-07-04

AI 记忆的工作原理,是把一次对话里发生的事情存下来,提炼成可复用的事实,然后在需要时把相关的片段重新放回模型的上下文窗口。大多数系统会把这件事分为三层:情景记忆(带时间和情境的原始事件)、语义记忆(提炼出的事实)、以及画像记忆(关于你的稳定偏好)。这套分类借自认知科学。

为什么「记忆」这件事本身需要解释

大语言模型自身在两轮对话之间没有记忆。每一次请求都是无状态的:模型只看得到放入它上下文窗口的文本,生成一个回复,然后不保留任何内容。如果你想要一个能记住你名字、你的项目、或上周某个决定的助手,那就需要有模型之外的东西把这些信息存起来,之后再重新插入。

这件事之所以重要,是因为上下文窗口有限;而且即便窗口很大,模型也不会均匀地使用它。论文《Lost in the Middle: How Language Models Use Long Contexts》(中间迷失:语言模型如何使用长上下文,Liu et al., 2023)发现,模型的表现「往往在相关信息出现在输入上下文的开头或结尾时最高,而当模型必须在长上下文的中间部分获取相关信息时,表现会显著下降」。你无法简单地把整段聊天记录一股脑倒入提示词,然后指望模型自行找到关键内容。记忆系统存在的意义,就是做筛选。

借用的那套认知科学

心理学家 Endel Tulving 在 1972 年划出了一个如今已成标准的区分——人类的长期记忆分两种。情景记忆是「对日常事件的记忆」——时间、地点、伴随的情绪、以及其他情境细节。它是那种记起某段具体经历的真切感受,锚定在一种主观的时间感中。相比之下,语义记忆是关于世界的一般知识:词义、概念和事实。关键在于,「语义记忆的内容并不绑定在任何一次具体的经历上」。它是从许多经历中抽象出的要义

一个经典的例子:你知道猫是什么(语义),并不需要回想起某个下午你摸过某一只具体的猫(情景)。

这是一个类比,应当松散地看待。AI 系统并没有自我觉知的意识,也没有对过去的真切感受。但这个区分是一个切实有用的工程视角,因为它干净地对应上两种不同的存储任务:留住原始记录,以及留住提炼后的结论。

把这三层映射到 AI 系统上

**情景记忆 → 原始文字记录和事件。**逐字记下说了什么、何时说的、在哪一场对话里说的。这种记录保真度高,但检索代价大,整段塞入又过于臃肿。它是那个你随时可以回溯查证的基准事实。

**语义记忆 → 抽取出的、结构化的事实。**系统从原始的情景片段中提炼出耐久的陈述:「用户正在用 React Native 做一个移动 app」「用户的截止日期在三月」。这些事实紧凑、可检索、可跨会话复用。提炼这一步——通常是另一次 LLM 调用,读取最近的文字记录并输出候选事实——正是关键的工程所在。

**画像记忆 → 稳定的偏好和身份。**这是语义记忆中一个特殊的切片,装的是变化缓慢的属性:你的名字、语气偏好、反复出现的目标。因为这些几乎总是相关的,有些系统会把画像保持得很小,并几乎在每一条提示词里都注入它,而非有条件地检索。

这种分层思路呼应了《MemGPT: Towards LLMs as Operating Systems》(MemGPT:把 LLM 做成操作系统,Packer et al., 2023)对这个问题的构想。那项工作提出「虚拟上下文管理」,灵感来自操作系统在快慢内存之间分页数据的方式,目的是「通过在快慢内存之间搬运数据,制造出拥有大容量内存资源的假象」。活跃的上下文窗口是快内存;外部存储是慢内存;系统按需在两者之间搬运相关的事实。

回答问题时召回是如何发生的

当你发出一条新消息时,一个配备记忆的系统在模型真正开始生成回复之前,大致会执行这些步骤:

  1. 读取进来的消息,通常还会读最近几轮对话。
  2. 在记忆库里检索与之相关的条目。这一步通常是相似度搜索——把查询和存储的记忆都嵌入成向量,返回最接近的那些匹配项——有时还会结合关键词过滤或近期加权。
  3. **选出一组受预算限制的记忆。**只有最靠前的那几条记忆能被选中,因为上下文空间稀缺,而且正如《Lost in the Middle》所展示的,把提示词塞满反而适得其反。
  4. 把它们注入提示词,通常放在一个专门的区块里,然后再把整个内容交给模型。
  5. 在这些记忆在场的情况下生成回复。

从外部看,感觉像助手「记住了」。但从机制上讲,只是在恰当的时刻,把恰当的事实检索出来,摆到一个无状态模型的面前。设计良好的系统还会把注入的记忆清楚地隔离开——把它们标记为检索到的数据而非指令——这样从过去某次对话里召回的文本,才不会被误当成一条新命令。

抽取为什么会出错

从对话中提炼事实是有损的,而且失败模式可以预料:

  • **误解。**抽取器把一个假设当成了承诺。你说「我可能会搬去柏林」,它却存下「用户住在柏林」。
  • **过期。**某个事实在被捕获时是真的,现在却错了。你换了工作,旧雇主仍留在记忆里,给每个回答都染上颜色。
  • **矛盾。**两次会话产出了互相冲突的事实——「偏好简洁的回复」和「偏好详细的解释」——两条都留在库里,往相反的方向拉扯。
  • **过度抽取。**系统存下了永远不会相关的琐事,把检索结果搞得杂乱,把真正重要的东西挤了出去。

这些都不是罕见的异常。它们是把杂乱的自然语言转化为整齐的结构化断言时,正常要付的代价。

系统如何协调更新

因为事实会变,记忆库在实践中不可能只追加。合理的系统这样处理更新:

  • **写入时检测冲突。**当一个新事实与已有事实矛盾时,系统会把这一对标记出来,而非不声不响地两个都保留。
  • **取代而非重复。**较新的事实替换或取代较旧的那个,理想情况下还会保留一条审计轨迹,以便误覆盖可以被撤销。
  • **给一切都打时间戳。**近期性成了打破平局的依据:当两个事实相互矛盾时,通常是更近的那个胜出。
  • **偏好纠正而非累积。**目标是一个准确的小集合,而非一个庞大而完整的集合。

微妙之处在于:更大的记忆并不等于更好的记忆。一个塞满过期和矛盾事实的库,产出的答案比一个精简、及时的库要差。

把遗忘当成一项功能

在人类身上,遗忘常被视为一种失败。而在 AI 记忆里,刻意的遗忘是一个设计目标。如果检索浮现出一个过时的事实,模型会忠实且自信地用上它。删除过期记忆,是提升输出质量最廉价的手段之一。

这体现为衰减——给那些很久没有被强化或访问过的记忆降权或让它们过期——以及垃圾回收,把那些已被取代、且过了安全期限的事实剪除。两者都让可检索的集合保持精简,从而提高检索精度;而且由于「中间迷失」问题的存在,也提升了模型对被注入内容的利用程度。遗忘不是数据丢失,而是策展。

给用户的记忆卫生习惯

如果你在使用一个带持久记忆的工具,那你实际上就是它的共同策展人。几个习惯能让它持续为你所用:

  • **定期检视。**扫一眼系统声称它了解的关于你的那些内容。大多数会存记忆的工具都允许你查看这份清单。
  • **纠正错误的。**如果某个事实是被误读的假设、或已然过时,就把它改掉。一次纠正就能止住一个反复出现的错误假设。
  • **删除过期或私密的。**移除那些你不再希望影响答案的事实,或你根本不想被存下的事实。小而及时,胜过大而完整。
  • **对变化说明白。**当某件重要的事发生变化时——新工作、新目标——直接讲出来。清晰的陈述,比随口一提能更可靠地被抽取。

要带走的心智模型是:AI 记忆不是一颗会回想的心智。它是一套归档系统,把事件存下来,提炼成事实,在恰当的时刻把相关的那些递到一个健忘的模型面前。它的质量,与其说取决于存了多少,不如说取决于把那个库维持得有多准确——而这恰恰是为什么遗忘、以及你偶尔的检视,都是这套设计的一部分。

常见问题

AI 模型自己会记住我们过去的对话吗? 不会。模型在两次请求之间是无状态的。任何记忆都来自一个独立的系统,它把信息存起来,每次再把相关的片段重新注入提示词。

AI 里的情景记忆和语义记忆有什么区别? 情景记忆是事件的原始记录(说了什么、什么时候、在什么情境下)。语义记忆是从这些事件中抽取出的、经过提炼、可复用的事实。这个区分借自认知科学,Tulving 在 1972 年划出了它。

为什么删掉记忆有时反而让 AI 变得更好? 因为一个过期或错误的存储事实会被检索出来、并被自信地使用。删掉它就能避免糟糕的答案,而更小的库也能提升检索精度——模型对更短、更聚焦的上下文的利用,也比对又长又注水的上下文更可靠,正如《Lost in the Middle》所言。

系统就不能把所有东西都塞进一个大上下文窗口,而不用记忆吗? 上下文窗口有限,而且即便很大,也被用得不均匀——一条长提示词中间的相关信息常常被漏掉。有选择的检索,就像《MemGPT》里那套分层思路,比把所有东西都倒进去更管用。

为什么 AI 记忆有时会把关于我的事实搞错? 从自然语言中抽取是有损的。一个假设可能被当成承诺存下来,一个一度为真的事实可能会过期,两次会话也可能产出互相矛盾的事实。好的系统会通过取代旧事实、给更新打时间戳来协调这些冲突。