跳转到主要内容

作用

Evaluation Server 提供了一套完善的自动化评估工具, 用于对检索与生成任务的模型输出进行系统化、可复现的性能评测。 它支持多种主流指标,包括排序类、匹配类与摘要类评估,可直接嵌入 Pipeline 末尾,实现评估结果的自动计算与保存。

检索

生成

使用示例

检索

Trec文件评估

在信息检索中,TREC 格式文件 是标准化的评测接口,用于衡量模型在排序、召回等方面的性能。 TREC 评估通常由两类文件组成:qrel(人工标注的真实相关性)与 run(系统检索输出结果)。 一、qrel 文件(“ground truth”,人工标注的相关性) qrel 文件用于存储“哪些文档与哪个查询是相关的”这类人工标注的真实相关性判断。
在评测时,系统输出的检索结果会与 qrel 文件进行对比,用来计算指标(如 MAP、NDCG、Recall、Precision 等)。
格式(4列,空格分隔):
  • query_id:查询编号
  • iter:通常写 0(历史遗留字段,可忽略)
  • doc_id:文档编号
  • relevance:相关性标注(通常 0 表示不相关,1 或更高表示相关)
示例:
二、run 文件(系统输出的检索结果) run 文件保存检索系统的输出结果,用于与 qrel 文件对比评估性能。
每行表示一个查询返回的文档及其得分信息。
格式(6列,空格分隔):
  • query_id:查询编号
  • Q0:固定写 Q0(TREC 标准要求)
  • doc_id:文档编号
  • rank:排序名次(1 表示最相关)
  • score:系统打分
  • run_name:系统名称(例如 bm25、dense_retriever)
示例:
你可以点击以下链接下载示例文件:qrels.testresults.test
examples/eval_trec.yaml
运行以下命令编译 Pipeline:
examples/parameters/eval_trec_parameter.yaml
运行以下命令执行该 Pipeline:

显著性分析

显著性分析(Significance Testing)用于判断两个检索系统之间的性能差异是否“真实存在”,而不是由随机波动造成。
它回答的核心问题是:系统 A 的提升是否具有统计学意义?
在检索任务中,系统的性能通常通过多个查询的平均指标(如 MAP、NDCG、Recall 等)衡量。
然而,平均值的提升并不一定可靠,因为不同查询间存在随机性。
显著性分析通过统计检验方法,评估系统改进是否稳定且可复现。
常见的显著性分析方法包括:
  • 置换检验(Permutation Test):通过随机交换系统 A 和系统 B 的查询结果多次(如 10000 次),构建差异的随机分布。若实际差异超过 95% 的随机情况(p < 0.05),则认为提升显著。
  • t 检验(Paired t-test):假设两个系统的查询得分服从正态分布,计算两者均值差异的显著性。
UltraRAG 内置 双侧置换检验(Two-sided Permutation Test),在自动评估过程中输出以下关键统计信息:
  • A_mean / B_mean 表示新旧系统的平均指标;
  • Diff(A-B) 表示改进幅度;
  • p_value 为显著性检验的概率;
  • significant 为显著性判断(p < 0.05 时为 True)。
examples/eval_trec_pvalue.yaml
运行以下命令编译 Pipeline:
examples/parameters/eval_trec_pvalue_parameter.yaml
运行以下命令执行该 Pipeline:

生成

基本用法

examples/rag_full.yaml
只需在 Pipeline 的末尾添加 evaluation.evaluate 工具,即可在任务执行完成后自动计算所有指定评测指标,并输出结果到配置文件中设定的路径。

评估已有结果

如果你已经拥有模型生成的结果文件,并希望直接对其进行评估,可以将结果整理为标准化的 JSONL 格式。文件中应至少包含代表答案标签与生成结果的字段,例如:
examples/evaluate_results.yaml
为了让 Benchmark Server 读取生成结果,需要在 get_data 函数中增加 pred_ls 字段:
servers/prompt/src/benchmark.py
然后,运行以下命令编译 Pipeline:
在生成的参数文件中,新增字段 pred_ls 并指定其在原始数据中的对应键名,同时修改数据路径和名称以指向新的评估文件:
examples/parameters/evaluate_results_parameter.yaml
运行以下命令执行该 Pipeline: