1953年,美国外科医生William Scoville给一位顽固性癫痫病人做了一台后来写进所有神经科学教材的手术。病人叫Henry Molaison,学界习惯称他H.M.。当我做AI大模型应用、天天被AI记忆问题折磨时,总会想起这台手术——因为大模型一学新任务就忘旧知识、AI agent跑长任务丢上下文、AI幻觉凭空编造细节,这些困扰在70年前的手术台上就已经预演过了。为了控制药物无效的癫痫发作,医生切除了H.M.双侧大脑内侧颞叶,包括海马体。手术本身达到了控制癫痫的目的,代价却极其沉重:他再也无法把新经历变成长期记忆。每次见到同一批医生,他都像第一次见面;问起几分钟前吃过的午饭,他会愣住。这大概是我见过最干净的“记忆缺陷”实验。这篇文章想把这台手术和AI记忆问题放在一起拆,先还原手术本身,再解剖AI的记忆机制,最后给出一套能直接落地的记忆系统和防遗忘方案。
1. 70年前的那台手术到底切了什么
1.1 一台善意的手术,意外拆开了记忆的“黑盒”
H.M.在手术前已经和严重癫痫搏斗了十几年。常规药物拿他的病情没什么办法,发作频率高到没法正常生活。1953年,Scoville医生判断病灶很可能在内侧颞叶区域,决定做一次大胆的切除。那时候没有今天的影像导航和电生理监测,手术范围很大程度上靠解剖知识和临床经验判断。切除范围是双侧内侧颞叶:海马体、杏仁核、内嗅皮层以及周边白质一起被拿掉。从现代神经外科的角度看,这个决策相当激进,但在当时已经是病人反复权衡后的最后选择。
手术对癫痫确实有效,发作频率大幅降低。可当H.M.从麻醉中醒来,所有人都发现事情不对劲。他能正常说话、正常认人,也能记住手术前很多年前的童年往事,但手术之后发生的事情,几乎一个都记不住。护士走进房间,他可以友好地聊上十分钟;护士离开几分钟再回来,他完全不记得见过这个人。给他讲一个笑话,他能笑一次;再过五分钟讲同一个笑话,他还会笑——因为在他脑子里,这就是第一次听到。
这个案例真正厉害的地方,在于它把“记忆”这个模糊概念切成了一片片可研究的对象。H.M.保留的是程序性记忆:他还能学习镜像画五角星这类技能,虽然每次练习都声称自己从未做过。他遗失的是陈述性记忆中的新情景和新事实:新认识的人、新的地点、刚说的话、刚做的事,统统到不了长期存储。换句话说,手术没有摧毁他大脑里已有的“存储文件”,而是毁掉了把新经验写进存储的“编码器”。
1.2 记忆不是一块硬盘,而是一套“编码+提取”管线
很多人理解记忆,第一反应是容量。但H.M.告诉我们,记忆的瓶颈往往不在存储容量,而在编码和提取。他手术前的旧记忆完整、提取顺畅;手术后的新经验没法编码入库;即便某些技能能通过大量练习被慢慢写进去,他也完全无法主观提取——问他“怎么学会的”,他答不上来。这说明记忆系统至少分成两条管线:陈述性记忆走“海马体快速编码+皮层长期存储”的路线,程序性记忆则另有通道。
用今天的话来说,一个可用的记忆系统至少要能完成三件事:编码(把新信息变换成可存储的形式)、存储(持久化)、提取(按需找回)。其中任何一环失效,表现就是“失忆”。70年前人们对这套机制一无所知,H.M.的手术像一束探照灯,把这条管线照亮了。后来神经科学在此基础上发展出互补学习系统理论:海马体负责快速、稀疏地编码近期经验,大脑皮层则通过缓慢的重复整合,把统计规律渐进地固化下来。海马体就像一块临时白板,频繁写入、快速覆盖;皮层相当于仓库,货物要一件一件慢慢分类上架。两者速度天然不一致,反而保护了旧知识不被新知识冲掉。
这套机制放到今天的AI工程里,几乎可以直接拿来当系统设计蓝图。你去看一个成熟的大模型应用,表面上处理的是“记忆”,骨子里要解决的还是编码、存储、提取三个环节。很多团队把全部精力砸在提高参数量、加大上下文窗口上,结果该忘的还是忘,问题恰恰出在他们只盯着“仓库容量”,忽略了编码策略和提取通道。
1.3 神经科学早就给出的答案:别用一套系统包办所有记忆
互补学习系统最值钱的一点,是它解释了为什么人脑能做到“既不忘旧知识,又能学新东西”。快速编码系统容量有限但写入迅速,慢速整合系统容量巨大但更新缓慢。新信息先进海马体,再在睡眠等离线阶段被反复重放给皮层,慢慢固化成长期记忆。旧知识不是被锁死的,而是通过“新记忆暂时隔离、缓慢整合”的方式,避免被快速覆盖。
这个“双速记忆系统”的思想,后来被AI研究者搬到机器学习里,变成对付灾难性遗忘的一把钥匙。什么是灾难性遗忘?你训练一个模型识别猫,训得特别好;然后让它学习识别狗,发现猫也不会认了。因为所有知识共用一套参数,新任务带来的梯度更新会直接覆盖旧任务的决策边界。人脑不会犯这个错,因为有海马体这个“暂存区”把新知识挡住了,不会立刻动旧皮层。AI没有这个结构,于是新知识一进来就打脸旧知识。理解了这一层,再看后面所有防遗忘方案——经验重放、弹性权重巩固、LoRA、RAG——你都能一眼看出它们在模仿人脑的哪个部件。
2. AI的“记忆问题”和H.M.到底像在哪里
2.1 大模型的“记忆”,本质是写在权重里的旧知识
先明确一个容易混淆的点:大模型并不是像数据库一样“存”知识,它是在训练阶段把海量语料中的统计规律压缩进神经网络权重。训练结束后,模型就被冻结了。你每次调用它,做的事情本质上是“从权重中提取当时学到的记忆”,不是“去查一个知识库”。这就像H.M.手术后的状态:提取机制保留了,编码机制没了。对冻结的模型来说,训练完成的那一刻就是“手术”完成的那一刻,之后你想往它脑袋里塞任何新知识,普通推理根本没有入口。
这也是为什么很多非技术背景的人会困惑:明明我告诉AI我的名字叫某某,它怎么换个会话就忘了?因为你说的那句话只临时存在于上下文窗口里,没有进入权重。就像H.M.听到你的名字,几秒钟后整个记忆就蒸发了。想让模型真正“记住”一个跨会话的事实,要么把信息变成权重的一部分(微调,风险大),要么把信息放在模型外部的记忆系统里(RAG、数据库,风险小)。这个选择,后面实操部分细说。
2.2 灾难性遗忘:学新任务时,旧任务被“手术切除”
灾难性遗忘是AI领域最著名的现象之一。我见过一个挺典型的案例:有人用一批金融领域问答数据微调一个通用大模型,想把模型变成“金融专家”。调完之后,金融问题答得像模像样,可模型的通用知识明显退化——聊科技、聊历史、甚至日常寒暄都变生硬了,有些回答还出现更多幻觉。这就是因为微调时梯度更新不只动了“金融参数”,把整个权重矩阵里存储的通用知识一并碾压过去。
人脑遇到新信息会先交给海马体暂存,不会立刻去改皮层的旧知识。神经网络做不到这种隔离,所以一次全量微调就等于给模型做了一场大面积手术,你不知道哪些记忆会被切掉。H.M.的手术是外科医生主动切掉了海马体,导致新记忆无法写入;AI的灾难性遗忘则是反向的悲剧:新记忆强行写入,反倒破坏了旧记忆。一个“写不进去”,一个“一写就砸”,现象相反,根子相同——缺少一个把新旧知识隔离开的缓冲系统。
ML领域很早就发现这个现象,也尝试过很多对策。最有名的一个思路叫弹性权重巩固,做法是统计每个参数对旧任务的重要性,重要参数在学新任务时调小更新幅度,不重要的参数随便学。这等于给模型的旧记忆贴上了“手术中请勿触碰”的标签。原理直接源自我们对大脑突触可塑性的理解,只是人脑用突触机制实现,AI用数值约束实现。
2.3 上下文窗口对应工作记忆:装得下,不代表记得住
H.M.的另一个特征是工作记忆和长期记忆解耦。他能在几秒钟内记住一句话并复述,说明工作记忆完好;但一旦注意力转移,信息就彻底消失。今天的AI也有类似分层:上下文窗口就好像一段“工作记忆”,能容纳几万甚至几十万个token,在当前对话里,模型可以引用这些内容。但上下文一截断、一翻页,或者新开一个会话,这些内容就没了。你问它之前说过什么,它一脸茫然——跟H.M.被转移注意力后忘记刚才见过的人,几乎同款表现。
做AI agent的人对这个痛点应该深有体会。Agent执行一个多步骤任务,中间步骤的结果存在上下文里,等执行到第四步的时候,上下文可能已经被新的中间结果挤爆,第一步的内容被裁剪掉了。于是agent表现得像“失忆”一样,或者越跑越混乱。问题不是模型能力不够,而是工作记忆和长期记忆之间缺少一个“持久化”环节。Agent的上下文是易失的,记忆库才是不易失的。该把哪些中间状态写盘、哪些信息该进长期记忆,恰恰是设计记忆架构时最花心思的地方。
2.4 幻觉,其实是“提取失败后的编造”
最后说AI幻觉。很多人认为幻觉是模型“不懂装懂”,但拆到记忆机制层面,一部分幻觉就是记忆提取失败后的合理虚构。神经科学里有一个词叫confabulation(虚构症),患者记忆空白时,会不自觉用旧记忆碎片填补,讲出来煞有介事,自己完全相信。H.M.因为无法编码新记忆,当你问他某件新事,他只能从旧记忆里找素材拼一个答案,这就是典型的虚构式反应。
大模型出现幻觉的路径也很像:它内在的语义记忆(权重里的知识)本身是碎片化的,当你问的内容不在正确的记忆通道上,模型会激活一批相近的语义碎片,按最高概率拼接出显然合理但不正确的回答。它不知道自己在编,因为生成过程本来就是一个“基于概率的提取和重建”过程。所以降低幻觉不能只从提示词下手,更要让模型的输入带有真实记忆上下文——这正是RAG能起效的原因:它给模型提供了可核对的“外部记忆”,减少它凭碎片瞎拼的机会。
2.5 症状对照表:H.M.病例与AI现象的映射
| H.M.的症状 | AI中的对应现象 | 共同根因 |
|---|---|---|
| 手术后无法形成新陈述性记忆 | 长对话结束、会话切换后忘记前文 | 有提取能力,但没有持久化写入 |
| 旧记忆保留,新记忆进不来 | 微调新任务后通用能力明显退化 | 新旧知识共享存储,缺乏缓冲隔离 |
| 能学会镜像画星,但不知自己会 | 模型能按工具调用完成任务,但无法复述过程 | 程序性记忆与陈述性记忆分离 |
| 用旧记忆碎片填补记忆空白 | 回答中出现AI幻觉,编造看似合理的细节 | 记忆提取失败,却仍执行生成 |
这张表基本就是这篇文章的骨架。读懂它,也就看懂了AI记忆问题的解决方案为什么是那个方向。
3. 从神经科学借来的“记忆修复”方案
3.1 RAG:给AI装上“体外海马体”
先讲最常用、最立竿见影的一个方案:检索增强生成(RAG)。做法不复杂:把外部知识切块、用嵌入模型转成向量存进向量库;用户提问时,先从向量库里检索最相关的片段,再把这些片段和问题一起送到大模型,让它基于这些内容回答。模型的权重不用动,新的知识却能被“当场记住”并用来回答。
为什么说这是“体外海马体”?因为RAG把原来必须由模型内部完成的记忆编码,外包给了外部的向量库和检索链路。向量库可以不断写入新文档、新对话记录、新事实——相当于一个快速写入的“暂存区”;推理时通过相似度检索把最相关的记忆取出来,拼进上下文,相当于“提取旧记忆”。模型的权重保持不变,旧知识不会被新写入破坏。这正是H.M.缺少的那块东西:一个放在模型外面的、可以持续写入的记忆区。
RAG的工程细节会影响好不好用。文本切块大小直接决定检索命中率,我一般默认切500个token左右、重叠50到100个token,这样既不会把一句话拆得太碎,也不会让单个chunk塞进太多无关内容。嵌入模型选通用模型基本够用,知识越垂直,越值得专门调embedding。检索回来的topK我习惯取5到10个,再加一轮重排模型,把最相关的片段排到前面。这套组合拳能解决大部分“模型知识旧、记不住新事实”的问题。
3.2 经验重放:让模型睡一觉再上岗
神经科学里有一个特别形象的现象:睡眠时,海马体会把白天的记忆反复“重放”给大脑皮层,帮助新记忆固化,同时减少新旧记忆冲突。AI这边的思路叫经验重放,最早用于强化学习,后来被搬到持续学习里对抗灾难性遗忘。做法就是在训练新任务时,把旧任务的样本混进来一起训练,让模型在学新样本的同时,也不忘复习旧样本,相当于人工制造“睡眠重放”。
实操上,我最常用的做法是微调时保留一批高质量通用数据,按固定比例混进训练集。比如训练集中新领域数据占70%,旧通用数据占30%,这样模型在学金融术语、产品知识的同时,还会定期看到常识问答和通用对话样本,旧能力不容易崩。比例怎么定?取决于新旧任务相差多大。如果新任务和旧任务语法、格式差异很大,旧数据比例要更高;如果只是换一批垂直名词,20%到30%的旧数据就够。永远不要拿纯新数据做全量微调,这是我在踩过坑之后最想强调的一句。
3.3 EWC与低秩微调:给旧记忆划定“手术禁区”
如果说经验重放是“边学边复习”,弹性权重巩固(EWC)就像是给权重做标记。它通过Fisher信息矩阵估算每个参数对旧任务的重要性,重要参数更新时加一个大惩罚项,让它们动得慢一些;不重要的参数则可以大幅调整。这样模型在学习新任务时,会优先改造对旧任务影响小的参数区域,相当于外科医生进手术室前先划出“禁区”——你可以动这里,绝对不要碰那里。
不过EWC实现起来要写额外逻辑,很多团队没精力调。这里还有一个更省事的替代方案:低秩微调(LoRA/QLoRA)。LoRA把权重更新约束在低秩子空间里,新知识只会写入一小部分可训练参数,变相限制了对原始权重的“手术范围”。我实测下来,LoRA发生灾难性遗忘的程度通常远低于全量微调,训练成本还更低。如果你只是想给模型注入某个领域的技能,优先上LoRA而不是全量微调。但要注意,LoRA也不能完全避免遗忘,所以经验重放的数据混合策略依然要保留。
3.4 分级记忆架构:把工作记忆、语义记忆、情景记忆分开建库
人脑显然不是单一存储。H.M.的案例告诉我们,情景记忆(某时某地发生的事)、语义记忆(世界知识)、程序性记忆(怎么做)走的是不同通路。做AI Agent的记忆系统也可以照搬这套分类。我现在设计Agent记忆时,基本按四层来建:
- 工作记忆:会话上下文,用滑动窗口维护最近几轮对话,优先保证当前任务的连贯性。
- 情景记忆:用户的历史交互,按时间戳记录,相当于“日志型记忆”,用来回答“上次我们聊了什么”。
- 语义记忆:用户偏好、事实、产品知识等稳定信息,落进向量库或结构化数据库,长期有效。
- 程序记忆:工具调用方式、工作流步骤、技能脚本,通常以代码和配置形式存在。
存储层对应起来也清晰:工作记忆用Redis这类高速缓存,情景记忆可存日志系统或时序数据库,语义记忆放向量库配合关系表,程序记忆就当版本管理下的脚本资产。各层记忆要有独立的写入、检索、清理策略。这个架构本质上就是对人脑记忆分型的工程复刻,H.M.花了一生代价才让科学家看清的结论,今天做AI系统时可以免费拿过来用。
4. 实操:几个真实场景里的记忆修复方案
4.1 场景一:对话机器人长会话忘事、前后矛盾
这是最常见的AI记忆问题。用户在客服窗口里跟你聊了20轮,先报了设备型号、又说了故障场景、还提过之前换过主板,结果模型只记住最后几轮,前面全忘,给的建议前后矛盾。根源就是上下文窗口只算工作记忆,溢出即丢。
我的处理套路分三步。第一,每轮对话结束后,把关键信息抽取成结构化字段存下来:用户ID、设备型号、故障描述、处理进度,更新到一个JSON对象或数据库记录。第二,当上下文超过阈值(比如5000 token)时,调用大模型生成一段会话摘要,把到目前为止的关键事实压进摘要,后续就用“摘要+最近轮次”作为输入。第三,下次会话开始时,先把该用户的历史记忆检索出来拼到系统提示里,让模型“想起”前情。这样做之后,哪怕用户隔天再来,模型也能准确说出“您上次说电脑开机黑屏,我们正在排查电源问题”。
关键细节:摘要别用模型自己的总结就完事,最好把结构化字段也存一份。摘要适合人看,结构化字段适合程序做判断。Agent决定下一步该调用什么工具,靠的是“设备型号”这类精确字段,而不是一段漂亮的自然语言。
4.2 场景二:微调模型后原有能力退化
我知道很多团队本地部署微调大模型,目标往往是垂直领域的专业化。但模型从通用变专业,代价常常是通用能力的丢失。这个问题的修法在3.2里提过:混数据、用LoRA、降学习率。
我给出一个可直接参考的基准配置:假如你在微调一个7B模型做法律问答,训练集可以按法律数据70%、通用指令数据15%、通用闲聊/百科数据15%的比例混合。学习率设低一些,全量微调建议1e-5左右,LoRA可以放宽到1e-4到2e-4。LoRA的rank从16起步,任务复杂再提到32,不要一上来就128。训练轮数控制在1到3轮,太多轮会让模型死记训练集,进一步加剧遗忘。微调前把通用评测集跑一遍,微调后再跑一遍,对比每项指标。这个“体检报告”能直观告诉你哪些能力被切掉了,需要往训练数据里继续补。
还有一个容易忽略的点:微调时不要只在回答端做监督。如果训练数据全都是“用户问一句、模型答一段”,模型会慢慢觉得所有对话都该长篇大论。混入一些多轮对话数据,带着上下文训练,能让模型保持自然的对话节奏,减少那种“一问就写论文”的AI味。
4.3 场景三:AI Agent多步执行丢状态
Agent比单纯聊天更依赖记忆。它要规划步骤、调用工具、观察结果、再规划下一步,整个过程的中间状态一旦丢失,后面的步骤就是无源之水。很多Agent跑长任务跑崩,不是模型逻辑不对,而是“忘了自己刚才已经做过什么”。
我的习惯是给Agent配一个显式的任务记忆对象。每一步执行完,把结果写进一个JSON对象。比如:
task_memory = { "goal": "完成发票信息提取并生成汇总表", "completed_steps": ["上传文件", "OCR识别", "字段抽取"], "pending_steps": ["汇总计算", "生成报表"], "last_tool_result": { "invoice_id": "INV-2024-001", "amount": 12800.50 } }下一步开始前先读这个对象,而不是只在上下文里翻。再配合一个“最近成功点”机制:如果某一步失败,能从上一个成功步骤重试,不用从头来。这一步看起来是工程小事,实际能极大提升Agent在长任务里的稳定性。
更深层的做法是参考MemGPT这类“层级记忆”设计:模型的主上下文只保留当前最活跃的思考,历史消息和检索结果放在外部存储,需要时再拉回来。用一个管理循环决定“现在要把什么放入上下文、把什么存档、把哪些旧记忆删掉”。这很接近人类的工作记忆管理,也是目前Agent记忆工程里比较前沿的实践方向。
4.4 一个RAG记忆库的最小可复现配置
最后给一个RAG记忆库的最小可复现配置,适合直接抄作业。
文本切块:chunk_size=500,overlap=80。切块前先清洗文档,去掉页眉页脚、多余换行。
嵌入:先用一个通用的多语言嵌入模型,在你自己业务样本上测一下检索准确率,检索不准再考虑微调嵌入模型。
检索:query先用同样的嵌入模型转向量,在向量库里取topK=8个候选片段,再用重排模型或简单的规则(关键词匹配、时间新鲜度)对候选排序,最终取前3到5个片段进提示词。
结果组装:把检索片段按相关性排序后,拼进提示词的“参考资料”区域,并明确告诉模型“只能依据资料回答,资料里没有的信息要承认不知道”。这一步能明显降低幻觉,因为它把模型从“凭记忆硬答”引导到“先查外部记忆再回答”。
索引更新:新文档入库前做去重和版本控制。文档更新时不要直接覆盖旧向量,因为旧的检索结果可能还留在缓存里。最稳的做法是给每个文档带版本号,检索结果也带版本信息,过期版本一旦被模型引用,能及时发现并重取。
5. 常见问题与排查:AI“失忆”现场怎么处理
5.1 先看记忆链路,再动模型
AI“失忆”的问题一多,容易让人误以为只有微调、换模型才能解决。但我的经验是,多数“失忆”问题出在记忆链路,而不是模型智力。排查顺序固定从外到内:外部记忆有没有写进去、检索能不能查得回来、查回来有没有进上下文、进了上下文模型有没有被正确引导、最后才考虑是不是权重本身缺知识。
先看外部记忆。会话记录有没有持久化?摘要有没有生成?结构化字段有没有更新?很多时候是写库的代码根本没生效,或者存了但没索引。再看检索。向量库索引是否刷新?新写入的文档是否立即可查?如果刚更新了知识,模型还是答不上来,多半是索引没更新。再看上下文组装。检索回来的片段有没有真被拼进提示词?拼进去的位置是不是容易被模型忽略?内容有没有被截断?很多项目里,RAG检索明明命中了,结果提示词太长被截断,模型根本看不到答案。最后再看模型行为。如果检索内容齐全,模型仍然答非所问,才需要怀疑是推理策略或权重问题。
我把这个排查顺序做成了一张速查表,团队排查时按行看就行:
| 症状 | 优先排查 | 常用修复 |
|---|---|---|
| 换会话后忘记前文 | 记忆持久化是否生效 | 增加摘要+结构化字段存储 |
| 长对话后前后矛盾 | 上下文截断位置是否合理 | 启用滑动窗口+摘要压缩 |
| 微调后通用能力退化 | 数据比例、训练轮数 | 混旧数据、用LoRA、降学习率 |
| RAG查不到刚更新的内容 | 索引刷新、嵌入模型匹配度 | 重建索引、检查向量库同步 |
| 答案出现虚构细节 | 检索片段是否真正相关 | 加重排、强制“不知道就说不知道” |
| Agent长任务越跑越乱 | 中间状态是否被覆盖 | 显式任务记忆对象 |
5.2 容易被忽略的“假失忆”
有一种情况不算真的失忆,但非常迷惑人——模型前后回答不一致,其实是因为每次提问的上下文里根本没有带上之前的结论。尤其在使用流式对话或并行请求时,如果前端没有把上一轮的回答传回后端,模型每次都在“全新对话”里回答,表现当然像失忆。排查这种问题,先对着请求日志看一眼:上一次回答的内容,有没有出现在这次请求的messages里?没有的话,先修调用链,别急着改模型。
还有一种“假失忆”是提示词里的记忆被噪音淹没。系统提示里存了一堆用户偏好,但混杂着大量无关历史记录,模型抓不住重点。检索回来的片段要在提示词里放在显眼位置,控制在几条以内,相关信息越集中,模型提取越准确。这跟人一样,记忆不是越多越好,关键是关键线索要醒目。
5.3 独家避坑心得
第一,别把上下文窗口当长期记忆用。上下文再大也有上限,而且越长推理越慢、越贵。短期会话靠窗口没问题,长期记忆要落到外存。宁可多一次检索,也不要无脑塞全文。
第二,记忆一定设计“遗忘”机制。H.M.是写不进去,很多AI系统是写得太杂。用户临时说过“帮我算一下这个数”,这类过程性内容根本不该进长期记忆。我给记忆打分的规则很简单:对后续任务有用、且可能被再次提起的信息,才值得写入长期记忆;其余的一律只做临时缓存或直接丢弃。
第三,用AI自己审计自己的记忆。定期让大模型读取最近积累的记忆,做一次摘要和去重,把过期偏好、重复条目、失效状态清掉。这个过程很像神经科学里说的“记忆巩固”和“记忆修剪”,能防止记忆库越来越脏、越来越不可用。
第四,微调前先跑测试集,微调后重跑一遍。把通用能力测试集和领域测试集都固定下来,每次微调前后都对比。这好比给模型做体检,指标掉得多的方向,就是你需要补充数据、调整训练策略的方向。没有体检的微调,等于闭着眼睛做手术,切到哪算哪。
6. 最后说点我自己的体会
做AI应用这几年,我有一个很深的感受:大多数人遇到“AI记不住”的第一反应是换更大的模型、加更长的上下文,但真正解决记忆问题的团队,往往是在系统架构上多了一条“记忆管线”。H.M.用一生证明,记忆不是单点存储,而是一套编码、存储、提取的完整链路;神经科学用几十年的研究把这条链路拆成了海马体、皮层、睡眠重放这些具体部件。而今天我们做AI agent、做RAG、做微调防遗忘,其实是在用工程手段重新搭一遍同样的链路。
我个人在设计记忆系统时,会先问一个很朴素的问题:这个信息如果丢了,用户多久会因为这个损失而骂我?答案是“马上”就放工作记忆;答案是“下次可能还要用”就放长期记忆;答案是“过期作废”就直接丢弃。这个判断比任何花哨的算法都重要。另外,我强烈建议做AI持续学习和Agent记忆的同学,找互补学习系统和H.M.的原始论文读一遍,篇幅不长,但比市面上大部分AI记忆工程的文章都更接近本质。70年前的这台手术,放到今天依然是一份最好的“AI记忆架构说明书”。