Ragas RAG 评估框架
📅 创建日期:2026-02-13 | 修改日期:2026-02-14 | ⏱️ 阅读时间:约 3 分钟
Ragas(RAG Assessment)是客观评估 RAG(Retrieval-Augmented Generation)流水线质量的开源框架。在 Agentic AI 平台中,对于 RAG 系统的性能测量和持续改进至关重要。
概述
为什么需要 RAG 评估
RAG 系统由多个组件(检索、生成、上下文处理)构成,难以测量整体质量:
Ragas vs AWS Bedrock RAG Evaluation
AWS Bedrock RAG Evaluation GA
AWS Bedrock RAG Evaluation 于 2025 年 3 月 GA。与 Bedrock 原生集成,无需额外设置即可执行 RAG 评估。
Ragas vs AWS Bedrock RAG 评估
AWS Bedrock RAG Evaluation 指标:
- Context Relevance:检索的上下文是否与问题相关
- Coverage:答案是否涵盖问题的所有方面
- Correctness:答案是否准确(对比 ground truth)
- Faithfulness:答案是否忠实于上下文
Ragas 核心指标
Ragas 核心指标
Faithfulness
生成质量
答案是否忠实于上下文
Answer Relevancy
生成质量
答案是否与问题相关
Context Precision
检索质量
检索上下文的精度
Context Recall
检索质量
是否检索到必要信息
Answer Correctness
综合质量
答案的 准确性
Ragas 0.2+ API 变更
Ragas 0.2 以上版本已移除 context_relevancy 指标。上下文质量评估请组合使用 context_precision 和 context_recall。
安装和基本设置
Python 环境设置
# 安装 Ragas(推荐 0.2+)
pip install "ragas>=0.2" langchain-openai datasets
# 额外依赖
pip install pandas numpy
基本评估代码
from ragas import evaluate
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_precision,
context_recall,
)
from datasets import Dataset
# 准备评估数据集
eval_data = {
"question": [
"Kubernetes 中如何进行 GPU 调度?",
"Karpenter 的主要功能是什么?",
],
"answer": [
"Kubernetes 中 GPU 调度通过 NVIDIA Device Plugin 进行...",
"Karpenter 提供自动节点配置、合并(consolidation)、漂移检测功能...",
],
"contexts": [
["GPU 调度通过 Device Plugin 进行...", "NVIDIA GPU Operator 是..."],
["Karpenter 是 Kubernetes 节点自动伸缩器...", "通过 NodePool CRD..."],
],
"ground_truth": [
"使用 NVIDIA Device Plugin 和 GPU Operator 进行 GPU 资源调度。",
"Karpenter 提供自动节点配置、合并、漂移检测、中断处理功能。",
],
}
dataset = Dataset.from_dict(eval_data)
# 执行评估(含错误处理)
try:
results = evaluate(
dataset,
metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall,
],
)
print(results)
except Exception as e:
print(f"评估中发生错误: {e}")
# 日志记录或重试逻辑
核心指标详细说明
1. Faithfulness(忠实度)
测量答案对提供上下文的忠实程度。是检测幻觉(hallucination)的核心指标。
from ragas.metrics import faithfulness
# Faithfulness 计算过程:
# 1. 将答案分解为单个声明(claims)
# 2. 验证每个声明是否可从上下文推断
# 3. 已验证声明数 / 总声明数 = Faithfulness 分数
# 分数解释:
# 1.0: 所有声明都有上下文支持
# 0.5: 一半声明有上下文支持
# 0.0: 没有声明有上下文支持(严重幻觉)
2. Answer Relevancy(答案相关性)
测量答案与问题的相关程度。
from ragas.metrics import answer_relevancy
# Answer Relevancy 计算过程:
# 1. 从答案反向生成问题
# 2. 计算生成问题与原始问题的相似度
# 3. 多次重复取平均
# 分数解释:
# 高分: 答案直接与问题相关
# 低分: 答案包含与问题无关的内容
3. Context Precision(上下文精确度)
测量检索上下文中实际有用信息的比例。
from ragas.metrics import context_precision
# Context Precision 计算:
# - 识别生成 Ground truth 答案所需的上下文
# - 确认排名靠前的上下文是否包含有用信息
# - 相关上下文排名越高分数越高
4. Context Recall(上下文召回率)
测量生成正确答案所需的信息是否包含在检索的上下文中。
from ragas.metrics import context_recall
# Context Recall 计算:
# 1. 将 Ground truth 分解为单个句子
# 2. 确认每个句子是否可从检索的上下文推断
# 3. 可推断句子数 / 总句子数 = Recall 分数