上下文溢出:三种处理策略
定义
当对话超出上下文窗口时,常见做法是直接截断、摘要压缩和选择性保留。直接截断实现最简单但容易丢失关键信息,摘要压缩保留要点但可能牺牲细节,选择性保留通过检索只注入相关历史,最精准但实现较复杂。
说明
直接截断实现简单、延迟可预测,但一旦删掉早期约束就无法从当前上下文恢复。它只适合明确知道旧内容价值较低,或仍保留外部真源可重新读取的场景。
摘要压缩用更短文本保存决策、事实与待办,能释放较多空间,但会引入遗漏和概括偏差。高风险事实应保留原文引用或可回放日志,不能只剩摘要。
选择性保留通过关键词、向量或结构化索引,只把与当前任务相关的历史带回请求。它减少无关内容,但检索失败会造成另一种遗忘,因此需要召回评测和兜底。
实际系统通常组合三者:先移除可重建的工具原始输出,再检索相关历史,对较老决策做摘要,最后才截断低价值内容。触发水位和预留输出空间应按模型、任务和真实流量测量,不存在通用百分比。
边界与误区
三种策略哪种最适合客服场景: 没有固定答案,取决于用户问题的连续性。若对话主题经常切换,选择性保留更有优势;若只需维护少量关键用户信息,摘要压缩成本较低。但客服需要记订单、身份等信息,简单截断不应作为首选。
摘要压缩会带来什么新风险: 摘要可能丢失关键细节、误解原话或把相似事实合并错误。模型生成的摘要本身也有概率偏差,一旦中间出错,后续对话会被误导。因此高风险场景需要保留可回溯的原始信息,或对摘要质量做校验。
能不能把这三种策略混用: 可以。常见做法是先选择性保留与当前问题最相关的历史,把较早或关联度低的部分摘要压缩,最后仍超限时再截断最旧内容。这样在信息保留和工程复杂度之间取得平衡。