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/8/6 20:01:34 阅读更多 →
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/8/6 20:01:34 阅读更多 →
防休眠神器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/8/6 20:01:34 阅读更多 →

最新新闻

Mermaid Live Editor:5分钟掌握免费实时图表编辑的终极指南

Mermaid Live Editor:5分钟掌握免费实时图表编辑的终极指南

Mermaid Live Editor:5分钟掌握免费实时图表编辑的终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-e…

2026/8/6 20:54:00 阅读更多 →
Flunt源码解析:深入理解.NET验证框架的设计哲学

Flunt源码解析:深入理解.NET验证框架的设计哲学

Flunt源码解析:深入理解.NET验证框架的设计哲学 【免费下载链接】Flunt Validations and Notifications 项目地址: https://gitcode.com/gh_mirrors/fl/Flunt Flunt是一个强大的.NET验证框架,它通过优雅的设计哲学和直观的API,帮助开发…

2026/8/6 20:54:00 阅读更多 →
揭秘WeTextProcessing:强大的文本归一化与逆归一化技术解析

揭秘WeTextProcessing:强大的文本归一化与逆归一化技术解析

揭秘WeTextProcessing:强大的文本归一化与逆归一化技术解析 【免费下载链接】WeTextProcessing Text Normalization & Inverse Text Normalization 项目地址: https://gitcode.com/gh_mirrors/we/WeTextProcessing WeTextProcessing是一款面向生产环境的…

2026/8/6 20:54:00 阅读更多 →
Unity色彩空间实战:Gamma与sRGB配置指南

Unity色彩空间实战:Gamma与sRGB配置指南

1. 项目概述:为什么你的游戏画面总是不真实?你有没有遇到过这种情况?在Unity里精心制作了一个场景,美术资源都是顶尖的,但最终在屏幕上呈现的效果,总觉得哪里不对劲——颜色发灰、光照混合不自然、阴影过渡…

2026/8/6 20:53:00 阅读更多 →
移动端MCP跨平台部署指南:一次配置,在VS Code、Cursor和Claude Desktop中统一AI开发体验

移动端MCP跨平台部署指南:一次配置,在VS Code、Cursor和Claude Desktop中统一AI开发体验

1. 项目概述:为什么我们需要一个统一的移动端MCP部署方案?如果你和我一样,日常开发需要在VS Code、Cursor和Claude Desktop这几个主力工具之间频繁切换,那你一定遇到过这个痛点:好不容易在VS Code里配置好了一套趁手的…

2026/8/6 20:53:00 阅读更多 →
Navicat无限试用终极指南:如何轻松解除14天限制

Navicat无限试用终极指南:如何轻松解除14天限制

Navicat无限试用终极指南:如何轻松解除14天限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat Pr…

2026/8/6 20:53:00 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →