作用
Evaluation Server 提供了一套完善的自动化评估工具, 用于对检索与生成任务的模型输出进行系统化、可复现的性能评测。 它支持多种主流指标,包括排序类、匹配类与摘要类评估,可直接嵌入 Pipeline 末尾,实现评估结果的自动计算与保存。检索
| 指标名 | 类型 | 说明 |
|---|---|---|
MRR | float | Mean Reciprocal Rank(平均倒数排名),衡量首个相关文档的平均排名位置。 |
MAP | float | Mean Average Precision(平均精确率),综合考虑检索的精确性与召回率。 |
Recall | float | 召回率,衡量检索系统能找回多少相关文档。 |
Precision | float | 精确率,衡量检索结果中有多少是相关文档。 |
NDCG | float | Normalized Discounted Cumulative Gain(标准化折损累计增益),评估检索结果与理想排序的一致性。 |
生成
| 指标名 | 类型 | 说明 |
|---|---|---|
EM | float | Exact Match,预测与任一参考完全相同。 |
Acc | float | Answer 包含参考答案中的任一形式(宽松匹配)。 |
StringEM | float | 针对多组答案的软匹配比例(常用于多选/嵌套 QA)。 |
CoverEM | float | 参考答案是否完全被预测文本覆盖。 |
F1 | float | Token 级别 F1 得分。 |
Rouge_1 | float | 1-gram ROUGE-F1。 |
Rouge_2 | float | 2-gram ROUGE-F1。 |
Rouge_L | float | Longest Common Subsequence (LCS) based ROUGE。 |
使用示例
检索
Trec文件评估
在信息检索中,TREC 格式文件 是标准化的评测接口,用于衡量模型在排序、召回等方面的性能。 TREC 评估通常由两类文件组成:qrel(人工标注的真实相关性)与 run(系统检索输出结果)。 一、qrel 文件(“ground truth”,人工标注的相关性) qrel 文件用于存储“哪些文档与哪个查询是相关的”这类人工标注的真实相关性判断。在评测时,系统输出的检索结果会与 qrel 文件进行对比,用来计算指标(如 MAP、NDCG、Recall、Precision 等)。 格式(4列,空格分隔):
query_id:查询编号iter:通常写0(历史遗留字段,可忽略)doc_id:文档编号relevance:相关性标注(通常 0 表示不相关,1 或更高表示相关)
每行表示一个查询返回的文档及其得分信息。 格式(6列,空格分隔):
query_id:查询编号Q0:固定写Q0(TREC 标准要求)doc_id:文档编号rank:排序名次(1 表示最相关)score:系统打分run_name:系统名称(例如 bm25、dense_retriever)
你可以点击以下链接下载示例文件:qrels.test 和 results.test
显著性分析
显著性分析(Significance Testing)用于判断两个检索系统之间的性能差异是否“真实存在”,而不是由随机波动造成。它回答的核心问题是:系统 A 的提升是否具有统计学意义? 在检索任务中,系统的性能通常通过多个查询的平均指标(如 MAP、NDCG、Recall 等)衡量。
然而,平均值的提升并不一定可靠,因为不同查询间存在随机性。
显著性分析通过统计检验方法,评估系统改进是否稳定且可复现。 常见的显著性分析方法包括:
- 置换检验(Permutation Test):通过随机交换系统 A 和系统 B 的查询结果多次(如 10000 次),构建差异的随机分布。若实际差异超过 95% 的随机情况(p < 0.05),则认为提升显著。
- t 检验(Paired t-test):假设两个系统的查询得分服从正态分布,计算两者均值差异的显著性。
- A_mean / B_mean 表示新旧系统的平均指标;
- Diff(A-B) 表示改进幅度;
- p_value 为显著性检验的概率;
- significant 为显著性判断(p < 0.05 时为 True)。
生成
基本用法
评估已有结果
如果你已经拥有模型生成的结果文件,并希望直接对其进行评估,可以将结果整理为标准化的 JSONL 格式。文件中应至少包含代表答案标签与生成结果的字段,例如:pred_ls 字段:
servers/prompt/src/benchmark.py