多轮对话中如何组织历史上下文?

多轮对话中如何组织历史上下文?哪些内容应该保留或压缩?
这道题考的是上下文窗口容量有限与对话历史无限增长之间的矛盾。核心是:在有限的窗口内,智能地管理信息——记住重要的,压缩次要的。
上下文管理的本质挑战
先搞清楚问题出在哪。
上下文窗口就像一个固定大小的杯子,对话历史是不断往里倒的水。GPT-4能放100K tokens,Claude 3能放200K,看起来很多对吧?

但实际用起来你会发现,一个月的客服对话可能轻松超过50万token。就算窗口能装下,模型处理这么多信息时性能也会下降——这就是"上下文稀释"问题,重要信息被淹没在噪音里。
类比一下。就像你参加一个月的项目会议,每天都有新进展,如果你把每天的会议纪要全部记住,最后脑子里肯定一团浆糊。但如果只记住关键决策和当前进展,就能保持清醒。
上下文管理的本质就是:让模型在有限窗口内,始终看到对它最有用的信息。
分层缓冲架构——像整理房间一样管理对话
解决这个问题的主流方案是分层缓冲架构。简单说,就是把对话历史分成不同"抽屉",按重要性决定放在哪。
近期层:最近2-3轮完整保留
这是当前对话的核心区。用户正在聊什么、问什么,这几轮必须完整保留。就像整理房间时,把今天要用的东西放在桌面上。
核心层:实体、意图、偏好
跨越多轮的关键信息放这里。比如用户姓张、想买5000元以内的手机、之前投诉过物流……这些要单独标记、长期保留。就像把重要证件放抽屉里,随手能拿但不占桌面。
历史层:压缩摘要
更早的对话压缩成摘要。只保留"用户反馈过物流慢"、"咨询过退货政策"这类核心信息,去掉口语化、重复的内容。就像把旧文件整理成档案摘要。
归档层:外部存储
太久的对话或者无关紧要的细节,存到外部系统(数据库、向量库)。需要时再召回。这步不是删除,是"搬家"。

分层策略的核心逻辑:近期完整保留、中期提取关键、远期压缩归档、外部按需召回。
压缩技术三板斧——保留什么、压缩什么
分层架构确定了"放哪",现在说"怎么压缩"。记住三个原则:
1. 关键实体必须保留
人名、时间、数字、专业术语——这些是对话的"锚点"。压缩时可以精简描述,但这些信息不能丢。
比如用户说"我上周一通过APP下单了iPhone 15,本来应该周三到但是物流信息一直没更新,打过两次电话客服都没解决,今天已经周五了真的很生气",压缩后应该提取出:
- 时间:上周一→周五
- 订单:iPhone 15
- 问题:物流延迟+重复反馈未解决
这些关键实体丢了,整个对话就失去意义。
2. 情感强烈内容优先保留
用户明确表达的不满、感谢、惊讶——这些情绪信息比普通对话重要得多。要单独标记,优先保留。
"真的很生气"这句话,压缩成"用户表达不满"就可以了,但"不满"这个事实本身必须保留。
3. 完整问答对不可拆分
一轮问答是完整的语义单元,压缩时不能把问题和答案拆开处理。要压缩就整个压缩,拆分会破坏逻辑链条。

三种常用压缩方法:
- 语义压缩:把长对话转成短摘要,去掉口语化、重复、语气词
- 重要性评分:对每条信息打分,低分内容大幅压缩或丢弃
- 结构化表示:把对话转成JSON或知识图谱,保留核心关系
两条技术路线——升级大脑 vs 配个记事本
说完架构和压缩,再聊两条主流技术路线。这个是加分项,面试能说出来很加分。
路线一:优化模型本身
不动外部架构,通过改进模型让它更会利用上下文。典型代表是字节的强化学习方案(让模型学会主动关注重要信息)、LongRoPE(扩展模型的位置编码)。
路线二:外部记忆系统
不改变模型,通过外部系统管理历史。模型只看到"处理后的上下文"。典型代表是MemGPT、Mem0、RAG系统。
类比一下:
- 路线一是升级大脑
- 路线二是给大脑配个靠谱的记事本
两条路各有适用场景。路线二更通用、部署成本低,适合大多数实际应用。路线一效果可能更好,但需要额外的训练成本。
面试时可以根据自己的经验选一条深入讲,或者简单对比说明你了解两条路。
面试怎么答
基础版(能过):
多轮对话的上下文管理,本质是解决"窗口有限、对话无限"的矛盾。核心思路是分层缓冲+智能压缩。
具体来说:最近2-3轮完整保留,确保当前对话质量;中间层保留关键实体、用户意图、偏好等跨越多轮的信息;更早的对话压缩成摘要;超出窗口的历史存入外部系统,需要时召回。
压缩时要重点保留三类内容:关键实体(人名、时间、数字)、情感强烈内容(用户的不满或感谢)、完整的问答对。压缩方法可以用语义压缩、重要性评分、结构化表示。
加分版(眼前一亮):
在分层缓冲基础上,还可以提两点:
第一,自适应策略——根据对话复杂度动态调整。简单对话少处理,复杂对话多处理,避免资源浪费。
第二,两条技术路线的选择——如果追求通用性、成本敏感,用外部记忆系统;如果追求极致效果、有定制能力,可以优化模型本身。
第三,隐私保护——涉及个人信息的对话要考虑本地处理、差分隐私等保护措施。
一句话总结
上下文管理的核心就是:分层存放、智能压缩、按需召回,让模型始终看到对它最有用的信息。

