先这样答
要将上下文压缩的信息丢失降到最低,核心策略是建立保留优先级分层与结构化处理机制。首先需要将上下文划分为不可丢弃、可压缩和可丢弃三个层级。不可丢弃的信息包含当前任务指令、用户显式约束与偏好、关键实体与数值。可压缩的信息主要是已完成步骤的中间结果,以及工具返回的原始长文。可丢弃的则是寒暄、重复确认和与当前任务无关的轮次。
具体的压缩手段需要结合分层压缩与结构化摘要。在时间维度上,近期轮次保留原文,远期轮次做摘要。摘要不能只是一段散文,而应将实体、决策和待办事项单独结构化存储。在执行压缩前,先抽取关键信息,把用户的核心需求作为常驻提醒回注到系统提示词区域中。为了应对不可避免的丢失风险,必须建立摘要还原机制。压缩不等于删除源文件,而是按需将原文存入外部日志,并在摘要中带有引用锚点。当模型在后续任务中发现信息不足时,可以根据锚点取回对应的原文段落。
在工程实现的分工上,压缩和摘要这类任务可以使用小模型来执行,以此降低成本并加快速度,大模型的算力则保留给核心决策。压缩质量的校验可以通过抽查或关键实体比对来完成。在面试中可以这样收束:上下文压缩的目标是丢掉噪声、留下任务约束,判断压缩策略是否合理的唯一标准是压缩后的任务成功率不掉。
面试官会怎么追问
- 「工具返回了极长的网页原文,具体怎么处理?」 属于可压缩层级,不应直接放入上下文。先从中抽取当前任务需要的关键实体与数值放入上下文,原始长文保存在外部,上下文中仅留下文档摘要和检索锚点。
- 「用小模型做摘要,怎么保证它不漏掉关键实体?」 通过校验机制和分离提取解决。小模型生成摘要后,通过关键实体比对校验信息是否丢失。关键实体和用户约束属于不可丢弃层级,应在摘要前直接抽取并结构化存储,不混入自由文本摘要。
- 「模型怎么知道何时根据锚点去外部取回原文?」 在系统指令中设定规则,当模型发现现有摘要不足以完成当前任务,或遇到未知的实体引用时,触发检索工具。模型输出带锚点的查询,系统从外部日志中提取原始记录返回。
回答的坑
认为压缩就是让模型把历史对话总结成一段自然语言,忽略了实体单独存储与需求回注,导致关键约束在散文式摘要中模糊。
把压缩等同于永久删除历史记录,没有设计外部存储和引用锚点,导致一旦发生误删,模型在后续步骤完全无法找回原始信息。
同系列的题
—— 本题完 ——