第二节 评估常用工具
了解了评估的基本原理之后,来介绍几个RAG评估工具,它们各自代表了不同的设计哲学和应用场景。
一、LlamaIndex Evaluation
LlamaIndex Evaluation 是深度集成于LlamaIndex框架内的评估模块,专为使用该框架构建的RAG应用提供无缝的评估能力。作为RAG开发框架的原生组件,其核心定位是为开发者在开发、调试和迭代周期中提供快速、灵活的嵌入式评估解决方案。它强调与开发流程的紧密结合,允许开发者在构建过程中即时验证和对比不同RAG策略的性能1。
适用场景:对于深度使用
LlamaIndex框架构建RAG应用的开发者而言,其内置评估模块是无缝集成的首选,提供了一站式的开发与评估体验。
1.1 核心理念与工作流
LlamaIndex 的评估理念是利用LLM作为“裁判”,以自动化的方式对RAG系统的各个环节进行打分。这种方法在很多场景下无需预先准备“标准答案”,大大降低了评估门槛。其典型工作流如下:
- 准备评估数据集:通过
DatasetGenerator从文档中自动生成问题-答案对(QueryResponseDataset),或加载一个已有的数据集。为了效率,通常会将生成的数据集保存到本地,避免重复生成。 - 构建查询引擎:搭建一个或多个需要被评估的RAG查询引擎(
QueryEngine)。这是进行对比实验的基础。 - 初始化评估器:根据评估维度,选择并初始化一个或多个评估器,如
FaithfulnessEvaluator(忠实度)和RelevancyEvaluator(相关性)。 - 执行批量评估:使用
BatchEvalRunner来管理整个评估过程。它能够高效地(可并行)将查询引擎应用于数据集中的所有问题,并调用所有评估器进行打分。 - 分析结果:从评估运行器返回的结果中,计算各项指标的平均分,从而量化地对比不同RAG策略的优劣。
1.2 应用实例:对比不同检索策略
下面示例基于我们在第三章学习的“句子窗口检索”技术,通过评估,对比它与“常规分块检索”在响应质量上的差异。
代码示例:
# ... (省略数据加载、文档解析、查询引擎构建等步骤)
# 1. 初始化评估器
# 定义需要评估的指标:忠实度和相关性
faithfulness_evaluator = FaithfulnessEvaluator(llm=Settings.llm)
relevancy_evaluator = RelevancyEvaluator(llm=Settings.llm)
evaluators = {"faithfulness": faithfulness_evaluator, "relevancy": relevancy_evaluator}
# 2. 使用BatchEvalRunner执行批量评估
# 从数据集中获取查询列表
queries = response_eval_dataset.queries
# 评估“句子窗口检索”引擎
print("\n=== 评估句子窗口检索 ===")
sentence_runner = BatchEvalRunner(evaluators, workers=2, show_progress=True)
sentence_response_results = await sentence_runner.aevaluate_queries(
queries=queries, query_engine=sentence_query_engine
)
# 评估“常规分块检索”引擎
print("\n=== 评估常规分块检索 ===")
base_runner = BatchEvalRunner(evaluators, workers=2, show_progress=True)
base_response_results = await base_runner.aevaluate_queries(
queries=queries, query_engine=base_query_engine
)
# 3. 分析并打印结果
# ... (省略结果计算与打印的辅助函数)
print(f"句子窗口检索: 忠实度={sentence_faith:.1%}, 相关性={sentence_rel:.1%}")
print(f"常规分块检索: 忠实度={base_faith:.1%}, 相关性={base_rel:.1%}")
输出如下:
============================================================
响应评估结果对比
============================================================
句子窗口检索:
忠实度: 53.3%
相关性: 66.7%
常规分块检索:
忠实度: 0.0%
相关性: 6.7%
通过这个结果可以看出,在本次实验中“句子窗口检索”的忠实度和相关性上均显著优于“常规分块检索”。
1.3 核心评估维度
LlamaIndex提供了丰富的评估器,覆盖了从检索到响应的各个环节。上述示例中主要使用了响应评估维度:
Faithfulness(忠实度): 评估生成的答案是否完全基于检索到的上下文,是检测“幻觉”现象的关键指标。分数越高,说明答案越可靠。Relevancy(相关性): 评估生成的答案与用户提出的原始问题是否直接相关,确保答案切题。
此外,它还支持专门的检索评估维度,如:
Hit Rate(命中率): 评估检索到的上下文中是否包含了正确的答案。MRR(平均倒数排名): 衡量找到正确答案的效率,排名越靠前得分越高。
二、Ragas
Ragas(RAG Assessment)是一个独立的LLM应用评估框架,能够在不绑定具体RAG开发框架的情况下组织测试数据、运行指标并保存逐样本结果。它的价值不是生成一个笼统的“总分”,而是把检索、生成和端到端质量拆成可诊断的信号,帮助开发者定位问题并验证修改是否带来真实改善2。
边界说明: Ragas中的部分指标不需要人工参考答案,但“无参考答案”不等于“无需评估数据和人工校验”。例如,忠实度仍然需要系统实际返回的回答与检索上下文;合成问题也需要经过格式、可回答性和代表性检查。
2.1 数据模型
Ragas当前使用的标准字段与早期教程中的命名有所不同:
| 当前字段 | 含义 | 典型来源 |
|---|---|---|
user_input | 用户问题 | 真实查询或经过审核的测试问题 |
retrieved_contexts | RAG实际召回的文本块列表 | 检索器运行结果 |
response | RAG系统最终回答 | 生成模型输出 |
reference | 经过审核的参考答案 | 人工标注或人工确认的候选答案 |
reference_contexts | 与问题真正相关的参考上下文 | 文档或文本块标注 |
retrieved_context_ids / reference_context_ids | 实际召回与标准相关文档的ID | 可用于确定性的检索评估 |
并非每个指标都需要全部字段。是否准备 reference 或参考上下文,应由评估目标和所选指标决定,而不是机械地给每条数据补齐所有字段。
2.2 工作流程与核心指标
一个完整的Ragas评估过程通常包括:准备问题与必要标注、运行RAG并采集上下文和回答、按指标计算逐样本结果、按问题类型切片,以及回看低分样本。常用指标包括:
Faithfulness:回答中的声明是否能够由检索上下文支持,用于发现脱离证据的生成内容。AnswerRelevancy:回答是否直接回应用户问题;它不判断事实是否正确。ContextPrecision:相关文本块是否排在检索结果前部,用于观察检索噪声和排序质量。ContextRecall:参考答案所需的信息是否被检索上下文覆盖;该指标需要参考信息。FactualCorrectness:回答中的事实是否与参考答案一致,用于补充“忠实但仍可能错误”的情况。
三、Phoenix (Arize Phoenix)
Phoenix (现由Arize维护) 是一个开源的LLM可观测性与评估平台。在RAG评估生态中,它主要扮演生产环境中的可视化分析与故障诊断引擎的角色。它通过捕获LLM应用的轨迹(Traces),提供强大的可视化、切片和聚类分析能力,帮助开发者理解线上真实数据的表现。Phoenix 的核心价值在于从海量生产数据中发现问题、监控性能漂移并进行深度诊断,是连接线下评估与线上运维的关键桥梁。它不仅提供评估指标,更强调对LLM应用进行追踪(Tracing)和可视化分析,从而快速定位问题3。

3.1 核心理念
Phoenix 的核心是“AI可观测性”,它通过追踪RAG系统内部的每一步调用(如检索、生成等),将整个流程可视化。这使得开发者可以直观地看到每个环节的输入、输出和耗时,并在此基础上进行深入的评估和调试。
3.2 工作原理
Phoenix 的工作流程是先通过基于开放标准 OpenTelemetry 的代码插桩(Instrumentation),在 RAG 应用中集成追踪功能,自动捕获 LLM 调用、函数执行等事件;随后在应用运行过程中持续生成追踪数据(Traces),记录完整的执行链路;接着在本地启动 Phoenix 的 Web 界面,加载并可视化这些追踪数据;最后在 UI 中对失败案例或表现不佳的查询进行筛选、钻取,并借助内置的**评估器(Evals)**完成深入的评估与调试。
特色功能:
- 可视化追踪: 将RAG的执行流程、数据和评估结果进行可视化展示,极大地方便了问题定位。
- 根本原因分析: 通过可视化的界面,可以轻松地对表现不佳的查询进行切片和钻取。
- 安全护栏 (
Guardrails): 允许为应用添加保护层,防止恶意或错误的输入输出,保障生产环境安全。 - 数据探索与标注: 提供数据探索、清洗和标注工具,帮助开发者利用生产数据反哺模型和系统优化。
- 与Arize平台集成:
Phoenix可以与Arize的商业平台无缝对接,实现生产环境中对RAG系统的持续监控。
四、对比建议
| 工具 | 核心机制 | 独特技术 | 典型应用场景 |
|---|---|---|---|
| RAGAS | LLM驱动评估 | 合成数据生成、无参考评估架构 | 对比不同RAG策略、版本迭代后的性能回归测试 |
| LlamaIndex | 嵌入式评估 | 异步评估引擎、模块化BaseEvaluator | 开发过程中快速验证单个组件或完整管道的效果 |
| Phoenix | 追踪分析型 | 分布式追踪、向量聚类分析算法 | 生产环境监控、Bad Case分析、数据漂移检测 |
在实践中,这些工具并非互斥,可以结合使用,以获得对RAG系统更全面、多维度的洞察。
