AI Hero Club

多模态 RAG · 第 6 章

已自行标记完成0 / 8

仅保存在当前浏览器;完成标记不代表通过项目验收。

本章提纲 3 个小节
全课目录 8 章
完整课程计划 ↗
多模态 RAG / 课程计划 ↗

CHAPTER 06 / 8建议学习 150 分钟

检索、回答和拒答的分层评价

检索命中率高却回答错误时,怎样把召回、排序、支持和拒答分别计分?

本章要解决的 3 个问题
  • 明确固定题集、分母与相关标签
  • 计算hit、MRR和应拒答正确率
  • 用冻结轨迹定位失败并避免评价泄漏
课程项目 ZIP ↓

检索指标、回答指标与固定题集

系统能输出正常答案,不代表已经知道它在哪些地方可靠。本章建立一份固定评价合同,把图像检索、文档回答和拒答分开记账。原始文件、训练caption、评价答案各有用途:原件进入索引,二十对caption进入编码器更新,评价标签只在打分器中读取。真正闭环要求同一个检查点、同一份索引和同一套查询贯通三种模式,而不是从不同试验分别挑最好的数。

固定题集共有三十九道:二十四道图像短语查询,覆盖全部属性组合;九道主题字段文档问题;六道应拒答问题,含未知材质、重量、未给字段、资料冲突和不可信指令。每条保存稳定ID、问题文本、类别及预期图像ID或字段值或拒答状态。图像中的四个留出组合标记heldout,其余标记train;这个划分关系到编码器训练,不代表九道文档题也参与同样的图文训练。

评价标签不能被检索器读取。build_index只读实际PNG和Markdown,answer只读候选和原件,evaluate最后才读queries-evaluation-only来比较。测试删除两张标签表后仍能重建相同entries,排除了运行时查答案表。训练结束后的词表和参数本来依赖训练配对,这是预期学习路径;若把所有标签都排除,反而无法训练。要防止的是测试标签进入更新、阈值调整或运行回答,而不是禁止合法训练监督。

Hit@k⁡(q)=1[∃d∈Rq:rank⁡q(d)≤k],RR@5⁡(q)={1/rq,rq≤50,otherwise\operatorname{Hit@k}(q)=\mathbf1[\exists d\in R_q:\operatorname{rank}_q(d)\le k],\quad \operatorname{RR@5}(q)=\begin{cases}1/r_q,&r_q\le5\\0,&\text{otherwise}\end{cases}
R_q是评价器定义的相关ID集合,r_q是其中最靠前名次;只对有预期答案的三十三题计算这些检索指标。

Hit一看第一条是否相关,Hit五看前五是否至少含一条相关,倒数排名在第一条相关时得一、第二条时得二分之一,以此类推。对三十三道可回答题求算术平均得到汇总。当前排名是覆盖重排后的candidate_scores,不是纯BM25或纯RRF初始顺序;模式名称表示候选来源不同,所有模式之后都使用相同透明重排与支持检查。报告应保留这个限定。

算例一:同样命中率为何MRR不同

三道可回答题的首个相关名次分别为一、二和未进前五。Hit一为一除三,Hit五为二除三,MRR五为一加二分之一再除三,等于二分之一。另一系统名次为一、五、未进前五,Hit指标相同,但MRR是零点四,因为第二题相关证据更靠后。这些指标衡量排名,不直接判断生成答案有无幻觉,必须再检查最终值、支持和拒答。

独立运行用明确分母的三题实例核对排序指标。
ranks=[1,2,None]
hit1=sum(r==1 for r in ranks)/len(ranks)
hit5=sum(r is not None and r<=5 for r in ranks)/len(ranks)
mrr=sum(1/r if r is not None and r<=5 else 0 for r in ranks)/len(ranks)
assert (hit1,hit5,mrr)==(1/3,2/3,.5)
print(hit1,hit5,mrr)

回答正确性使用另一套条件。图像题要求status为answered且image_id等于预期ID;文档题要求status为answered且答案逐字等于预期值;拒答题只要求status为refused。最终总体正确率把三类都包含在三十九分母里。这种严格字符串判分适合封闭模板,但不适合直接评价自由文本同义回答。拒答判分也没有核对每种reason,因此六道通过不能证明拒答诊断原因全部正确;单元测试另检查若干关键reason。

引用存在性报告检查所有已回答记录是否有非空citations。它是一个必要结构条件,不是自动证明引用支持答案的语义评分。当前结构由抽取模板和原件核验共同约束,测试再核对实际散列、字符位置和逐字值。若换开放生成器,这个布尔字段远远不够,需要逐句支持审查及错误引用控制,不能沿用字段名就夸大其保证。

算例二:三十九题的正确分母与失败分解

冻结运行记录:词法三十九题全部符合合同,混合也三十九题全部符合合同;学习模式三十题符合合同,其中二十四道图像和六道拒答通过,九道文档题失败。三十除三十九约零点七六九二,是含拒答在内的任务正确率。图像子集为二十四除二十四,文档子集为零除九,拒答子集为六除六。把这些混成一句“神经准确率百分之百”会删掉实际缺口。

为何词法如此强?图像查询与自动像素描述共享精确几何词,文档查询共享主题与字段名,题集设计本就有利于词法。这不是无效测试,它能检查真实索引、引用和整条管线;但不能证明神经方法在自然语言问题中没有价值,也不能证明当前混合提升。客观结论应是本次受控测试没有显示混合超过词法,且学习分支未具备文档能力。

四个留出组合双向编码器检索全中,属于二十四候选库中四题的点估计。样本数很小、属性原型共享,不能从四除四推出新分布成功率接近一。课程不将这些相关的合成组合当独立同分布自然图像样本来套置信区间,也不宣传统计显著。真正检验外观变化的是下一章固定扰动,使用同一检查点且不再更新。

从失败向上游定位时要遵循因果顺序。若正确证据不在候选前五,是召回或融合缺失;若在前五却被字符预算跳过,是上下文选择问题;若引用候选原件变了,是索引失效;若支持检查拒绝一个有效同义问题,是解析合同过窄;若输出未支持事实,是回答约束失效。只看最后correct字段无法区分这些问题,所以每条记录保存两路排名、分数、上下文ID、预算、最终原因及引用。

这也给出了受控消融的单位。比较lexical、neural、hybrid时保持检查点、文件、查询、前五截断、重排、上下文预算和回答器不变,只改变候选得分来源。该比较能够定位候选来源的差异,但不是三套独立最佳系统的竞赛;后续共同规则可能补偿检索缺点。若要研究重排作用,应新增“关闭重排”单因素分支,而不能把当前模式比较误说成已经完成这项消融。

报告保存checkpoint_unchanged,运行前后重新计算同一权重文件散列,确认评价没有覆盖训练成果。这个检查只涉及文件身份,并不能自动发现内存模型状态被改;当前加载时关闭梯度、eval模式且在no_grad中前向,单元测试也检查requires_grad全为假。完整部署若涉及可变缓存或在线学习,需要更广的状态快照,课程没有声称完成这些场景。

固定题集不是越改越好看的榜单。一旦根据失败重写阈值或解析器,再用同一三十九题报改善,这些题已成为开发集,应保留旧版本结果并增加未看的留出集。当前没有进行这种大范围搜索,冻结的九道神经文档失败与后续扰动失败均留下。不能删除不擅长的题后沿用“三十九题全流程验证”这个名称,更不能把不同检查点的优势拼到一个联合成绩。

完整验收产物是index.json和queries.json,而不只是终端一行百分比。索引保留真实来源和表示版本,逐题报告保存相关ID只在评价区域使用,汇总表给出各类别分母。下载项目里的命令允许重新读取原件与冻结模型产生新报告;学生可以比较散列和非时间字段,区分确定性计算结果与运行耗时差异。下一章在同一模型上引入真实像素扰动,检验漂亮闭集分数之外还有什么。

TRY IT YOURSELF

练习一:总体与子集

系统对二十四图像题答对二十,九文档题答对九,六拒答题正确拒答六。总体、可回答题、拒答子集正确率分别是多少?

提示 1
先分出可回答的图像/文档题与应拒答题,各自分母是什么?
提示 2
总体合并所有正确决定,可回答只算成功事实回答;不要把正确拒答计成额外事实答案。
对照参考解答
总体为三十五除三十九,约零点八九七四;可回答题是二十九除三十三,约零点八七八八;拒答是六除六。不能把拒答计入可回答分母,也不能把“正确拒答”说成提供了六个正确事实答案。报告三组分母可防止通过大量拒答题抬高实际问答覆盖。

TRY IT YOURSELF

练习二:错误拒答

一个系统把所有三十九题都拒答,按照本课标签会得多少总体正确?为何引用存在性可能仍为真?

提示 1
全拒答时哪一类标签会正确,哪一类一定失败?
提示 2
再看“所有已回答项有引用”遇空集合的逻辑值,联合报告回答数量与各子集成绩。
对照参考解答
六道本应拒答题正确,其余三十三道失败,所以六除三十九。若检查“所有已回答项都有引用”,空的已回答集合会使all返回真,这属于空集全称条件,不能代表有用性。应一起报告回答数量、可回答题正确率与应拒答正确率,避免空集条件被当成高质量证据。

TRY IT YOURSELF

练习三:开发集污染

看见某张暗图失败后调阈值,仍只报告原暗图成功率,可以声称独立泛化吗?

提示 1
见过失败并据此调阈值后,该图还算未参与选择的证据吗?
提示 2
保留原成绩与改动,再预先冻结新的曝光/种子留出;资源不足就明确只是开发集修复。
对照参考解答
不能。该图已参与参数或规则选择,是开发证据。保留改前成绩,记录调整内容,再用未参与选择的新暗图、曝光范围和种子评价。若资源不足只能报告开发集修复,不把它称为未见测试提升。冻结与溯源不是形式要求,而是防止调参证据和验证证据混淆。

CHECK YOUR UNDERSTANDING

检验理解

先作答,再决定是否展开解析。选择题用于发现理解缺口;独立实现与迁移任务仍需另行检验。

1. MRR五在哪个集合求平均?

查看解析拒答题没有预期相关答案,当前报告不把它们放入排名分母。
2. 神经30/39含什么?

查看解析九道文档题失败必须保留。
3. 所有已回答项有引用是否足够?

查看解析存在性与正确支持、覆盖是不同指标。
4. 根据同一题集调规则后?

查看解析评价是否独立取决于信息流,不是文件命名。

自行标记用于记录学习进度,不代表通过项目验收。