evalRetrieval.py
概述
modelEvaluation/evalRetrieval.py 位于对大模型的 “RAG第一段(搜索查找)精准度” 的离线批量测评和审计。 当知识库更换向量策略(或者重写向量索引、调整了全文匹配跟向量融合参数设置)之后。它能通过导入一份含有明确源头的“金标准查询列表”(通常每条查询预先知道要正确查找到哪几篇或几条对应段落),计算查全、查准表现数值,用于给搜索排名引擎作反馈以验证改变策略的好坏成败。
检索测评核心统计值
常用的典型信息工程召回计算术指标:
| 指标名称 | 计算原理与评价描述 |
|---|---|
| Recall@K (召回率) | 在排名前 K 个输出的中,实际我们预置正确的必须含有的文档被找到了多少百分比 (侧重查不查得全)。 |
| Precision@K (精确率) | 在打出的那 K 条给出的备选里,真就是系统目标文档的片段有多少的成分有效率 (侧重无关噪音文档干扰情况多不多)。 |
| MRR (平均倒数排名) | 对于每一个搜索问题的那些命中的目标文档在总列里面出现名次的倒数相加归并取平均,用来考量好答案到底排在够不够前面的极重要排序敏感参数权重考量。 |
| NDCG (归一化折损累积利益) | 在多级相关程度不同背景下使用的方法用来综合计算含有位置权重折减的一类高度权威系统排布验证考评方法。 |
函数与接口明细
_load_retrieval_ground_truth(file_path)
从提供的诸如 evaluationData.json 的本地测评数据集合载入每个结构题:不仅有 query 串字符串问题,而且必须附带有这一个问题要求对应命中的段落 ID (即 Chunk IDs 或来源页面索引)。
_evaluate_single_query(retriever_obj, query, expected_doc_ids, tops=[1,3,5]) -> dict
单独为单次查询注入真实的引擎并在里面完成调用得到它在 TopK 情况下的具体列表。随后进行逻辑的交叉对比(判断它的 chunk metadata id 有没有踩中 expected_doc_ids 集合),通过对截断点 [如针对 top=1 与 打出 top=5 分别测值] 得出以上该条的数据表现。
_calculate_retrieval_metrics(eval_results) -> dict
用于多条结果最终汇集为具有统一综合分析宏观图表的综合参数。计算整个数据集体在测试场景里的总体 Recall@3 / MRR 平均数及分布,反馈总览结论性能评价统计分数字典以生成评估板与报告面板提供宏观诊断结果依据概况总结。
_run_benchmark(dataset_file, output_path)
全局驱动器执行过程,串接:模型载入与引擎点火、历遍全数据集下发至 evaluate_single_query、最终把其产物利用 _calculate 函数生成包含全局 MRR 总论连并细分至每次问题的情况序列化为一个便于查验和留底备份比对用的新生成的带有报告评价信息的结果 JSON 文件落盘行为统筹实现功能封装方法类。
main()
允许通过使用 python modelEvaluation/evalRetrieval.py --data tests.json 一键自动起跑针对当前的混合式组装查找机器系统的指标考核的独立运行文件命令进入函数端口。