Skip to content
🔗 分享本题
查看我的学习进度 →

千轮对话保留近期原文,将远期对话逐级汇总并抽取结构化事实,回答时按当前问题召回

🧠 记忆锚点:近处留原文,远处做分层摘要;事实结构化,回答时按当前问题召回。

💡 答案要点

背景(高频题):

长对话记忆是 Agent 落地的核心痛点。面试官问"用户聊了一千轮,上下文怎么管理"——不是简单"用摘要压缩",要能讲清分层方案和摘要算法。

痛点(面试必答):

  1. Token 爆炸:全量上下文成本飙升
  2. 长上下文遗忘:模型对早期信息"Lost in the Middle"
  3. 检索困难:历史信息太多,无法快速定位

方案架构:短期 + 长期分层管理

短期记忆:最近 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% 以上,多轮一致性还更好。"