0Pricing
AI Agents · 课时

RAG 评估(RAGAS、Recall@K)

测量忠实度、答案相关性、上下文精确率和 recall@K,以判断改动是否有效。

RAG 评估(RAGAS、Recall@K) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

无法衡量,就无法改进

RAG 有许多可调参数:片段大小、前 K 个结果、重新排序器、提示和模型。如果没有指标,每次改动都只能靠猜测。

RAG 的关键指标

  1. 检索:我们是否检索到了正确的片段?
  2. 忠实性:答案是否始终以这些片段为依据?
  3. 答案相关性:答案是否回应了问题?
  4. 上下文精确率/召回率:检索到的片段中有用片段所占的比例

召回率@K

构建一个由(问题、相关片段 ID 列表)组成的标准集。衡量前 K 个检索片段中包含相关片段的频率:

def recall_at_k(eval_set, k=5):
    hits = 0
    for item in eval_set:
        retrieved = retriever(item['question'], k=k)
        if any(c.id in item['relevant_ids'] for c in retrieved):
            hits += 1
    return hits / len(eval_set)

精确率@K

检索到的片段中,有多少比例是相关的?

def precision_at_k(eval_set, k=5):
    total_relevant = 0
    total_retrieved = 0
    for item in eval_set:
        retrieved = retriever(item['question'], k=k)
        total_relevant += sum(1 for c in retrieved if c.id in item['relevant_ids'])
        total_retrieved += k
    return total_relevant / total_retrieved

MRR(平均倒数排名)

排名最靠前的 FIRST 个相关文档排在第几位?

def mrr(eval_set, k=10):
    total = 0
    for item in eval_set:
        retrieved = retriever(item['question'], k=k)
        for rank, c in enumerate(retrieved, start=1):
            if c.id in item['relevant_ids']:
                total += 1 / rank
                break
    return total / len(eval_set)

忠实性(由 LLM 评判)

使用 LLM 检查答案中的每个陈述是否都受到上下文支持:

judge_prompt = '''
Given the context and answer, identify each factual claim in the answer.
For each claim, judge whether the context supports it.
Return {claims: [{claim, supported: true/false}]}.
'''
result = judge_llm.invoke(judge_prompt.format(context=ctx, answer=ans))

答案相关性

反向评判:询问 LLM:“这个答案能否作为该问题的答案?”这样可以发现偏离主题的输出。

RAGAS 框架

RAGAS 会自动执行上述指标的计算:

# pip install ragas
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall

results = evaluate(
    dataset,            # HF dataset with question, contexts, answer, ground_truth
    metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(results)

构建标准集

由人工整理 20–200 个(问题、预期答案、相关片段)元组。应覆盖:

  • 常见查询
  • 边界情况
  • 对抗性输入(语料库之外的问题)

合成评测集

启动方式:让 LLM 根据您的文档生成问答对。质量较低,但速度较快:

synth_prompt = 'Read this document and write 3 questions a user might ask, with answers from the doc:\n{doc}'
# Use as a starting point; humans curate later.
print(synth_prompt)

LangSmith 和 Langfuse 数据集

这两个工具都可以将生产环境中的追踪记录转换为评测数据集。选择 50 个实际表现不佳的问题,为其标注正确答案,并将其用作基准。

不要过度优化单个指标

最大化召回率@K 可能会损害精确率@K(产生过多误报)。请跟踪多个指标以及综合指标。

生产环境中的 A/B 测试

当您拥有一个与用户满意度相关的离线评测后,就可以在生产环境中对改动进行 A/B 测试,并同时比较各项指标和用户的点赞率。

召回率@K 的定义

召回率@5 = 0.8 意味着什么?

回顾

构建标准集。衡量召回率@K、精确率@K、MRR、忠实性和答案相关性。使用 RAGAS 实现自动化。根据指标不断迭代。

常见问题解答

「RAG 评估(RAGAS、Recall@K)」课时是免费的吗?

是的 — 「RAG 评估(RAGAS、Recall@K)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「RAG 评估(RAGAS、Recall@K)」这节课中我会学到什么?

测量忠实度、答案相关性、上下文精确率和 recall@K,以判断改动是否有效。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「RAG 评估(RAGAS、Recall@K)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用交叉编码器重新排序
  2. HyDE:假设性文档嵌入
  3. 多向量检索(ColBERT)
  4. RAG 评估(RAGAS、Recall@K)
← 返回 AI Agents