
🧠 记忆锚点:近处留原文,远处做分层摘要;事实结构化,回答时按当前问题召回。
💡 答案要点
背景(高频题):
长对话记忆是 Agent 落地的核心痛点。面试官问"用户聊了一千轮,上下文怎么管理"——不是简单"用摘要压缩",要能讲清分层方案和摘要算法。
痛点(面试必答):
- Token 爆炸:全量上下文成本飙升
- 长上下文遗忘:模型对早期信息"Lost in the Middle"
- 检索困难:历史信息太多,无法快速定位
方案架构:短期 + 长期分层管理
短期记忆:最近 N 轮完整原文(保证细节)
长期记忆:历史摘要(压缩)+ 结构化实体(可靠)分层摘要算法(核心答案):
第一层:轮次摘要(Rolling Summary)
每 3-5 轮对话 → LLM 压缩成一段摘要
摘要包含:话题、结论、用户关键信息
第二层:会话总摘要(Global Summary)
多段轮次摘要 → 再压缩成会话总摘要
控制总摘要大小(如 500-1000 tokens)
存储:摘要进向量库(可检索)+ 短期原文在内存/Redis召回机制(不是全量塞):
用户提问 → 向量检索相关历史摘要(Top3-5)
+ 最近对话原文(固定窗口)
+ 结构化实体(用户偏好/资质信息)
→ 拼装上下文结构化实体记忆(加分点):
不只存文本摘要,单独抽取结构化数据:
用户偏好:{语言: 中文, 风格: 简洁}
关键信息:{公司: X, 职位: Y}
→ 比纯文本摘要更可靠,检索更精准效果与成本平衡(加分点):
对话越长,压缩比例越高。千轮对话场景,上下文从全量 10 万+ tokens 压到 2-3 千 tokens,压缩 95%+,同时通过召回保证核心信息不丢。
面试话术:
"千轮上下文我用'短期+长期'分层:最近 N 轮保留原文保证细节,历史做分层摘要——每 3-5 轮先做轮次摘要,多段再合成会话总摘要,存向量库可检索。回答问题时不是全量塞,而是用当前提问召回相关历史摘要+最近原文+结构化实体(用户偏好单独抽出来存)。这样千轮对话上下文能压到 2-3K tokens,压缩 95% 以上,多轮一致性还更好。"