004|RAG 评估与优化:从指标到工程的完整链路
RAG 不是接个向量库就完了。评估要拆检索和生成,优化要端到端思考。这是面试最爱考的工程题。
核心结论:RAG(拉格,检索增强生成)系统的质量 = 检索质量 × 生成质量。评估必须拆开看,优化也要分别动手,同时关注延迟和成本。
一、RAG 为什么要分开评估
RAG 的错误来源有两个:
- 检索失败:关键文档没进 Top-K,或进了噪声文档。
- 生成失败:LLM 没理解检索结果,或编造了不存在的信息。
只看最终答案对不对,你根本不知道问题出在哪。
二、检索端指标
| 指标 | 含义 | 面试话术 |
|---|---|---|
| Hit Rate(黑特·瑞特) | 正确答案是否在 Top-K | 命中率高说明召回能力强 |
| MRR(米恩·瑞西普洛克·兰克) | 第一个正确答案排名的倒数平均 | 关注首条结果 |
| Recall(瑞·考) | 相关文档被召回的比例 | 召回高但噪声可能多 |
| Precision(普·瑞西·忍) | 召回结果中相关比例 | 精确高但可能漏信息 |
三、生成端指标
| 指标 | 含义 | 面试话术 |
|---|---|---|
| Faithfulness(费斯·福·内斯) | 答案是否忠于检索文档 | 防止幻觉,面试重点 |
| Answer Relevance(安·瑟·瑞·莱·文斯) | 答案是否和问题相关 | 避免答非所问 |
| Context Relevance(康·泰·克斯特·瑞·莱·文斯) | 检索上下文是否相关 | 反映检索质量 |
四、检索优化
- Chunking(呛·克·英):按语义切分,不是越小越好。
- Embedding(音·拜·丁):选合适模型,垂域可微调。
- Hybrid Search(嗨·布·里德·瑟·奇):语义 + 关键词(BM25)结合。
- Rerank(瑞·兰克):先召回,再精排。
- Query Rewriting(克·威·瑞·瑞·埃·廷):扩展、改写用户问题。
# 混合检索伪代码
dense_scores = vector_db.search(query_embedding, top_k=50)
sparse_scores = bm25_search(query, top_k=50)
final_scores = rrf_fusion(dense_scores, sparse_scores)
五、生成优化
- Prompt Engineering:明确要求'不知道就说不知道'。
- Rerank:让最相关文档排在前面。
- 结果过滤:按时间、权限、来源过滤。
- 答案自检:让 LLM 判断答案是否忠于检索内容。
六、面试表达模板
RAG 评估我拆成检索和生成两个环节。检索看 Hit Rate、MRR、Recall;生成看 Faithfulness、Answer Relevance。优化上,检索做 Hybrid Search、Rerank、Chunking;生成做 Prompt Engineering、查询重写、结果过滤。最后还要关注 Latency 和 Cost。
七、一句话总结
RAG 评估要拆、优化要全,不能只盯着最终答案看。
下一步推荐
- 005|Agentic RAG:让检索过程也能自主决策
- 006|GraphRAG:知识图谱如何让 RAG 更具推理能力