跳到主要内容
版本:1.0

RAG 自动化评测

RAG 的效果不能只看某一个问题的最终答案。评测需要区分“检索是否找对”和“模型是否用对”,并通过一批带有 Ground Truth 的问题进行回归测试。

评测维度​

维度要回答的问题
Context Recall相关信息是否被召回,是否遗漏了正确片段?
Context Precision召回结果中相关片段的比例是否足够高?
Faithfulness答案是否忠实于召回上下文,有没有幻觉?
Answer Relevance答案是否真正回应了用户问题?
Answer Correctness答案与标准答案相比是否正确?

一次典型的 RAG 评测样本至少包含:

{
"question": "用户的问题",
"answer": "RAG 生成的答案",
"contexts": ["检索到的片段 1", "检索到的片段 2"],
"ground_truth": "领域专家确认的正确答案",
}

使用 Ragas​

Ragas 可以让大模型作为评审者,结合 Embedding 模型计算多种指标。示例:

from datasets import Dataset
from ragas import evaluate
from ragas.metrics import (
answer_correctness,
context_precision,
context_recall,
)

samples = {
"question": ["张伟是哪个部门的?"],
"answer": ["张伟是教研部的。"],
"contexts": [[
"张伟,教研部,负责课程研发。",
"李明,IT 部,负责系统维护。",
]],
"ground_truth": ["张伟是教研部的。"],
}

score = evaluate(
Dataset.from_dict(samples),
metrics=[
answer_correctness,
context_recall,
context_precision,
],
llm=evaluation_llm,
embeddings=evaluation_embeddings,
)

result = score.to_pandas()

evaluation_llm 和 evaluation_embeddings 应使用项目中实际可用的模型适配器。示例中的变量不包含任何凭据,密钥应从环境变量或安全配置中读取。

如何定位问题​

可以按下面的顺序分析评测结果:

  1. Context Recall 低:正确内容没有被召回。检查文档是否覆盖问题、切片是否破坏语义、查询是否过于简略。
  2. Context Precision 低:召回内容噪声过多。检查 top_k、相似度阈值、元数据过滤和重排序。
  3. 召回指标正常但 Answer Correctness 低:模型看到了正确内容但没有正确使用。检查提示词、上下文长度、答案格式和模型能力。
  4. Faithfulness 低:模型使用了上下文之外的知识。应加强“仅根据参考信息回答”的约束,并对无答案场景定义明确的拒答策略。

自动化回归​

评测集应包含真实用户问题、边界问题、歧义问题和无答案问题。每次调整切片、Embedding、检索策略或提示词后,都应重新运行整套评测,比较整体指标而不是只关注一个样例。

自动化评测不能完全替代领域专家。专家应参与问题集构建、Ground Truth 审核和业务指标设计;Ragas 等框架的价值在于把专家标准转化为可重复的批量测试。