在 Kapa 的技术知识库问答场景中,他们接入了技术文档、API 参考、PDF、
论坛以及支持工单等多种资料并作为检索上下文提供给 AI 助手。这个工作流程是Retriever检索系统先从知识库中检索出候选 chunkReranker 会根据问题相关性对检索到的候选 chunk 重新排序最后将靠前的 chunk 提交给生成模型生成回答。然而检索系统为了避免漏掉回答所需的关键信息返回结果会偏保守。宁愿多返回一些可能相关的 chunk也要确保召回率。这种做法保证了准确性但带来了直接的成本问题。生成模型是要为读到的每一个 chunk 付费的。2在助手服务中检索到的 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 个。这种方式很简单、成本完全可控但弊端也很明显位置截断只关注“谁排在前面”无法判断“该内容是否必要”。这种一刀切的做法在过滤掉噪声的同时也可能会误删回答问题所需的候选内容。这里分享一个具体案例3用户问“能不能只针对某一个 project 关闭 audit log forwarding****”系统检索到了两个关键 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 用一个月的真实生产对话数据来回放不同的配置组合来观察实际的压缩率、成本和延迟变化。这种做法避免了小样本测试的局限性还能够更真实地反映业务实际运行中的输入分布。4在最终选定的配置下系统保留了约 96% 的必要 chunk 召回同时剪掉了约 68% 的检索 chunk。这个结果对应的是一个相对务实的取舍大约每 25 个问题中可能会有 1 个问题因为剪枝而丢失原本需要的 chunk但换来的收益是进入生成模型的检索上下文减少了约三分之二。延迟与适用场景这套方案的成本主要体现在延迟上。由于剪枝器运行在检索和生成之间处于请求的关键路径上因此每次查询都必须额外多出一次模型调用。在上面选定的配置下平均每次查询会增加约 0.7 秒的延迟。虽然这个方案让进入生成模型的 chunk 变少了后续生成模型开始输出首 token 的时间会稍微缩短但这点节省下来的时间并不足以完全抵消剪枝器自身调用所引入的延迟。因此这个优化非常依赖具体的业务场景单轮问答场景如果是对首 token 延迟TTFT极其敏感的单轮问答就要谨慎评估这个方案了。毕竟要额外增加一次模型调用。Agent 场景如果是在 Agent 场景下系统本身就会进行多轮模型调用和多次工具调用此时额外增加一次轻量的剪枝调用其延迟影响就会被相对稀释。这也是 Kapa 优先选择在 Agent 场景中落地该方案的原因。Agent 在执行单次任务时要调用多个工具每次工具调用的结果都会持续累加到上下文中。如果检索返回的内容更短、更干净就能为后续的工具输出、推理步骤和中间状态留出更多的上下文空间。

相关新闻

Unreal引擎集成TypeScript开发指南:Puerts原理、配置与双向调用实践

Unreal引擎集成TypeScript开发指南:Puerts原理、配置与双向调用实践

1. 项目概述:为什么要在Unreal里搞TypeScript?如果你是一个常年混迹在Unreal引擎和前端开发两个圈子的开发者,看到“Puerts”这个名字,大概率会眼前一亮。这玩意儿说白了,就是给Unreal引擎这个庞然大物,开了…

2026/10/10 1:00:17 阅读更多 →
sif不拆变体实现流量翻倍!sif优惠码开通sif关键词工具

sif不拆变体实现流量翻倍!sif优惠码开通sif关键词工具

sif不拆变体实现流量翻倍!sif优惠码开通sif关键词工具不拆变体,自然流量也能翻倍!这不是简单的测试,而是成熟且广泛的应用!开通输入sif折扣码:KJYH 开通即可原因如下:目前80%的关键词都有多个变…

2026/10/13 3:51:01 阅读更多 →
机器学习中不可替代的人类组件:从数据策展到责任承担

机器学习中不可替代的人类组件:从数据策展到责任承担

1. 为什么说“人”才是机器学习项目里最不可替代的组件你有没有遇到过这样的情况:模型在测试集上AUC飙到0.98,部署上线后第二天业务指标反而跌了15%?或者花了三周时间调参优化F1-score,结果产品团队反馈:“这个预测结果…

2026/10/13 20:23:05 阅读更多 →

最新新闻

贷款违约预测实战入门:从数据处理到评分卡全流程解析

贷款违约预测实战入门:从数据处理到评分卡全流程解析

简介:面向零基础金融风控学习者,提供一份基于 Python 的贷款违约预测完整项目,聚焦个人信贷场景中的违约风险识别,适合作为课程设计或期末大作业提交。项目已获导师指导,并得到 97 分高分评价,代码与说明材…

2026/10/14 12:57:57 阅读更多 →
基于Hadoop与用户行为特征感知的智能图书推荐系统实战

基于Hadoop与用户行为特征感知的智能图书推荐系统实战

简介:这份资源是一篇原创学士学位毕业论文,题为《基于Hadoop框架与用户行为特征感知的智能图书推荐系统设计》,面向计算机科学与技术、软件工程等专业的本专科毕业生,以及希望深入理解大数据处理与推荐系统实践的学习者。论文以Ha…

2026/10/14 12:57:57 阅读更多 →
移动机器人地图管理实战:从静态地图到导航可用数据的完整链路

移动机器人地图管理实战:从静态地图到导航可用数据的完整链路

lingbot-map 这个项目名字看起来很小,但实际做起来才发现,它牵扯的工程细节比想象中多得多。简单说,它是一个面向移动机器人的轻量级地图管理模块,解决的是从“一张静态地图文件”到“机器人导航可用的地图数据”之间的一系列问题…

2026/10/14 12:57:57 阅读更多 →
Flutter跨平台开发实践:鸿蒙系统适配与健康APP实现

Flutter跨平台开发实践:鸿蒙系统适配与健康APP实现

1. 项目背景与核心价值 作为一名长期从事跨平台开发的工程师,我最近完成了一个基于Flutter框架的饮食热量查询APP开发项目,目标平台包括鸿蒙系统。这个项目让我深刻体会到Flutter在跨平台开发中的强大优势,特别是在新兴操作系统上的适配能力。…

2026/10/14 12:57:57 阅读更多 →
基于机器学习的口碑商家客流量预测:从数据构造到LightGBM实战

基于机器学习的口碑商家客流量预测:从数据构造到LightGBM实战

简介:基于机器学习的口碑商家客流量预测项目,面向希望掌握回归预测建模与实战流程的机器学习初学者及竞赛玩家。资源提供从数据清洗、特征提取、天气与用户行为分析到模型训练与规则调优的完整代码链路,配套可直接运行的 Python 工程与说明文…

2026/10/14 12:57:57 阅读更多 →
从SLAM建图到自主导航:lingbot-map室内移动机器人实践路线

从SLAM建图到自主导航:lingbot-map室内移动机器人实践路线

如果你只是想让一个轮式机器人动起来,那很多开源框架十分钟就能跑通一个演示程序。但如果你想让它在一栋真实的室内环境里自己认路、自己判断“我现在站在地图的哪个位置”,事情就完全变了味。lingbot-map这个项目,名字拆开看很直白&#xff…

2026/10/14 12:56:57 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →