跳到正文
Elaine Blog
返回

RAG 评测:分别检查检索、证据和回答

Agent Evaluation

RAG 回答错误不一定是模型问题:可能没找到文档、排序错误、证据不足,或模型没有正确引用。评测时要把检索和生成 拆开。

检索层指标

假设金标相关文档是 {d1, d3},Top-3 检索结果是 {d1, d2, d4}

def recall_at_k(retrieved: list[str], relevant: set[str], k: int) -> float:
    return len(set(retrieved[:k]) & relevant) / len(relevant)

print(recall_at_k(["d1", "d2", "d4"], {"d1", "d3"}, 3))  # 0.5

没有完整金标时,可以人工标注 Top-k 相关性,或检查“答案所需关键证据是否出现”。

生成层要按 Claim 检查

Claim 是回答中可验证的事实断言。将回答拆成 Claim,再判断每条是否被证据支持:

先固定一层再调另一层

评 Retriever 时使用固定查询和金标文档,不让模型生成波动干扰。评 Generator 时提供固定证据,确认它能否忠实回答。 最后再跑端到端组合。

Agentic RAG 还要评路径

若 Agent 会改写查询、分解问题或多跳检索,还应记录查询序列、调用次数、停止原因和每跳新增证据。最终答案正确也不能 掩盖跨租户检索或无限循环。

成本同样是指标

同时报告延迟、检索次数、重排成本、输入 Token 和每次成功成本。只提高 Recall 而让 P95 延迟翻倍,未必适合生产。

下一步

阅读 Tool 与 Agent 评测,从一次工具选择扩展到完整任务轨迹。


分享这篇文章:

上一篇
Golden Dataset:从 3 个可信案例开始
下一篇
Tool 与 Agent 评测:不只看最终回答