跨会话记忆怎么做?记忆检索和 RAG 是一回事吗?
谁在问:二面;做过助手类产品的面试官用它验证你有没有把记忆当成「再建一个 RAG」
口语化问法
- 跨会话的记忆你们怎么实现的?走一遍流程。
- 记忆不就是把用户历史存进向量库再检索出来吗?跟 RAG 有什么区别?
- 用户说『把我说过的关于某件事的记录全删掉』,你的系统做得到吗?
考察意图
这题的陷阱在第二个问法上——技术栈确实高度相似,所以答"差不多"能得 40 分,答"完全不同"又太绝对。面试官想听的是:相同的是检索这一段,根本不同的是写入、更新、删除、隔离和评测这五段。
再往下,他会用第三个问法探你有没有做过真产品:删除权这件事,很多方案压根做不到——因为记忆一旦被摘要过,就无法定位到具体条目了。
参考答案
60 分答案(及格线)
跨会话记忆的完整链路:会话(或回合)结束 → 提取器从对话里抽出结构化条目 → 去重、与已有记忆做冲突消解 → 写入(高价值键值进结构化档案,长尾条目进向量库)→ 新会话开始或命中个性化意图时检索 → 带预算注入上下文 → 用户可查看和修改。
和 RAG 的关系:检索这一段技术栈几乎一样(向量库、召回、重排、注入预算),但语义完全不同:
- RAG 检索的是组织的共享知识;记忆检索的是属于某个人的历史。
- RAG 是离线批量入库、内容基本不变;记忆是在线增量写入,而且必须支持更新和删除。
- RAG 召回不准,后果是答错;记忆召回不准,后果是答错 + 隐私事故。
所以把记忆当成"再建一个 RAG"的团队,通常都会在更新、冲突和权限隔离上翻车。
90 分答案(有生产经验的回答)
补三层。
1. 五条结构性差异,逐条给出工程含义。
| 维度 | RAG | 跨会话记忆 | 工程含义 |
|---|---|---|---|
| 数据归属 | 组织共享 | 属于个人 | 隔离必须在存储层强制(分 namespace),不能靠查询时记得加过滤 |
| 写入路径 | 离线批量,更新靠重建索引 | 在线增量,随时写 | 需要冲突消解、幂等、并发控制 |
| 时效语义 | 文档一般无"过期"概念 | 强时效,新值覆盖旧值 | 每条带时间戳,检索要做新鲜度加权 |
| 检索触发 | 有明确 query(用户问题) | 常常没有 query(新会话刚开始) | 靠 user_id + 意图/场景触发 + 结构化过滤,纯相似度不好使 |
| 删除 | 很少需要精确删除 | 用户随时可能要求删除 | 必须可定位、可级联删除、可验证 |
第四条最容易被忽略:新会话开场时用户还没说话,你拿什么去做语义检索?答案是根本不该走语义检索——这时应该直接注入结构化档案里的高价值键值(称呼、偏好、时区、当前项目),语义检索只用于"用户提到了某个话题、需要翻旧账"的场景。
2. 三段式看跨会话记忆。
- 解决什么:连续性(不用每次重新自我介绍)、个性化、减少重复询问。
- 代价是什么:写入噪声会让检索静默退化;陈旧记忆污染当前判断;个人信息带来的合规负担;还有一条隐蔽的——记忆让行为不可复现,同样的输入对不同用户结果不同,评测和排障都更难。
- 什么时候不该用:一次性任务;匿名或强合规场景;以及"用一份用户可编辑的结构化档案就够了"的场景——这种情况上向量记忆是纯增加复杂度。
3. 2026 的产品趋势要提一句(截至 2026-08):记忆正在从黑盒转向可见可编辑。 原因不是技术,是信任——不可见的记忆一旦记错,用户没有任何纠正手段,只能感受到"这个助手怎么老是搞错我"。所以主流做法是给用户一个记忆面板,能看、能改、能删。这个设计决定反过来约束了技术选型:记忆必须是结构化、可定位、可溯源的,纯自由文本摘要满足不了。
追问链
记忆检索的 query 是什么?就是用户当前这句话吗?
期望常常不是,压根没有 query。分场景:新会话开场不检索,直接注入结构化档案;用户提到具体话题就定向检索;执行个性化动作前按动作类型取(生成周报就取「周报格式偏好」)。拿最后一句做相似度检索召回很差——记忆条目是零散原子事实,跟自然提问对不上,更依赖结构化过滤 + 类型定向信号指出「开场没有 query」这个具体场景并给出分场景策略 → 做过;答「就用用户输入去检索」→ 没跑过真实会话能不能直接复用 RAG 那套 pipeline 做记忆?会踩什么坑?
期望检索段能复用,四个坑:① 更新删除——RAG 重建索引,记忆不能为一条偏好重建全库,只能按条目定位;② 隔离必须按用户分区、存储层强制;③ 条目本就是原子事实,切块破坏语义;④ 召回率、faithfulness 评不了「该不该记」。投入重心相反:RAG 在检索侧,记忆在写入侧信号能指出「投入重心相反」(RAG 在检索、记忆在写入)→ 想清楚了;答「一套 pipeline 通用」→ 会在删除和隔离上出事记忆系统怎么评测?
期望四类,前两类 RAG 没有:① 写入质量——该记的记了没(召回)、不该记的没记(精度),后者更重要,噪声静默毁系统;② 使用准确率——有没有拿陈旧记忆做判断;③ 安全——串号率、敏感信息入库率,零容忍;④ 业务——重复提问率下降。方法要构造多会话仿真集,单会话根本测不出信号提出写入精度和多会话仿真集 → 设计过评测;只答「看用户满意度」→ 没有可操作指标用户说「把我提过的关于某件事的记录全删掉」,做得到吗?
期望前提是条目可定位可溯源:① 每条结构化存储并留来源(哪次会话、哪句话产生的);② 级联删除——向量库、档案、缓存都要清,还要查会话摘要含不含它(摘要有损改不了,只能标失效重建或一并删);③ 删完用同一检索路径验证取不到。全做成自由文本大摘要就根本做不到——删除权倒逼结构化信号想到「摘要里也可能含这条」和「删除后要验证」→ 做过合规;答「把向量删掉就行」→ 漏了缓存和摘要两条路径Agent 主动提起用户三个月前提过的一件私事,用户觉得被冒犯并投诉,怎么处理?
期望先定性:不是准确率问题——记对了,错在使用得体性,本能去查检索准不准就跑偏了 → 止血:使用分两级降级,隐式(用偏好调语气、格式、排序)保留,显式引用(主动提「你上次说过」)先关掉 → 根治:① 敏感类别(健康、家庭、财务、情绪)默认不主动引用,用户先提才用;② 写入时就打可引用性标记,不临时判断;③ 面板可见可删;④ 评测加人工抽样的「记忆使用得体性」信号把问题从「检索准不准」重定向到「使用得体性」并给出隐式/显式两级降级 → 做过 C 端记忆产品;只答「优化检索相关性」→ 没抓住核心
评分要点
- 说得出跨会话记忆的完整链路(提取 → 消解 → 写入 → 触发检索 → 注入 → 用户可控)
- 承认检索段与 RAG 相似,但能列出结构性差异(归属、写入、时效、触发、删除)
- 明确记忆的隔离必须在存储层强制
- 知道记忆检索常常没有 query,靠结构化过滤与类型定向
- 知道记忆的投入重心在写入侧,RAG 在检索侧
- 能说出评测的四类指标,尤其写入精度与串号率
- 加分:删除权倒逼结构化与可溯源设计,且删除要级联 + 验证
- 加分:区分记忆的隐式使用与显式引用,并知道后者风险更高
- 加分:知道 2026 记忆产品向可见可编辑演进的原因是信任而非技术