一句话定义:Contextual Compression(上下文压缩)是 RAG(Retrieval-Augmented Generation,AI 词典:检索增强生成">检索增强生成)流程里的一道工序。它把检索回来的文档先筛一遍,只留与问题真正相关的句子或段落,再拼进模型的上下文窗口。
为什么需要它:检索通常按向量相似度召回整块 chunk(文本块)。一块五百字的段落里,可能只有两句话回答了问题,其余是背景铺垫、免责声明、重复表述。这些内容会占用 token(成本和延迟),还会让模型分心——长上下文里,夹在中间的无关信息容易被忽略,这是常说的“lost in the middle”现象。
打个比方:出差前把行李箱整个倒出来,只装真正要用的那几件,而不是连衣柜一起搬走。也可以想成榨汁:水果是文档,汁是相关信息,渣子留在杯外。
压缩有两种常见做法:
- 抽取式(extractive):从原文挑出句子或句子片段,保留原话,不改写。安全,可溯源。
- 生成式(abstractive):让一个小模型把段落改写成一两句摘要。更短,但可能掺入原文没有的表述。
和相邻概念的区别:
| 概念 | 做什么 | 输出 | 风险 |
|---|---|---|---|
| Rerank(重排序) | 给召回结果重新打分排序,砍掉排在后面的整篇文档 | 更短的结果列表,文档内容不变 | 基本无损 |
| Contextual Compression | 对每一篇文档内部做删减或摘要 | 文档里更短的片段 | 抽取式几乎无损,生成式可能失真 |
| Prompt Compression(提示压缩) | 对已组装好的整段 prompt 做 token 级删减 | 更短的 prompt,未必可读 | 可能删掉关键限定词 |
关键区别:rerank 是“整篇留或整篇丢”,压缩是“留下文档,丢掉文档里的字句”;而 prompt compression 更激进,动的是已经拼好的提示词本身,通常在流程最后一步做。
对从业者的意义:加一层压缩,常常能在不换模型的前提下同时提升答案精度并降低成本。不少框架提供了现成的压缩检索器封装,也有团队用小模型或嵌入相似度做句子级筛选。要注意成本核算:用大模型做抽取本身也是一次调用,得权衡“省下的上下文 token”和“多花的一次推理”。另外,抽取式更容易保证不臆造,对需要引用出处的场景更稳。
对普通职场人的意义:知道这个概念,就明白 AI 答不准不一定是模型笨,可能是喂进去的材料里相关表述太少。写知识库条目时一段一个主题、结论前置、少写套话,等于人工帮系统做了一次压缩。具体工具怎么配置、参数怎么设,以官方页面为准。
