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 的关键指标
- 检索:我们是否检索到了正确的片段?
- 忠实性:答案是否始终以这些片段为依据?
- 答案相关性:答案是否回应了问题?
- 上下文精确率/召回率:检索到的片段中有用片段所占的比例
召回率@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_retrievedMRR(平均倒数排名)
排名最靠前的 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 反馈 — 无需本地设置。
此课程中的所有课时
- 使用交叉编码器重新排序
- HyDE:假设性文档嵌入
- 多向量检索(ColBERT)
- RAG 评估(RAGAS、Recall@K)