目录/评估工具

第二节 评估常用工具

了解了评估的基本原理之后,来介绍几个RAG评估工具,它们各自代表了不同的设计哲学和应用场景。

一、LlamaIndex Evaluation

LlamaIndex Evaluation深度集成于LlamaIndex框架内的评估模块,专为使用该框架构建的RAG应用提供无缝的评估能力。作为RAG开发框架的原生组件,其核心定位是为开发者在开发、调试和迭代周期中提供快速、灵活的嵌入式评估解决方案。它强调与开发流程的紧密结合,允许开发者在构建过程中即时验证和对比不同RAG策略的性能1

适用场景:对于深度使用 LlamaIndex 框架构建RAG应用的开发者而言,其内置评估模块是无缝集成的首选,提供了一站式的开发与评估体验。

1.1 核心理念与工作流

LlamaIndex 的评估理念是利用LLM作为“裁判”,以自动化的方式对RAG系统的各个环节进行打分。这种方法在很多场景下无需预先准备“标准答案”,大大降低了评估门槛。其典型工作流如下:

  1. 准备评估数据集:通过 DatasetGenerator 从文档中自动生成问题-答案对(QueryResponseDataset),或加载一个已有的数据集。为了效率,通常会将生成的数据集保存到本地,避免重复生成。
  2. 构建查询引擎:搭建一个或多个需要被评估的RAG查询引擎(QueryEngine)。这是进行对比实验的基础。
  3. 初始化评估器:根据评估维度,选择并初始化一个或多个评估器,如 FaithfulnessEvaluator(忠实度)和 RelevancyEvaluator(相关性)。
  4. 执行批量评估:使用 BatchEvalRunner 来管理整个评估过程。它能够高效地(可并行)将查询引擎应用于数据集中的所有问题,并调用所有评估器进行打分。
  5. 分析结果:从评估运行器返回的结果中,计算各项指标的平均分,从而量化地对比不同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_contextsRAG实际召回的文本块列表检索器运行结果
responseRAG系统最终回答生成模型输出
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

phoenix

3.1 核心理念

Phoenix 的核心是“AI可观测性”,它通过追踪RAG系统内部的每一步调用(如检索、生成等),将整个流程可视化。这使得开发者可以直观地看到每个环节的输入、输出和耗时,并在此基础上进行深入的评估和调试。

3.2 工作原理

Phoenix 的工作流程是先通过基于开放标准 OpenTelemetry代码插桩(Instrumentation,在 RAG 应用中集成追踪功能,自动捕获 LLM 调用、函数执行等事件;随后在应用运行过程中持续生成追踪数据(Traces,记录完整的执行链路;接着在本地启动 Phoenix 的 Web 界面,加载并可视化这些追踪数据;最后在 UI 中对失败案例或表现不佳的查询进行筛选、钻取,并借助内置的**评估器(Evals)**完成深入的评估与调试。

特色功能:

  • 可视化追踪: 将RAG的执行流程、数据和评估结果进行可视化展示,极大地方便了问题定位。
  • 根本原因分析: 通过可视化的界面,可以轻松地对表现不佳的查询进行切片和钻取。
  • 安全护栏 (Guardrails): 允许为应用添加保护层,防止恶意或错误的输入输出,保障生产环境安全。
  • 数据探索与标注: 提供数据探索、清洗和标注工具,帮助开发者利用生产数据反哺模型和系统优化。
  • 与Arize平台集成: Phoenix 可以与Arize的商业平台无缝对接,实现生产环境中对RAG系统的持续监控。

四、对比建议

工具核心机制独特技术典型应用场景
RAGASLLM驱动评估合成数据生成、无参考评估架构对比不同RAG策略、版本迭代后的性能回归测试
LlamaIndex嵌入式评估异步评估引擎、模块化BaseEvaluator开发过程中快速验证单个组件或完整管道的效果
Phoenix追踪分析型分布式追踪、向量聚类分析算法生产环境监控、Bad Case分析、数据漂移检测

在实践中,这些工具并非互斥,可以结合使用,以获得对RAG系统更全面、多维度的洞察。

参考文献

Footnotes

  1. LlamaIndex Evaluating

  2. Ragas Docs

  3. Arize AI Phoenix

《RAG 技术全栈指南》」· 第 19/28 章 · 内容开源自 datawhalechina/all-in-rag CC BY-NC-SA),版权归原作者