使用 LabelledEvaluatorDataset 评估你的 LLM Evaluator:LlamaIndex 数据集驱动的评估器基准测试指南
【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index
LabelledEvaluatorDataset是 LlamaIndex llama-datasets 体系中专为"评估评估器(evaluator)"而设计的数据集类型。它通过提供带参考答案(reference_score、reference_feedback)的评测样本,让你能够以流水线化的方式对任意 LLM 评估器进行基准测试,从而回答一个关键问题:你用来评判 RAG 系统回答质量的评估器,它本身的评判能力到底有多可靠?阅读本文后,你将掌握如何下载 llama-dataset、基于EvaluatorBenchmarkerPack批量运行评估器并产出可量化的基准测试结果,以及如何用LabelledPairwiseEvaluatorDataset评测擅长"二选一"的成对比较评估器。
llama-datasets:为"评估评估器"而生的数据集
llama-datasets 的设计初衷是让开发者能够快速对 LLM 系统或任务进行基准测试(benchmark)。在这一体系中,LabelledEvaluatorDataset专门服务于一个略显"元"的目标——评估评估器本身。
所谓评估评估器,是指:当你用一个 LLM(如CorrectnessEvaluator)去判断某个回答是否正确地覆盖了真实答案时,这个判断本身可能出错。LabelledEvaluatorDataset提供了"标准答案级别的参考答案",使得我们可以把评估器的输出与参考答案做计算性对比,从而量化评估器的好坏。
该数据集中的每个样本主要携带以下属性:
| 属性 | 含义 |
|---|---|
query | 原始查询问题 |
answer | 被评估的模型回答(LLM 生成的内容) |
ground_truth_answer | 该问题的标准答案 |
reference_score | 参考答案给出的评分(评估器的预测应当逼近此值) |
reference_feedback | 参考答案给出的反馈文本(评估器的评判理由应当逼近此内容) |
此外样本还附带一些补充属性。整个使用流程可以概括为两步:用你提供的 LLM 评估器对数据集中的所有样本做出预测,然后将预测结果与对应的参考答案进行计算性比较,得出衡量评估质量的指标。
端到端实践:用 EvaluatorBenchmarkerPack 完成基准测试
原文档给出了一个高度可复用的代码骨架。它依赖三个核心组件:
download_llama_dataset:从 llama-datasets 注册中心下载数据集;download_llama_pack:下载并实例化 LlamaPack(这里指EvaluatorBenchmarkerPack);- 评估器本体(示例中使用
CorrectnessEvaluator+ Gemini LLM)。
from llama_index.core.llama_dataset import download_llama_dataset from llama_index.core.llama_pack import download_llama_pack from llama_index.core.evaluation import CorrectnessEvaluator from llama_index.llms.gemini import Gemini # download dataset evaluator_dataset, _ = download_llama_dataset( "MiniMtBenchSingleGradingDataset", "./mini_mt_bench_data" ) # define evaluator gemini_pro_llm = Gemini(model="models/gemini-pro", temperature=0) evaluator = CorrectnessEvaluator(llm=gemini_pro_llm) # download EvaluatorBenchmarkerPack and define the benchmarker EvaluatorBenchmarkerPack = download_llama_pack( "EvaluatorBenchmarkerPack", "./pack" ) evaluator_benchmarker = EvaluatorBenchmarkerPack( evaluator=evaluator, eval_dataset=evaluator_dataset, show_progress=True, ) # produce the benchmark result benchmark_df = await evaluator_benchmarker.arun( batch_size=5, sleep_time_in_seconds=0.5 )步骤拆解
- 下载数据集:
download_llama_dataset("MiniMtBenchSingleGradingDataset", "./mini_mt_bench_data")会将MiniMtBenchSingleGradingDataset(对 MT-Bench 数据集做了单点评分改造的版本)下载并持久化到本地目录./mini_mt_bench_data。返回值是一个元组,第一个元素即数据集对象,第二个元素通常是文档集合或附加元数据。 - 定义评估器:这里用
Gemini(model="models/gemini-pro", temperature=0)实例化 LLM,并通过temperature=0保证评估输出尽可能稳定、可复现;随后将其包装为CorrectnessEvaluator。 - 实例化基准测试器:
EvaluatorBenchmarkerPack接收三个关键参数——evaluator(被评测的评估器)、eval_dataset(评测数据集)与show_progress(是否显示进度条)。 - 异步执行:
arun(batch_size=5, sleep_time_in_seconds=0.5)以每批 5 个样本的粒度异步跑完整个数据集,批间休眠 0.5 秒用于规避 API 限流;最终返回一个 DataFrame(benchmark_df),其中包含评估器预测与参考答案的对比结果及衍生指标。
一个值得注意的细节
原文档示例的EvaluatorBenchmarkerPack初始化代码中出现了evaluators["gpt-3.5"]的写法,这源于原示例上下文中的多评估器映射结构。在实际使用时,请直接传入你定义好的单个评估器实例(例如evaluator=evaluator),与上述完整示例保持一致。
相关数据集:LabelledPairwiseEvaluatorDataset
与LabelledEvaluatorDataset同族的一个兄弟数据集是LabelledPairwiseEvaluatorDataset。二者的目标一致——评估评估器,但任务形态不同:
LabelledEvaluatorDataset:评估器对"单一回答"进行打分/反馈,然后与参考评分对比;LabelledPairwiseEvaluatorDataset:评估器面对同一查询下的两个 LLM 回答,需要判定哪一个更好。
因此,使用LabelledPairwiseEvaluatorDataset时,评估器必须配备执行成对比较任务的能力,即应当使用PairwiseComparisonEvaluator。除此之外,其使用流程与LabelledEvaluatorDataset完全相同:下载数据集 → 定义成对比较评估器 → 用EvaluatorBenchmarkerPack批量运行 → 对比参考结果得到基准指标。
源码级佐证:评估器在仓库中的真实落点
上述流程所涉及的评估器并非虚构概念,它们都实现在当前仓库的评估模块中:
- CorrectnessEvaluator 实现:单点评分评估器,基于 LLM 判断回答相对参考答案的正确性,是
LabelledEvaluatorDataset场景下的典型评测对象; - PairwiseComparisonEvaluator 实现:成对比较评估器,在两个回答之间选出更优者,是
LabelledPairwiseEvaluatorDataset场景下的必备评估器; - 评估模块统一导出:从
from llama_index.core.evaluation import CorrectnessEvaluator的导入路径可以看到,所有评估器类均从核心包的evaluation子模块导出,这也解释了示例代码中导入语句的来源。
此外,download_llama_dataset与download_llama_pack均来自llama_index.core的公开 API(llama_index.core.llama_dataset与llama_index.core.llama_pack),相关数据集与 Pack 的注册映射可以在 命令行映射配置 中进一步核对。从源码结构看,LabelledEvaluatorDataset及其相关的EvaluatorBenchmarkerPack正是围绕"数据集即基准"这一设计哲学构建的:数据集中预置的参考评分与参考反馈,为评估器的质量提供了可计算、可复现的衡量标尺。
更多学习材料
若要直观地看到这些数据集在真实基准任务中的运行效果,可以查看仓库中基于 MT-Bench 数据集微调版本对 LLM 评估器进行基准测试的 notebook:
- MTBench Single Grading:对 MT-Bench 回答做单点评分的评估器基准测试;
- MTBench Human Judge:以人工评判作为参照的 MT-Bench 评估器基准测试。
通过动手运行这些 notebook,你可以把本文的流程落地为可观测、可比较的评估器质量报告,从而为自己的 RAG 或 Agent 系统选出一位"信得过"的裁判。
【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考