微信扫码
添加专属顾问
别再把所有检索结果都塞给大模型了!Kapa在RAG流程中引入“上下文剪枝”,在保证准确性的同时,直接砍掉68%的无用信息,让单次查询成本下降34%。 核心内容: 1. RAG系统检索成本高昂的痛点与“上下文剪枝”的解决方案 2. 剪枝模型的工作原理:在Rerank后二次筛选,精准保留关键信息 3. 实验效果与成本收益:剪除68%上下文,召回率仍达96%,总成本降低1/3
做 RAG 时,我们会关注“如何召回更多内容”。去研究怎么切 chunk、怎么做 embedding、怎么混合关键词和向量检索、怎么做 rerank,让尽可能多的相关资料塞进模型上下文,从而让 RAG 系统回答得更准。
Kapa 讨论了检索之后的下一步:当候选资料找回来后,要不要把它们原封不动地塞给大模型?
Kapa 在 Reranker 和 Generator 之间,加了一个轻量小模型(上图 Pruner)。这个小模型会先评估用户问题与候选 chunk,直接剪掉明显无用的内容,只把精简后的数据交给生成模型。
在多组实验配置中,Kapa 最终选了一个压缩率较高、召回率损失仍可接受的方案。这个配置剪掉了大约 68% 的检索 chunk,并保留了约 96% 的召回率。扣除剪枝模型自身的调用成本,整体的单次查询成本依然下降了约 34%,大约三分之一左右。
检索成本
在 Kapa 的技术知识库问答场景中,他们接入了技术文档、API 参考、PDF、论坛以及支持工单等多种资料,并作为检索上下文提供给 AI 助手。
这个工作流程是:Retriever(检索系统)先从知识库中检索出候选 chunk,Reranker 会根据问题相关性,对检索到的候选 chunk 重新排序,最后将靠前的 chunk 提交给生成模型生成回答。
然而,检索系统为了避免漏掉回答所需的关键信息,返回结果会偏保守。宁愿多返回一些可能相关的 chunk,也要确保召回率。这种做法保证了准确性,但带来了直接的成本问题。生成模型是要为读到的每一个 chunk 付费的。
在助手服务中,检索到的 chunk 占了单次查询成本的 2/3,这个开销甚至超过了生成回答、对话历史和 system prompt 的成本总和。在这种场景下,每减少一个进入模型的 chunk,就能直接降低约 4% 的单次查询成本。
上下文剪枝就是用来解决上面这些问题的。在 RAG 系统检索回来的候选内容中,只有一部分会被回答真正用到,剩下的部分都只是“看起来相关”。即使生成模型忽略了这些无用内容,token 成本还是产生了。因此,上下文剪枝的目标非常明确,就是在生成模型读取资料之前,对候选 chunk 进行二次筛选,尽可能只保留回答真正需要的内容。
失效路径
最简单的上下文剪枝方案是直接用 Reranker 分数来裁剪候选 chunk。
例如,设定一个分界线,分数高于 0.7 的保留,低于 0.7 的直接丢弃。这个方案看起来可行性很高,毕竟多数 RAG 系统自带 Reranker。既然 Reranker 已经对每个 chunk 打了分,直接利用现有分数进行截断,似乎可以顺理成章地省下一次额外的小模型调用成本。
但实践证明,这条路径并不可靠。
分数阈值与组合相关性
上面方案不可行的第一个原因是,Rerank 分数是一个排序信号。它能确定某个 chunk 在当前问题下的相对排序,却不能保证不同问题之间的分数具有相同的衡量标准。一个问题下的 0.7,和另一个问题下的 0.7,可能相关性并不高。
不用分数截断上下文的话,还有一种做法是位置截断。只保留前 5 个 chunk,或是把保留范围从前 15 个缩减到前 10 个。这种方式很简单、成本完全可控,但弊端也很明显:位置截断只关注“谁排在前面”,无法判断“该内容是否必要”。这种一刀切的做法在过滤掉噪声的同时,也可能会误删回答问题所需的候选内容。
这里分享一个具体案例:
用户问:“能不能只针对某一个 project 关闭 audit logforwarding?”
系统检索到了两个关键 chunk:
第一个 chunk 提到:audit log forwarding 是在 org 设置里切换的。
第二个 chunk 提到:project 不能覆盖 org 设置。
单独来看,第二个 chunk 并没有直接出现“audit log forwarding”这个词,在排序时会被当成噪声过滤掉。但如果缺少了它,系统就无法拼凑出“无法单独为某个项目关闭”这个答案。
这种情况在技术知识库问答中很常见。要解答一个技术问题,一般需要定义、约束、例外条件以及边界限制等多方面资料的配合。这些资料单独看都不像直接答案,但组合在一起能构成完整的逻辑链条。
然而,大多数 Reranker 都在逐个判断查询与单个 chunk 的关系。它在评估候选内容时,只能看到“当前问题”和“当前这一段内容”,无法同时看到其他候选 chunk,因此很难判断某段内容是否是另一段内容的必要补充。
因此,真正要评估的对象是 chunk 集合,而不是单个 chunk。Reranker 系统不仅要判断“这一段单独看相关度有多高”,更要判断“将这一段放入当前这组候选资料中,对最终回答是否有新增贡献”。
锚点文档
在转向小模型剪枝之前,Kapa 还尝试过锚点文档方案。
该方法的思路是,在候选 chunk 的排序列表中插入一些已知相关程度的“锚点文档”。这些锚点覆盖了从 Essential、Contributing、Supporting 到 Tangential、Unrelated 等不同相关性等级。Reranker 系统通过观察真实 chunk 排在这些锚点的上方还是下方,来决定其去留。
这种做法的好处是通过引入参照物,将 Reranker 的相对排序转化为更可校准的绝对指标。
但实验结果并不理想。因为锚点文档只能帮助校准分数的绝对尺度,无法改变 Reranker “逐个评估单个 chunk”的工作方式。对于那些“单独看相关度不高,但与其他 chunk 组合起来才有用”的内容,Reranker 依然会将其排在靠后的位置。为了避免误删这些关键补充信息,系统得把保留阈值设得很低,这会让最终能剪掉的上下文非常有限。
通过这次尝试,我们得到了一个明确的结论:剪枝模型必须能够同时看到用户问题以及所有的候选 chunk。
剪枝器设计
Kapa 采用了基于列表的 LLM 评分机制。在 Reranker 和 Generator 之间插入一次小模型调用。这个小模型会同时接收用户问题和所有的候选 chunk,并按照以下五档标准为每个 chunk 进行评估打分:
5 分:Essential。关键资料,缺它不行。
4 分:Contributing。单独无法回答问题,但完整答案需要它。
3 分:Supporting。和问题相关,且对回答问题有帮助,但没有它答案大概率也能成立。
2 分:Tangential。同领域或术语接近,但无具体贡献。
1 分:Unrelated。基本无关。
在这套评分标准中,4 分的设置很重要。它专门用来识别那些“单独看相关度不高,但组合起来对答案有价值”的补充性材料。这样,小模型就能从全局视角出发,识别出上下文之间的互补关系,而不是只看单个 chunk 是否直接命中问题的关键词。
有了这套五档评分后,系统可以通过设定阈值来决定 chunk 的去留。例如:
设定阈值为 4 分,系统会保留 Essential 和 Contributing。
设定阈值为 3 分,则会更保守一些,将 Supporting 也一并留下。
这与直接使用 Rerank 的浮点数分数的逻辑完全不同。五档评分的每一档都有明确的文字定义,这让阈值具有更稳定的语义含义,也就避免了浮点数分数在不同问题之间难以横向比较的问题。
同时,系统还保留了 Keep-Top-K 机制。无论剪枝小模型如何打分,Reranker 排序最靠前的几个 chunk 都要被强制保留。这个设计相当于为系统加了一层保险,避免最核心的检索结果因为小模型的单次误判而被意外删掉。
此外,该方案还有两个核心参数要权衡:
模型选择:剪枝模型本身也存在运行成本和耗时,因此必须选择体积足够小、速度足够快且足够便宜的模型。
阈值设置:阈值越高,上下文压缩率越高,越省钱;阈值越低,对召回的保留能力越强,越安全。
为了验证该方案的有效性,这里对比了两种基线方案:
预算式选择:固定保留前几个 chunk,再让小模型最多补充 个。该方案能严格控制上下文长度,但缺点是预算一旦用完,后续即便有真正有用的 chunk 也会被无情丢弃。
直接二分类选择:不设五档评分,直接让小模型判断每个 chunk “保留”或“丢弃”。这是一个非常实用的对照组,用以评估多档打分是否有必要。
实验结果表明,五档评分方案在上下文压缩率与召回保留率之间取得了最佳的平衡。
研究结果
Kapa 的评估体系分为两层:
第一层是在带标签的真实问题集上测试召回率。重点关注回答真正需要的关键 chunk 有没有被保留下来。剪枝最怕的是误删关键证据,如果为了降低成本而导致回答出错,这样的优化就失去了实际意义。
第二层是生产流量回放。Kapa 用一个月的真实生产对话数据来回放不同的配置组合,来观察实际的压缩率、成本和延迟变化。这种做法避免了小样本测试的局限性,还能够更真实地反映业务实际运行中的输入分布。
在最终选定的配置下,系统保留了约 96% 的必要 chunk 召回,同时剪掉了约 68% 的检索 chunk。
这个结果对应的是一个相对务实的取舍:大约每 25 个问题中,可能会有 1 个问题因为剪枝而丢失原本需要的 chunk;但换来的收益是进入生成模型的检索上下文减少了约三分之二。
延迟与适用场景
这套方案的成本主要体现在延迟上。
由于剪枝器运行在检索和生成之间,处于请求的关键路径上,因此每次查询都必须额外多出一次模型调用。在上面选定的配置下,平均每次查询会增加约 0.7 秒的延迟。
虽然这个方案让进入生成模型的 chunk 变少了,后续生成模型开始输出首 token 的时间会稍微缩短,但这点节省下来的时间,并不足以完全抵消剪枝器自身调用所引入的延迟。
因此,这个优化非常依赖具体的业务场景:
Agent 场景:如果是在 Agent 场景下,系统本身就会进行多轮模型调用和多次工具调用,此时额外增加一次轻量的剪枝调用,其延迟影响就会被相对稀释。
这也是 Kapa 优先选择在 Agent 场景中落地该方案的原因。
Agent 在执行单次任务时,要调用多个工具,每次工具调用的结果都会持续累加到上下文中。如果检索返回的内容更短、更干净,就能为后续的工具输出、推理步骤和中间状态留出更多的上下文空间。
在长任务中,这个方案带来的好处就更明显了。如果前期的检索结果夹带了大量冗余 chunk,随着后续工具调用不断叠加内容,上下文很快就会变得臃肿。剪枝能确保 Agent 在一开始就拿到一个足够紧凑的资料包。
此外,Agent 场景还有一个天然的缓冲机制:如果发现信息不足,它可以再次发起搜索。这让少量的召回率损失变得更加可控。在单轮问答中,一旦关键 chunk 被误删,模型可能就直接给出了错误答案;但在 Agent 流程中,它还有机会在后续的思考与执行步骤中重新进行检索补救。
小结
这套方法更适合以下四类系统:
检索 chunk 已经成为主要的成本来源。
检索结果中存在大量“看起来相关、实际却没用上”的冗余内容。
系统能够接受 1 秒以内的额外延迟。
业务能够容忍极少量的召回率损失,或者系统本身具备二次检索的机制(如 Agent 场景)。
如果你的系统基本符合这些条件,那么在 Reranker 和 Generator 之间加入一层轻量剪枝,就具有非常实在的工程价值。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-08-19
从 DeepWiki 到 OpenWiki:Agent Wiki 到底有什么用?
2026-08-18
Milvus 3.0 开源解读|词法+语义高亮,如何解决Agent的搜索噪音?
2026-08-17
Milvus 3.0 开源解读|如何借助原生 TEXT 类型和 LOB 高效管理原始文本
2026-08-15
同样RAG,换个Embedding召回率从62%飙升到89%
2026-08-15
RAG 在企业知识库中的实战:我们踩过的坑和填平的路
2026-08-07
从胡言乱语到精准改代码:我是如何让 AI 读懂老项目的
2026-08-07
14 种文档格式转 Markdown,一个 Rust 库全搞定
2026-08-06
火山引擎 RDS MySQL 向量索引:把高性能向量检索带到 MySQL 上
2026-05-27
2026-06-18
2026-06-23
2026-06-10
2026-05-22
2026-06-09
2026-06-10
2026-06-15
2026-07-04
2026-06-22
2026-08-19
2026-08-18
2026-08-05
2026-08-05
2026-07-28
2026-07-27
2026-07-26
2026-07-25
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。