Skip to content

05.1 - RAGAS 评估框架

定位: RAG 系统的"体检报告"——通过自动化评估量化 RAG 系统的各方面表现 面试高频度: ⭐⭐⭐⭐ 考查方式: RAGAS 架构、评估流程、指标解读、使用方式

一、这是什么?为什么需要它?

是什么

RAGAS(RAG Assessment)是一个专门用于评估 RAG 系统的自动化框架。它通过一组标准化的指标,从"检索质量"和"生成质量"两个维度量化 RAG 系统的表现。

RAGAS 做的事:
  输入:一个测试集(问题 + 标准答案 + 文档库)
  过程:系统回答 -> LLM 作为裁判打分
  输出:各维度分数 + 综合报告

为什么需要专门的 RAG 评估?

传统 NLG 评估指标不适合 RAG:

BLEU/ROUGE(机器翻译指标):
  依赖参考回答的精确词汇匹配
  但 RAG 回答可以表述不同但语义相同 -> 低分误判

标准 LLM 评估:
  只评估生成质量
  但 RAG 的检索质量同样关键

RAGAS 的解法:
  将评估拆分为独立维度
  用 LLM 作为"裁判"进行评估
  覆盖检索+生成全链路

二、原理拆解

2.1 RAGAS 核心评估流程

+------------------------------------------------------------------+
|                    RAGAS 评估流程                                 |
|                                                                   |
|  1. 准备测试集                                                   |
|     [{问题}, {标准答案(可选)}, {检索上下文}]                       |
|                                                                   |
|  2. 运行 RAG 系统                                                 |
|     对每个问题:系统检索 + 生成 -> {回答, 检索文档}                |
|                                                                   |
|  3. LLM 作为裁判评估                                              |
|     各维度评分:                                                  |
|     - Faithfulness: "回答是否基于检索文档?"                        |
|     - Answer Relevancy: "回答是否回答了问题?"                      |
|     - Context Precision: "检索文档中相关比例有多高?"               |
|     - Context Recall: "需要的所有信息都检索到了吗?"               |
|                                                                   |
|  4. 生成报告                                                     |
|     各维度分数 + 综合分数                                         |
|     可对比不同配置的 A/B 测试结果                                  |
+------------------------------------------------------------------+

2.2 RAGAS 核心指标

RAGAS 的指标分为两大部分:

生成质量(Generation):
  Faithfulness(忠实度):
    回答中的每个陈述是否都能在检索文档中找到来源?
    核心:衡量有无幻觉
    
  Answer Relevancy(答案相关性):
    回答与问题的相关程度?
    核心:衡量有无答非所问

检索质量(Retrieval):
  Context Precision(上下文精度):
    检索结果中有多大比例是真正相关的?
    核心:衡量检索的"精确率"
    
  Context Recall(上下文召回):
    所有需要的信息是否都被检索到了?
    核心:衡量检索的"召回率"

2.3 RAGAS 评分机制

python
# RAGAS 的评估本质:LLM-as-Judge

# Faithfulness 评分示例
faithfulness_prompt = """
给定以下文档和回答,判断回答中的陈述是否都基于文档。

文档:根据公司规定,员工年假为15天。
回答:公司年假是15天,申请需要提前3天。

请将回答拆分为陈述句,并判断每个陈述句是否在文档中有依据。

输出 JSON:
{
  "claims": [
    {"claim": "公司年假是15天", "supported": true, "evidence": "员工年假为15天"},
    {"claim": "申请需要提前3天", "supported": false, "evidence": "文档中未提及"}
  ],
  "faithfulness_score": 0.5
}
"""

2.4 RAGAS vs 其他评估框架

框架特点优势劣势
RAGASLLM-as-Judge指标全面、易于使用依赖 LLM 裁判质量
TruLens反馈函数可自定义指标学习成本高
DeepEval模块化设计部署简单生态较新
LangSmith全链路追踪集成 LangChain商业产品
人工评估人工标注最准确成本高、不可扩展

三、图解全景

RAGAS 评估覆盖范围

+------------------------------------------------------------------+
|                    RAGAS 评估覆盖范围                              |
|                                                                   |
|  完整的 RAG 系统需要评估两个端:                                   |
|                                                                   |
|  +-------------+        +-------------+                           |
|  | 检索系统     |        | 生成系统     |                           |
|  +------+------+        +------+------+                           |
|         |                      |                                  |
|         v                      v                                  |
|  Context Precision      Faithfulness                               |
|  Context Recall         Answer Relevancy                           |
|  (检索出来的准不准)      (生成的好不好)                              |
|                                                                   |
|  额外指标:                                                       |
|  Aspect Critique(安全性/有用性等)                                 |
|  答案正确性 (Answer Correctness)                                   |
+------------------------------------------------------------------+

四、实战验证

4.1 RAGAS 快速上手

python
# 安装:pip install ragas

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

# 准备评估数据
data = {
    "question": [
        "公司年假是多少天?",
        "远程工作政策是什么?",
    ],
    "answer": [
        "公司年假为15天。",
        "公司支持每周2天远程工作。",
    ],
    "contexts": [
        ["根据规定,员工年假为15天。"],
        ["远程工作政策:每周最多2天。"],
    ],
    "ground_truth": [
        "公司年假15天",
        "每周2天远程工作",
    ]
}

dataset = Dataset.from_dict(data)

# 运行评估
results = evaluate(
    dataset=dataset,
    metrics=[
        faithfulness,
        answer_relevancy,
        context_precision,
        context_recall,
    ]
)

# 输出结果
print(f"Faithfulness: {results['faithfulness']:.3f}")
print(f"Answer Relevancy: {results['answer_relevancy']:.3f}")
print(f"Context Precision: {results['context_precision']:.3f}")
print(f"Context Recall: {results['context_recall']:.3f}")

4.2 持续评估集成

python
# 在 CI/CD 中集成 RAGAS 评估

def evaluate_rag_system(config_name: str, retriever, llm):
    """评估 RAG 系统的某个配置"""
    from ragas.metrics import faithfulness, context_precision

    test_dataset = load_test_dataset()  # 加载测试集

    results = run_rag_system(test_dataset, retriever, llm)
    scores = evaluate(results)

    # 检查是否达到质量门禁
    if scores["faithfulness"] < 0.8:
        print(f"FAIL: Faithfulness {scores['faithfulness']:.3f} < 0.8")
        return False
    if scores["context_precision"] < 0.7:
        print(f"FAIL: Context Precision {scores['context_precision']:.3f} < 0.7")
        return False

    print(f"PASS: {config_name}")
    return True

五、面试视角

问题答案要点
RAGAS 的评估为什么会用 LLM 作为裁判?因为传统 NLG 指标(BLEU/ROUGE)只关注词汇匹配,无法评估语义质量。用 LLM 作为裁判可以理解语义、判断事实一致性、评估相关性
RAGAS 的核心指标有哪些?分别评估什么?Faithfulness(忠实度:回答是否基于文档)、Answer Relevancy(答案相关性:是否回答了问题)、Context Precision(上下文精度:检索的相关比例)、Context Recall(上下文召回:信息是否检索全)
RAGAS 评估的局限性?1) LLM 裁判本身可能不准确(裁判偏差);2) 评估成本高(每次评估需要 LLM 调用);3) 中文评估效果依赖 LLM 的中文能力;4) 指标之间的权重和综合分数需要人工设计
如何构建一个好的 RAG 测试集?覆盖:1) 简单问答(直接有答案);2) 推理问题(需要综合多块信息);3) 边界问题(知识库边缘内容);4) 无答案问题(知识库中没有,测试"不知道"能力);5) 多跳问题(需要多步推理)

📚 相关链接

  • **评估指标详解** — 各指标的原理和计算方式
  • **RAG系统调优策略** — 基于评估结果的系统调优
  • **RAG系统部署与监控** — 生产环境中的持续评估
  • <- 返回 **评估优化索引**

Knowledge4J — Java 知识库