为什么需要压缩:检索结果的信噪比问题

向量检索返回 top-10 的文档块——但不是每一块都与问题相关:有的块只提到关键词但内容无关(向量检索的「语义漂移」)、有的块 80% 是背景介绍(只有 20% 是答案)、有的块之间大量重复(多个文档说了同样的事)。不压缩直接塞进上下文的后果:噪音稀释信号(无关内容占据上下文窗口,模型对关键信息的注意力被稀释)、token 成本浪费(无关内容的 token 是白付的)、以及生成质量的下降(噪音越多,模型产生幻觉的概率越高)。
四种压缩策略
策略一:抽取式压缩(extractive)。从每个检索块中「抽出」与问题相关的句子,丢弃其余——实现:用 LLM 或轻量模型判断每个句子与问题的相关性(score > 阈值则保留)。优点:保留原文(无幻觉风险——抽取的句子是原文的子集)、成本低(句级判断可用轻量模型)。缺点:可能丢失上下文(单句抽取后语义不完整)、句子间的连贯性下降。策略二:摘要式压缩(abstractive)。用 LLM 把每个检索块「摘要」成与问题相关的要点——生成新的文本(不是原文的子集)。优点:信息密度最高(摘要去掉了所有冗余)、连贯性好(摘要是有组织的文本)。缺点:摘要本身可能引入幻觉(LLM 摘要时可能「补充」不存在的信息——摘要的忠实度是风险)。策略三:选择性上下文(selective context)。不是每个检索块都要压缩——按相关性分数分档处理:高分块(强相关)原文保留、中分块摘要压缩、低分块丢弃——分档处理兼顾精度与成本。策略四:结构化压缩。把非结构化的检索结果转换为结构化形式(提取关键数据到 JSON/表格——数据比散文的信息密度高得多)——适合「数据密集」的检索结果(财报、统计、规格表)。
效果取舍:压缩的收益与风险
收益:token 成本降低(50–80% 的减少量)、生成质量提升(噪音减少、注意力集中在相关信息)、上下文窗口的释放(更多空间留给其他内容或更长对话)。风险:摘要幻觉(摘要式压缩可能引入不存在的信息——用抽取式替代摘要式可以消除此风险,代价是压缩率降低);过度压缩(关键信息被误删——压缩的阈值需要按场景调优,宁可少压不可误删)。压缩的评估方法:对比「压缩前 vs 压缩后」的生成质量(回答的准确性、完整性)与token 成本的差异——压缩的 ROI = 质量保持率 ÷ 成本节省率——ROI > 1 的压缩策略才值得引入。
## 上下文压缩的进阶:LLM 辅助的智能压缩
上下文压缩(正文四策略)的进阶:LLM 辅助的智能压缩——用 LLM 做压缩的决策与执行。压缩的两步法。第一步:相关性评分——用轻量模型给每个检索块打「与问题的相关度分数」(轻量模型:小模型或嵌入相似度——成本低速度快)。第二步:智能压缩——高分块原文保留、中分块用 LLM 摘要、低分块丢弃——分档压缩的自动化(本库正文的策略三)。压缩的 prompt 设计:压缩的指令要明确(「从以下文本中提取与问题 X 相关的关键信息,保持原文的准确性」——压缩的指令要指定「保留什么」与「丢弃什么」——模糊的指令导致过度压缩或压缩不足)。压缩的成本收益分析:压缩本身消耗 token(LLM 压缩的成本)——压缩节省的生成 token vs 压缩消耗的 token——净收益为正才值得压缩;简单场景(检索块少且相关)不需要压缩——压缩是「检索结果质量不均」的解药,不是默认动作。
上下文压缩的进阶:上下文组装的完整策略
上下文压缩(正文策略)的进阶:上下文组装的完整策略——检索结果如何最终组装成 LLM 的输入。上下文组装的要素:检索结果的排序(相关性排序——相关度高的排前面)、格式化(检索结果的格式统一——来源标注、结构化的格式)、压缩(本篇正文的压缩策略)、去重(检索结果中的重复内容去除)、以及截断(超出上下文窗口的截断策略——保留最相关的、截断最不相关的)。组装的策略选择:「最相关的排最前」的排序策略(本库 Lost in the Middle——开头的注意力最高)、相关性分档的差异化处理(高分块全文、中分块摘要、低分块丢弃——本库正文的分档压缩)、以及引用的编号系统([文档 N] 的编号——编号让引用标注成为可能)。上下文组装的收束:上下文组装是 RAG 的「最后一公里」——检索质量再好、组装不好就前功尽弃——组装的策略决定了「LLM 看到的是什么」——LLM 看到的上下文质量,就是回答质量的上限。
上下文压缩的实战案例:一个长文档 RAG 的压缩优化
上下文压缩的实战案例:长文档 RAG 的压缩优化——从「塞 10 篇文档」到「精准 3 段」。优化前的状况:每个查询检索 10 篇文档、每篇 1000 token、上下文 10000 token——LLM 的注意力被稀释(本库长上下文篇)、token 成本高昂。优化的策略:抽取式压缩(每个检索块抽取相关句子——压缩率 70%、零幻觉)+ 选择性上下文(高分块原文保留、低分块丢弃)。优化后:上下文从 10000 token 压缩到 3000 token——生成的质量提升(噪音减少、注意力集中)+ 成本降低 70%。压缩案例的收束:上下文压缩的 ROI 极高——一次性的压缩策略设计,换来持续的成本节省与质量提升。
上下文压缩的进阶:压缩的评估与自动化
上下文压缩(正文策略)的进阶:压缩的评估与自动化——压缩效果的量化度量与自动触发。压缩的评估指标。信息保留率:压缩后的上下文保留了原始检索结果中多少关键信息(与答案的相关性——信息保留率的度量:答案中引用的关键信息是否在压缩后的上下文中仍然存在)。压缩率:压缩后的 token 数与压缩前的比值(压缩率 50% 意味着 token 减半)。质量保持率:压缩后 LLM 的回答质量与未压缩时的对比(质量不降 = 压缩成功)。压缩的自动化触发。基于上下文大小的自动触发(上下文超过阈值 → 自动启用压缩——阈值触发而非总是压缩)、基于检索结果质量的触发(检索结果冗余度高 → 压缩、精炼 → 冗余度高才压缩)。压缩的收束:上下文压缩不是「总开着」的功能,是「需要时启用」的策略——压缩的自动触发机制让压缩在「需要时」工作、「不需要时」不干扰——压缩的评估(信息保留率、压缩率、质量保持率)驱动策略的迭代。
上下文压缩的进阶:压缩评估与自动触发
上下文压缩的进阶:压缩的评估与自动化——压缩效果的量化度量与自动触发。压缩的评估指标:信息保留率(压缩后的上下文保留了原始检索结果中多少关键信息——答案中引用的关键信息是否在压缩后仍然存在)、压缩率(压缩后的 token 数与压缩前的比值——压缩率 50% 意味着 token 减半)、质量保持率(压缩后 LLM 的回答质量与未压缩时的对比——质量不降才算压缩成功)。压缩的自动化触发:基于上下文大小的自动触发(上下文超过阈值自动启用压缩)、基于检索结果质量的触发(检索结果冗余度高才压缩、精炼度低就不压缩)。压缩的收束:上下文压缩不是「总开着」的功能,是「需要时启用」的策略——压缩的自动触发机制让压缩在需要时工作、不需要时不干扰——压缩的评估指标驱动策略的迭代。
上下文压缩的实战案例:成本减半的压缩改造
上下文压缩的实战案例:一个企业知识库 RAG 的压缩改造。改造前的成本结构:每个查询检索 8 篇文档、平均上下文 8000 token、LLM 调用成本每千次 40 元。改造的策略:抽取式压缩(每个检索块抽取与查询相关的句子——压缩率 65%)加分档处理(高分块保留原文、中分块抽取、低分块丢弃——分级压缩保留最重要的完整信息)。改造后的效果:平均上下文从 8000 token 降到 2800 token(压缩率 65%)、LLM 成本降低 60%(每千次 16 元)、回答质量持平(评测集验证——信息保留率 92%、质量保持率 98%)。案例的收束:上下文压缩的成本收益立竿见影——一次性的压缩策略开发换来持续 60% 的成本节省——压缩是 RAG 降本增效中 ROI 最高的单项优化。
上下文压缩的边界与反例
上下文压缩的边界:压缩不是万能的——三类场景不该压缩。场景一:法律与合同文本(条款的完整性与精确性是回答的前提——抽取关键句可能丢失条款的限定条件——「不得」与「可以」的上下文被压缩掉就是事故)。场景二:需要全局推理的问题(「这三份文档的结论一致吗」——压缩后的片段无法支撑跨文档的完整性比较)。场景三:短文档场景(文档本身只有几百 token——压缩的收益小于风险——压缩的开销与信息损失不成比例)。压缩的反例教训:某团队的 RAG 在压缩后回答质量下降——根因是「检索块只有 200 token 已经很精炼」——再压缩等于二次信息损失——压缩的前提是上下文有冗余可压。边界的收束:压缩策略要有「不压缩」的白名单——高风险内容类型与低冗余场景明确排除——知道何时不用压缩与知道如何压缩同样重要。
小结
上下文压缩在「检索之后、生成之前」做减法:抽取式(保原文但压缩率低)、摘要式(高密度但有幻觉风险)、选择性上下文(分档处理平衡精度与成本)、结构化压缩(数据密集场景最优)。压缩的收益是「token 减半 + 质量提升」,风险是「摘要幻觉与过度压缩」。压缩的正确姿势:抽取式为主、摘要式辅助、分档处理兜底——用压缩的 ROI 数据驱动策略选择。
读者留言
COMMENTS 暂无还没有留言,来说第一句?