---
title: 给峰岹电机芯片知识库选检索方法：一次差点被自己骗了的严谨评测
author: 张建宇
date: 2026-06-04
summary: 面向峰岹电机芯片知识库，对比纯RAG / FastGPT / 混合+路由三种检索路线；并记录一次被30条小样本误导、靠全量+显著性检验纠正回来的诚实翻车实录。核心教训：先把评测做对，再谈谁更好。
canonical: https://blog.sysu-sam.com/@zhangjianyu/fengchi-retrieval-eval
---

# 给峰岹电机芯片知识库选检索方法：一次差点被自己骗了的严谨评测

> 面向峰岹电机驱动芯片（FS9236/FS9226、FU6832 系列）的技术知识库，我们对比了三种检索路线，并在过程中收获了一个比结论本身更重要的教训：**评测方法不对，再认真的对比也会得出反向的错误结论。**

## 一、任务背景

峰岹的需求是把客户技术资料（功能模块说明、规格手册、硬件设计、FOC/SVPWM 理论课件、调试经验等）做成可问答的知识库，且因保密与成本，倾向**本地/离线的小模型**部署。

第一步是把素材变成可检索的文本：两批客户材料共 58 个原始文件（含大量 docx/pdf/pptx/Visio，以及波形、时序、原理图、公式等图片），我们用多模型视觉转写成 **52 个结构化 Markdown、保留 444 张图并把每张图转成文字描述**。这一步——把"图里的知识"变成可检索的文本——是后面一切的基础。

第二步，就是本文的主题：**用什么方法检索**。

## 二、三种对比路线

| 方法 | 做法 | 语料 |
|---|---|---|
| 纯向量 RAG（传统基线） | bge-m3 纯语义召回 top-K | 删除图说明的语料（复刻"图被丢弃"的现状） |
| FastGPT（混合检索） | 语义 ⊕ 全文(BM25) → RRF 融合 → 重排 | 含图说明 + 文档层级的增强语料 |
| 我方（混合 + 路由） | 在上面基础上加"文档类型/层级路由" | 同增强语料 |

三者共用同一生成模型、同一问题，差异只在检索与语料策略。

## 三、评测怎么做才算数

我们建了 **100 条基准**（10 种题型 T1–T10、7 个领域、难度分层、含 9 条"语料外应拒答"题），每条标注标准答案要点、禁止编造项、应命中来源。然后请同行评审了评测方法，得到四条铁律：

1. **检索层与生成层分开评**，别混成一个数。
2. **按"题型 × 方法 × 模型"分桶看**，聚合会把各方法的强项互相抵消。
3. **跨两档生成模型评**（强模型 + 本地小模型），不能只用顶配模型。
4. **小样本必须做显著性检验**（McNemar），个位数案例差不算结论。

还有一个关键的**指标定义**修正：不要用"是否命中那一篇指定文档"当召回——因为同一个事实往往散落在很多文档里（"堵转"出现在 12 个文档、"缺相"9 个）。召回了"另一篇同样含答案的文档"会被误判为 miss，而**路由的本质就是改变召回哪一篇，会被这个指标系统性冤枉**。正确指标是**"答案可得性"**：top-K 召回的内容里只要覆盖该题答案要素就算命中。

## 四、检索层结果：统计上分不出高下

用"答案可得性"指标（确定性、不调用生成模型，跑一次）做控制变量消融：

| 检索配置 | recall@4 | recall@10（候选池） | MRR |
|---|---|---|---|
| 纯语义 + 基础语料 | 84.4% | 90.0% | 0.691 |
| 纯语义 + 增强语料 | 83.3% | 88.9% | 0.689 |
| + BM25 混合 | 85.6% | 90.0% | 0.738 |
| + 文档类型路由 | 81.1% | 90.0% | 0.668 |

**McNemar 配对检验：三组相邻对比 p 值全部 > 0.05（0.289 / 0.683 / 1.000），即差异都不显著。** 候选池 recall@10 都在 ~90%，正确答案基本都召回得到——也就是说，在这个语料上，**几种检索策略在"能不能召回到答案"这件事上没有统计意义上的差别**。

## 五、差点被自己骗了：一次诚实的翻车实录

检索层既然打平，胜负理应在"答案质量 + 模型档位"那步。我们先跑了一个 **30 条分层抽样**的答案质量评测，结果非常漂亮：弱模型下我方比纯 RAG **高出 +19 分、且几乎不掉分**。这正是想要的故事。

但按第四条铁律，我们扩到**全量 100 条 + 显著性检验**复核——故事立刻垮了：

- 全量数据里，三方法的答案分**互相接近、各档位互有胜负**，我方并没有稳定领先；
- McNemar 检验下，**几乎所有差异都不显著**；
- 30 条抽样的"+19 完胜"，是**前几条/类恰好偏易、偏向某一方**造成的抽样假象。

换句话说，如果我们停在"30 条抽样 + 单一指标 + 单一强模型"，就会信心满满地发布一个**站不住的"我们完胜"**。是"全量 + 分类型 + 显著性"这套笨办法，把我们从错误结论里拉了回来。

（坦白一句工程现实：严谨的全量答案评测——100 条 × 三方法 × 两档模型——意味着大量大模型调用、真金白银的成本，这也是为什么"少跑几条就下结论"的诱惑很大、也很危险。）

## 六、目前站得住的结论

1. **真正实打实的价值在知识库工程**，不在检索花活——把 444 张图表转成可检索文字、做结构化与分层切分，决定了"答案在不在库里"。
2. **检索算法层面（混合、路由）在本语料上未见显著收益**；强模型尤其能"无视跑偏的上下文照样答对"，进一步抹平检索差异。
3. **越是弱/小模型，检索质量越重要**的直觉是对的，但要证明它需要**可信的全量数据**——这正是我们还在补的部分。
4. 因此对峰岹的工程建议：**不要一刀切**地决定"上不上混合/路由"，把它做成**可按题型、按部署模型切换的开关**，用数据驱动地分别启用。

## 七、最大的收获

这次对比最有价值的产出，不是"哪种检索更好"的排名，而是一套**能把自己证伪的评测方法**：分层指标、两档模型、答案可得性、分类型、显著性检验。在 RAG/Agent 满天飞、人人都说自己"效果更好"的当下，**先把评测做对，再谈谁更好**——这比任何一个漂亮的单点数字都重要。

---

*本文基于峰岹电机芯片知识库项目的内部评测；检索层数据为完整可复现结果，答案层评测仍在补全全量与显著性。*
