首页 / 文章 / 如何让小型语言模型扔掉68%的RAG上下文?Kapa.ai的实用剪枝教程
← 返回
AI技术

如何让小型语言模型扔掉68%的RAG上下文?Kapa.ai的实用剪枝教程

✍️ zhirenhun 📅 2026/7/7 👁 90 阅读 ⏱ 4 分钟
如何让小型语言模型扔掉68%的RAG上下文?Kapa.ai的实用剪枝教程

如何教会一个小型 LLM 丢弃 68% 的 RAG 上下文

RAG上下文剪枝封面图

Kapa.ai 是一个基于 RAG(检索增强生成)的技术文档问答系统。他们面临一个典型问题:每次查询时,RAG 管线会检索出过多的上下文信息,导致成本上升、响应变慢,而且由于 LLM 的"中间迷失"(lost in the middle)问题,准确率反而下降。

解决方案是:训练一个小型分类模型,预测检索到的哪些文本块对回答当前问题实际有用。最终结果:在保持甚至提升回答质量的前提下,削减了 68% 的检索上下文

为什么 RAG 上下文剪枝如此重要

RAG 系统的运作方式是:检索相关文档/文本块,然后将其塞入 LLM 的提示词中。但这样做存在几个问题:

  1. 当相关信息被埋在长提示词的中间位置时,LLM 的表现会明显下降
  2. Token 越多 = 成本越高
  3. Token 越多 = 响应越慢
  4. 不相关的上下文会混淆 LLM,甚至导致幻觉

RAG架构示意图

他们的方法

他们微调了一个基于 BERT 的小型分类器(1.1 亿参数),该模型接收一个(问题,文本块)对,预测该文本块是否与问题相关。这是放置在初始检索之后、LLM 生成之前的重排序环节。

RAG上下文剪枝管线

训练数据的挑战

他们需要标注好的(问题,文本块,相关性)数据。解决办法:使用 GPT-4 生成训练标签。对于每次查询,先检索 Top-K 个文本块,然后让 GPT-4 指出它在生成答案时实际使用了哪些文本块,以此作为标注的真实数据。

GPT-4生成训练标签流程

模型详情

  • 基础模型: BERT(1.1 亿参数,可在 CPU 上运行)
  • 输入格式: [CLS] 问题 [SEP] 文本块 [SEP]
  • 输出: 二分类(相关/不相关)
  • 训练数据: 约 5 万个来自生产 RAG 流量样本
  • 训练时长: 单 GPU 约 2 小时

结果

  • 上下文削减 68%(每个查询从 12 个文本块降至 4 个)
  • 回答质量提升: F1 分数从 0.84 提升至 0.86
  • LLM API 成本降低 45%
  • 延迟降低 52%
  • 分类器每次查询推理时间 <50 毫秒

剪枝前后效果对比

关键启示

  1. 小型 BERT 分类器在重排序任务上的表现出人意料地好
  2. 以 LLM 自身的行为作为训练信号,可以构建自我改进的系统
  3. 上下文剪枝不仅节省成本,还能提升准确率
  4. "中间迷失"问题真实存在,不可忽视

生产部署

该分类器以轻量级微服务形式运行,单 CPU 实例即可承载生产流量。通过 ONNX 或 TorchScript 部署非常简单直接。


原文出处:https://www.kapa.ai/blog/how-we-prune-rag-context

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

RAG LLM 检索增强生成 上下文剪枝 BERT 机器学习
← 上一篇
语言模型的全局工作空间:Claude 内部涌现的「意识访问」机制
下一篇 →
OfficeCLI:专为AI智能体打造的Office命令行套件

📌 相关推荐

结构化输出 vs 工具使用 vs 预填充:2026年从Claude获取JSON
2026/7/11
在AWS Bedrock上构建生产级AI代理——值得关注的架构与代码决策
2026/7/11
如何为你的AI代理构建评估框架(确保其在生产环境中不崩溃)
2026/7/11
← 返回文章列表