RAG 评测指标体系表
按检索层 → 生成层 → 端到端层三层组织,适合用于 LangSmith Traces 分析、回归测试、CI 门禁和线上监控。
| 评测层级 | 指标 | 计算方式 / 评估逻辑 | 参考阈值 | 典型问题定位 |
|---|---|---|---|---|
| 检索层 | Context Recall上下文召回率 | 可被检索上下文支撑的标准答案信息点 / 标准答案总信息点 | ≥ 0.85 | 答案残缺、漏关键信息;分块过碎、Embedding 不适配、Top-K 过小 |
| 检索层 | Context Precision上下文精确率 | 检索结果中与问题相关的片段数 / 检索返回的总片段数 | ≥ 0.80 | 噪音多、模型被干扰;向量阈值过低、缺少 Rerank、元数据过滤不足 |
| 检索层 | Hit Rate@K命中率 | Top-K 结果中至少包含 1 个相关片段的 query 占比,常用 K=3/5/10 | Hit Rate@3 ≥ 0.90 | 基础召回失败;索引、分块、检索链路异常 |
| 检索层 | MRR平均倒数排名 | mean(1 / 第一个相关片段位置) | ≥ 0.75 | 相关文档存在但排序靠后;需 Rerank、查询改写、混合检索 |
| 检索层 | NDCG@K排序质量 | 考虑相关度分级的排序质量,相关片段越靠前分数越高 | NDCG@5 ≥ 0.80 | 排序策略弱;多路召回融合、重排模型、相关性分级不足 |
| 生成层 | Faithfulness忠实度 | 答案中可被上下文验证的事实点 / 答案总事实点 | ≥ 0.90,红线指标 | 幻觉、编造、与上下文矛盾;Prompt 约束不足、温度过高、检索不匹配 |
| 生成层 | Answer Relevancy答案相关性 | 答案是否直接回应问题,无答非所问、冗余发散 | ≥ 0.85 | 意图理解偏差、检索内容跑偏;需查询改写、Few-shot、上下文压缩 |
| 生成层 | Answer Completeness答案完整度 | 答案是否覆盖问题所需全部信息要点 | ≥ 0.80 | 关键信息遗漏;检索召回不足或生成时丢失要点 |
| 生成层 | Citation Precision引用准确率 | 引用片段中真正支撑答案的比例 | ≥ 0.90 | 引用错位、来源不匹配;引用校验、来源映射、答案-片段对齐不足 |
| 端到端层 | 端到端准确率 | 事实准确、完整解决用户问题、无幻觉的 query 占比 | ≥ 85% | 整体问答质量下降;需综合定位检索、生成、Prompt、知识库 |
| 端到端层 | 拒答准确率 | 对知识库未覆盖问题正确拒答的比例 | ≥ 95% | 超纲问题被编造;拒答策略、边界识别、Prompt 安全约束不足 |
| 端到端层 | 用户满意度 / 采纳率 | 真实用户评分、点赞踩、采纳率、人工修正率 | 满意度 ≥ 4/5,采纳率 ≥ 80% | 真实体验差;需结合 bad case 回流评测集 |
指标分级阈值
不同业务可以微调,但建议先用这套阈值做基线,再根据线上表现上下浮动 5%~10%。
| 指标 | 优秀 | 可部署 | 需优化 | 必须修复 |
|---|---|---|---|---|
| Faithfulness | ≥ 0.90 | 0.75–0.90 | 0.60–0.75 | < 0.60 |
| Answer Relevancy | ≥ 0.85 | 0.70–0.85 | 0.50–0.70 | < 0.50 |
| Context Precision | ≥ 0.80 | 0.60–0.80 | 0.40–0.60 | < 0.40 |
| Context Recall | ≥ 0.85 | 0.70–0.85 | 0.50–0.70 | < 0.50 |
指标组合诊断表
单一指标只能反映局部问题,组合判断更适合定位 RAG 真实瓶颈。
| 指标组合 | 用户感受 | 病根定位 | 修复方向 |
|---|---|---|---|
| 高 Faithfulness + 低 Answer Relevancy | 回答很“忠实”,但答非所问 | 检索跑偏或意图理解偏差 | 查询改写、优化 Embedding、澄清意图 |
| 高 Context Recall + 低 Faithfulness | 正确资料已召回,但模型仍编造 | 生成端约束不足 | 强化 Prompt、降低温度、增加引用校验 |
| 低 Context Precision + 低 Context Recall | 检索全面失效 | 分块、索引、Embedding、Rerank 等底层问题 | 优化分块、混合检索、Rerank、元数据过滤 |
| 高 Context Precision + 高 Context Recall | 检索基本健康 | 问题主要在生成或端到端体验 | 优化 Prompt、答案整合、引用、拒答策略 |
检索层四象限诊断
| Context Recall | Context Precision | 问题根源 | 优化方向 |
|---|---|---|---|
| 低 | 低 | 检索整体失效 | 优化分块、替换领域 Embedding、检查索引 |
| 低 | 高 | 检索过于保守,漏关键信息 | 降低阈值、增大 Top-K、启用多路召回 |
| 高 | 低 | 噪音过多,有效信息被淹没 | 增加 Rerank、上下文压缩、过滤无效元数据 |
| 高 | 高 | 检索层健康 | 聚焦生成层和端到端体验 |
生成层诊断
| Faithfulness | Answer Relevancy | 核心问题 | 优化方向 |
|---|---|---|---|
| 低 | 任意 | 模型幻觉或检索内容不匹配 | 强化“仅基于上下文回答”、降温度、Rerank 提升检索精度 |
| 高 | 低 | 检索有效但答案跑题或冗余 | 查询改写、Few-shot、精简上下文、优化 Prompt |
| 低 | 低 | 生成链路整体失控 | 同时检查检索质量、Prompt、模型选择、上下文长度 |
优化优先级
建议按以下顺序迭代,避免盲目调 Prompt。
Faithfulness 低于 0.70:禁止上线
- 强化 Prompt 原文约束
- 降低温度,例如 0.0–0.1
- 增加“无信息则拒答”逻辑
- 使用 Rerank 提升检索精度
Context Recall 低于 0.50:关键信息大量缺失
- 调大分块尺寸或启用父子文档检索
- 增大 Top-K
- 启用混合检索:向量 + BM25
- 检查知识库覆盖度
Context Precision 低于 0.50:噪音干扰严重
- 增加 Rerank
- 清洗文档元数据
- 压缩冗余上下文
- 提高向量检索阈值
Answer Relevancy 低于 0.60:答非所问
- 查询改写
- 意图澄清
- 增加 Few-shot 示例
- 精简检索上下文
工程层监控指标
| 指标 | 参考目标 | 问题定位 |
|---|---|---|
| 检索时延 | ≤ 100ms | 向量库、索引、Rerank 性能问题 |
| 端到端首包时延 | ≤ 1s | Prompt 过长、模型响应慢、链路串行 |
| 复杂问答总时延 | ≤ 3s | 多步检索、工具调用、LLM 生成过慢 |
| 单请求 Token 成本 | 按业务预算设定 | 上下文过长、重复检索、缓存未命中 |
| 接口可用性 | ≥ 99.9% | 服务稳定性、超时、依赖故障 |
| 超时率 | ≤ 0.1% | 模型服务、检索服务、网络抖动 |
| 鲁棒性衰减 | 错别字、口语化、长 query 衰减 ≤ 10% | 查询改写、意图识别、归一化不足 |
LangSmith 落地用法
| 分析目标 | 在 LangSmith 中怎么做 | 对应指标 |
|---|---|---|
| 看完整链路 | 打开 Trace 树,逐层查看 query rewrite、retrieval、rerank、LLM generation | 全链路诊断 |
| 定位检索问题 | 检查 retrieved_contexts、相似度分数、Top-K、Rerank 前后排序 | Context Recall / Precision / MRR |
| 定位生成问题 | 对比 input、context、prompt、output,检查是否编造或跑题 | Faithfulness / Answer Relevancy |
| 做回归测试 | 将 bad case 导入 Datasets,固定测试集后跑 Experiments | 全指标对比 |
| 做版本对比 | 同一数据集上对比新旧 Prompt、模型、检索策略 | 延迟、成本、准确率、忠实度 |
| 线上监控 | 按 tags、user_id、session_id 过滤 Trace,持续采集 bad case | 端到端准确率、满意度 |
可直接使用的判断口诀
- 答案跑偏查检索
- 内容乱编查生成
- 全线拉胯查基建
- Faithfulness 不达标,优先降温和加约束
- Recall 不达标,优先查分块、Embedding、Top-K
- Precision 不达标,优先查 Rerank、阈值、噪音过滤
需要我帮你整理一份 LangSmith 的 bad case 分析 checklist 吗?按"用户问题→检索结果→生成回答"三步走,快速定位问题根因。