检索侧评测:召回率与评测集
有标注时检索侧最可靠:recall@k、MRR、NDCG 直接量化「该召回的召回了没有」。评测集从真实 query 日志、badcase 与人工构造三处来,按场景分桶;凑不齐一千条也要先跑起来,「知识库里没有答案」这一桶必须单独留。
也叫:召回率 · recall@k · MRR · NDCG · 评测集 · 检索评测
先学RAG 链路总览
检索侧(有标注时最可靠)出自 T2-8
| 指标 | 回答什么问题 | 什么时候看它 |
|---|---|---|
| Recall@k | 正确文档进候选了吗 | 最重要——没进候选,后面全白搭 |
| Precision@k | 候选里有多少是相关的 | 噪音多不多 |
| MRR | 第一个正确结果排第几 | 单答案场景 |
| NDCG@k | 整体排序质量(考虑位置权重) | 多个相关文档时 |
优先级:先保 Recall(别漏),再优化 NDCG/MRR(别排错)。漏召回是不可逆的,排序错还有 rerank 能救。
以上节选自T2-8 RAG 评测:召回率、RAGAS 与 badcase 驱动迭代,读全文能看到前后语境。
怎么建评测集(最关键的一步)出自 T2-8
- 来源:优先真实用户提问日志。没上线就自己写 + 让 LLM 基于文档生成候选问题再人工筛。
- 规模:100–200 条起步就够用了。别因为「凑不齐一千条」而迟迟不建——没有评测集的优化全是玄学。
- 分桶:按问题类型标注(事实型 / 多跳型 / 专有名词型 / 口语型 / 知识库里没有的)。只看总平均会掩盖局部劣化——某个改动可能提升了总分却打坏了某一类。
- 标注:给每个问题标出正确的 chunk(用于算 recall)和参考答案(用于算 context recall)。
- 必须有一类:「知识库里没有答案」的问题,用来测系统会不会老老实实说不知道。这类样本几乎所有人都会漏掉。
以上节选自T2-8 RAG 评测:召回率、RAGAS 与 badcase 驱动迭代,读全文能看到前后语境。
延伸阅读
考这个知识点的题1 道
会连带问到14 道
- Q2-03Chunking 粒度怎么定?固定切分会出什么问题?
- Q2-06Embedding 模型怎么选?看哪些指标?维度越大越好吗?
- Q2-07HNSW 是怎么做近似最近邻的?相比暴力检索牺牲了什么?
- Q2-10混合检索里 BM25 和向量的分数怎么融合?为什么很多团队直接用 RRF?
- Q2-11Rerank 是什么?有了向量检索为什么还要重排?
- Q2-16RAGAS 这类框架评的是什么?faithfulness 和 answer relevancy 有何区别?
- Q2-17用户说「答非所问」,你怎么归因是检索问题还是生成问题?
- Q2-18说一个你处理过的最难的 RAG badcase
- Q2-24引用溯源怎么实现?怎么防模型「标了引用却胡编」?
- Q3-14跨会话记忆怎么做?记忆检索和 RAG 是一回事吗?
- Q4-09微调数据从哪来?怎么保证质量?多少条够?
- Q5-01AI 应用上线前怎么评测?评测集怎么建、多少条起步?
- Q5-03LLM-as-Judge 是什么?它自己有哪些偏差?怎么校准?
- Q8-04设计一个合同审查助手:长文档、条款比对、风险标注