RAG系统评测指标
/** * 执行标准的 RAG 检索评估修正为 Macro-Precision */ public EvaluationResult evaluate() { int k 5; int totalQueries goldTestSet.size(); // 统计变量用于 Macro 平均 double sumPrecision 0.0; // 每个问题独立计算出的精确率之和 double sumRecall 0.0; // double sumMrr 0.0; int hitQueries 0; // 全局统计仅用于参考 int totalRelevantDocsInSystem 0; int totalRetrievedRelevantDocs 0; for (TestQuery testQuery : goldTestSet) { // 获取当前问题的标准相关文档集合 SetString relevantDocIds testQuery.getRelevantDocIds(); totalRelevantDocsInSystem relevantDocIds.size(); // 执行检索 // retrievedDocs 查询到的关联文档列表 ListDocument retrievedDocs retrieveTopK(testQuery.question, k); // retrievedDocIds 关联文档id ListString retrievedDocIds retrievedDocs.stream() .map(doc - doc.getId()) .collect(Collectors.toList()); // 1. 计算当前查询的命中匹配数 long matchedCount retrievedDocIds.stream() .filter(relevantDocIds::contains) .count(); // totalRetrievedRelevantDocs 全部的命中匹配数 totalRetrievedRelevantDocs matchedCount; // 2. 计算当前查询的 Precision (Macro 累加) double precisionPerQuery (double) matchedCount / k; // 单个问题的精确率 sumPrecision precisionPerQuery; // 3. 计算当前查询的 Recall (Macro 累加) // 注意如果相关文档总量为0该查询无意义通常跳过或记0 double recallPerQuery relevantDocIds.isEmpty() ? 0 : (double) matchedCount / relevantDocIds.size(); sumRecall recallPerQuery; // 4. 计算 MRR OptionalInt firstMatchIndex IntStream.range(0, retrievedDocIds.size()) .filter(i - relevantDocIds.contains(retrievedDocIds.get(i))) .findFirst(); if (firstMatchIndex.isPresent()) { sumMrr 1.0 / (firstMatchIndex.getAsInt() 1); hitQueries; // 命中 } } // 计算最终指标宏平均 Macro Average double macroPrecisionAtK sumPrecision / totalQueries; // TopK 的平均精确率 每个问题独立计算出的精确率之和 / 问题总数 double macroRecallAtK sumRecall / totalQueries; // TopK 的平均召回率 每个问题召回率之和 / 问题总数 double mrr sumMrr / totalQueries; // TopK 的平均倒数排名 每个问题第一个相关文档排名的倒数之和 / 问题总数 double hitRate (double) hitQueries / totalQueries; // TopK 的平均命中率 每个问题的命中率之和 / 问题总数 // 微平均指标作为辅助参考不用于决策 // double microPrecision (double) totalRetrievedRelevantDocs / (totalQueries * k); // double microRecall (double) totalRetrievedRelevantDocs / totalRelevantDocsInSystem; System.out.println( 核心指标宏平均 ); System.out.println(PrecisionK: macroPrecisionAtK); System.out.println(RecallK: macroRecallAtK); System.out.println(MRR: mrr); System.out.println(Hit Rate: hitRate); return new EvaluationResult(macroPrecisionAtK, macroRecallAtK, mrr, hitRate); }

相关新闻

Claude Sonnet 4.6 与 DeepSeek V4 Pro 并列 92.17 分:2026-08-06 Smoke 快测数据简报

Claude Sonnet 4.6 与 DeepSeek V4 Pro 并列 92.17 分:2026-08-06 Smoke 快测数据简报

2026-08-06 赢政指数 Smoke 快测覆盖 9 个模型,Claude Sonnet 4.6 与 DeepSeek V4 Pro 以 92.17 分并列当日首位。Smoke 为每日 10 题快测,适合观察短期信号,不等同 Full 周榜结论。 本次 Smoke 评测只覆盖代码执行和材料约束两个主榜维度&a…

2026/10/19 21:45:38 阅读更多 →
jsDAV API完全参考:开发者必备的接口调用与参数说明

jsDAV API完全参考:开发者必备的接口调用与参数说明

jsDAV API完全参考:开发者必备的接口调用与参数说明 【免费下载链接】jsDAV jsDAV allows you to easily add WebDAV support to a NodeJS application. jsDAV is meant to cover the entire standard, and attempts to allow integration using an easy to underst…

2026/10/19 21:45:38 阅读更多 →
防休眠神器Move Mouse:5分钟学会智能保持电脑活跃的终极方案

防休眠神器Move Mouse:5分钟学会智能保持电脑活跃的终极方案

防休眠神器Move Mouse:5分钟学会智能保持电脑活跃的终极方案 【免费下载链接】movemouse Move Mouse is a simple piece of software that is designed to simulate user activity. 项目地址: https://gitcode.com/gh_mirrors/mo/movemouse 你是否曾经因为电…

2026/10/18 7:05:11 阅读更多 →

最新新闻

open-code-review:用规则引擎驱动高效代码审查的实践指南

open-code-review:用规则引擎驱动高效代码审查的实践指南

很多团队对代码审查(code review)的态度,长期处于“知道很重要,但就是做不好”的状态。我也一样,在经历了若干个项目、数不清的review讨论之后,才意识到问题根本不在于大家愿不愿意review,而是缺…

2026/10/19 21:44:57 阅读更多 →
Cesium for UE4坐标系转换全解析:从经纬高到虚幻世界坐标

Cesium for UE4坐标系转换全解析:从经纬高到虚幻世界坐标

1. 从经纬度到虚幻单位:Cesium for UE4 坐标系到底在折腾什么如果你刚把 Cesium for UE4 插件拖进引擎,兴冲冲地加载了一块真实地形,结果发现相机飞到了十万八千里外,或者模型像被揉皱的纸团一样扭曲,那大概率不是插件…

2026/10/19 21:43:55 阅读更多 →
open-code-review:构建人机协作的高效代码审查体系

open-code-review:构建人机协作的高效代码审查体系

1. 为什么代码审查总是形同虚设——open-code-review想解决的真实问题1.1 代码审查在工程实践中的尴尬现状我在一线做研发和带团队的时间加起来超过十年,换过几家公司,也看过不少代码评审流程从制定到瓦解的全过程。几乎所有团队在创业初期都说要做代码审…

2026/10/19 21:41:53 阅读更多 →
DVWA暴力破解四个级别详解:从无防护到账户锁定的攻防演进

DVWA暴力破解四个级别详解:从无防护到账户锁定的攻防演进

1. 从一次登录框测试说起:暴力破解到底在破什么很多人第一次接触DVWA的暴力破解模块,注意力都放在“怎么把密码跑出来”上,结果跑通一次之后,脑子里留下的只有Burp的Intruder界面和一堆字典文件,换个环境就不知道从哪下…

2026/10/19 21:40:51 阅读更多 →
如何做好开放式Code Review:一套可落地的团队评审实践

如何做好开放式Code Review:一套可落地的团队评审实践

1. 为什么我坚持把 Code Review 做成“开放式”的先聊点实在的。我做了十几年开发,带过团队,也经历过各种规模的评审流程,从两个人结对互相看代码,到几十人团队的正式评审会议,都试过。一个特别明显的感受是&#xff1…

2026/10/19 21:39:49 阅读更多 →
WinForms DataGridView下拉框动态绑定与联动实战

WinForms DataGridView下拉框动态绑定与联动实战

简介:本资源是一份面向C#初学者与Windows桌面开发者的实用代码实践包,聚焦解决DataGridView控件中动态集成下拉列表(ComboBox)这一高频交互需求,适用于数据录入界面、配置管理模块等实际业务场景。压缩包共22个文件&am…

2026/10/19 21:39:49 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →