先这样答
分层按信息寿命和访问方式来划,每一层解决不同的问题。
第一层:工作记忆(短期)。就是上下文窗口本身,装当前会话的对话、工具结果、任务进度。这层的特点是快但易失:会话结束或窗口滚动就没了。工程重点是腾空间:裁剪旧轮次、压缩工具输出、把「做过什么」摘要化。
第二层:长期记忆。跨会话还要用的信息,再按性质分两种。情景记忆是「发生过什么」:用户上次说过偏好什么、某个项目之前定了什么方案,以事件为单位存。语义记忆是「提炼出什么」:从多次交互里归纳出的稳定事实(用户是后端工程师、团队用 React 技术栈)。两种都常用向量库存,靠相似度检索取回。这层的工程重点是写入门槛和更新冲突:不是所有对话都值得记,旧事实被新事实推翻时要能更新。
第三层:结构化事实。明确、稳定、要精确读写的信息:用户档案、订阅状态、显式设置的偏好。这类不靠相似度:「用户的语言是中文」去算相似度没有意义,要用键值或表结构精确存取。很多记忆系统的效果差异就差在这层该结构化的被塞进了向量库。
三层之间的流转是设计的灵魂:会话进行中产生候选记忆 → 会话结束(或触发条件)时做抽取归纳 → 稳定事实沉淀到结构层,过程性内容留在情景层 → 检索时按需从长短期各取所需拼进上下文。每一层都要有淘汰和过期机制,只进不出的记忆库会慢慢变成噪音场。
面试官会怎么追问
- 什么信息值得写进长期记忆? 三个判据:稳定性(不会明天就变)、复用性(未来会话大概率用得上)、明确性(能提炼成一句话的事实)。寒暄和一次性中间过程都不够格。
- 记忆冲突怎么处理? 带时间戳和来源,新记忆覆盖旧记忆时要显式判断是「更新」还是「并存」(用户口味会变,但身份证号只有一个);关键记忆允许用户查看和修正。
- 记忆检索会不会拖慢响应? 会增加一跳检索延迟,常用的缓解是记忆预取:会话开始或话题切换时异步预载相关记忆,不要等模型需要时同步查。
回答的坑
- 两层就收尾(只分短期长期)。三层结构加结构化事实层,是当前比较成熟的共识做法,答全它。
- 不提淘汰机制。记忆系统设计题里,「记什么」和「忘什么」同等重要。
—— 本题完 ——