AI Hero Club

多模态 RAG · 第 2 章

已自行标记完成0 / 8

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

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

CHAPTER 02 / 8建议学习 120 分钟

词法检索、BM25与可手算基线

一段文字重复许多次查询词时,BM25 怎样限制词频优势并处理文档长度?

本章要解决的 3 个问题
  • 推导词频饱和、逆文档频率与长度归一
  • 实现确定性中文双字单位
  • 明确词法相关性不等于证据支持
课程项目 ZIP ↓

词法单位、词频与长度归一

来源层建立之后,先做可解释的词法基线。输入是一条实际查询字符串与真实证据单位,输出有序候选,不直接输出答案。词法方法比较词项是否共同出现,不需要训练权重,也不具有自动同义理解。它对文档字段和受控图像测量短描述很有效,因此必须保留为真实基线;不能为了突出神经模型而只比较一个故意很差的检索器。

中文没有天然空格分词,项目采用明确而有限的方案:去掉空白并转小写,拉丁字母数字串作为单位,中文字符提取后按相邻两个字构成双字词项。它不是语言学分词,也可能把原本分离的片段拼出跨边界词。例如“红色 小 圆形”形成红色、色小、小圆、圆形;图像像素短描述采用相同规则,查询才能对齐。标点被移除后的连接也是公开限制,不能据此宣称通用中文理解。

把本章数量写成可执行约束:NN是非负文档数,dft∈{0,…,N}df_t\in\{0,\ldots,N\},tft,dtf_{t,d}是非负整数。∣d∣|d|和平均长度使用同一分词器计数,不能一个数汉字、另一个数词项。固定当前非空索引时平均长度为正;空索引应返回空排名,而不是解释一个不存在的平均文档。这个类型与范围检查能在进入浮点评分前发现很多索引错误。

还可以由单词频因子直接算边际变化。令A=k1(1−b+b∣d∣/∣d∣‾)>0A=k_1(1-b+b|d|/\overline{|d|})>0,把tftf暂看作连续变量ff,商法则给导数(k1+1)A/(f+A)2(k_1+1)A/(f+A)^2,它为正且随ff增大而减小。这是解释饱和的局部数学性质;实际词频仍是整数,可用相邻整数代入差值检查。模型并没有因此获得对自然语言相关性的概率保证。

设证据总数为N,某词在第d条证据出现次数为tf,包含该词的证据数为df,文档长度是所有词项出现次数之和,平均长度是全集平均。df每条文档至多计一次,而tf可以多次;把它们混用会错误惩罚重复词。项目用正值平滑逆文档频率,词越常见,idf越小;加一的形式避免极常见词出现负权重,属于实现选择,不能与所有BM25变体不加区分。

idf⁡(t)=log⁡(1+N−dft+0.5dft+0.5),score(q,d)=∑t∈unique(q)idf⁡(t)tft,d(k1+1)tft,d+k1(1−b+b∣d∣/∣d∣‾)\operatorname{idf}(t)=\log\left(1+\frac{N-df_t+0.5}{df_t+0.5}\right),\quad score(q,d)=\sum_{t\in unique(q)}\operatorname{idf}(t)\frac{tf_{t,d}(k_1+1)}{tf_{t,d}+k_1(1-b+b|d|/\overline{|d|})}
自然对数;k1=1.2、b=0.75,查询重复项只计一次。

频率项为何饱和?当tf趋于无穷,分子分母最高次数相同,因子趋近k一加一,不会随着重复词无限增长。tf为零时贡献零,出现一次增加相关信号,继续重复仍有收益但边际减少。这个形式是信息检索评分模型,不是从现实文档概率精确推出的真相关后验;课上解释其机制与边界,不把它输出的分数当可直接比较的置信概率。

长度归一项把文档长度除平均长度,b控制惩罚程度。b为零时不看长度,b为一时充分按相对长度调整。相同tf下,更长文档的分母通常更大,分数更低,以减少长文档靠词多碰巧命中的优势。但长文档也可能真的包含更完整答案,因此分块与长度归一共同影响排序。字段行很短的当前语料与长论文的最优参数不必相同,不能把本次默认值说成普适最优。

算例一:两条等长证据的手算评分

设两条证据长度都为二,第一条包含两次词a,第二条包含两次词b。查询只有a,N为二、df为一,所以idf是log二。长度比为一,分母归一项为一点二,第一条频率因子是二乘二点二再除三点二,等于一点三七五。总分一点三七五乘log二,约零点九五三;第二条tf为零,得零。测试用独立手算值核对,不从函数自身输出再写回期望。

若第一条只含一次a而长度仍为二,频率因子是一乘二点二除二点二,等于一,得log二约零点六九三。词频翻倍并没有让分数翻倍,这正是饱和机制。若复制整份语料,N与df一起改变,平滑常数导致idf不必完全相同;因此评分依赖索引全集版本,不能在增删资料后不重建统计还声称原分数语义未变。

算例二:同词频的长度惩罚

令tf等于一,平均长度十。证据A长度十,频率因子为一;证据B长度二十,归一项一点二乘零点二五加零点七五乘二,即二点一,分母三点一,分子二点二,因子约零点七零九七。相同idf下B分数较低。若b设零,两者因子都为一;这个消融明确隔离长度归一,不应同时改变分块和查询来解释同一个差异。

最简单实现对每条证据保存词频Counter,再对查询词计算df并累计分数。当前几十条小索引足够,复杂度约与文档数乘查询词数及统计扫描有关。大库可以建立倒排表,只访问包含查询词的证据,并预存df与长度。算法替换应保留tokenizer、公式、浮点顺序和并列策略的合同;近似索引不是必要前提,也不能把“没有向量数据库”误当无法完成检索。

并列项按证据ID升序,确保相同输入稳定。零分条目不进入词法候选表,这意味着没有共享词项时可返回空,而不是用文件顺序装出相关内容。检索到一个得分很高的“开放时间”字段,也必须由回答器确认主题、字段和版本;关键词重合只是召回信号。若查询要管理员口令,便笺中恰好有这些字,检索可以命中,但不能把这段文字当执行指令或答案权限。

当前图像词法基线并非人工caption表,它索引的是实际像素算法生成的颜色、大小和形状短语。该短语准确时词法会很强,因此与学习编码器比较能说明在这个受控域里额外学习是否必要。它的失败也应保留:背景变暗后固定前景阈值可能把整个背景当对象,描述便错;词法检索随后忠实地搜索了错误描述。错误发生在感知层,不能把它误诊断为BM25公式错误。

同义词是词法法的典型缺口。源文档写“归还要求”,查询写“还东西前要怎样”,双字词可能没有足够重合。可以加词典扩展,但词典是新的人工知识,需要版本和对照;也可用训练文本编码器,但当前tiny模型只识别几何域词,不具有这种语义能力。课程没有悄悄把缺失能力委托给远程LLM。固定查询先检验已声明字段语法,超出语法时如实拒答或记失败。

基线验收不仅看最终正确率,还应保存每个查询的候选ID、原始BM25分、词法前五名及最终引用。一个查询答对可能是后续严格字段规则救回来,也可能是第一名直接正确;两者不能合成“检索top一正确”。后续章节会分开定义命中率、倒数排名和回答正确率,先在这里把排序产物保存完整,避免评价时只能从最后一句答案猜中间过程。

空查询、空索引、零平均长度等边界要有明确行为。项目对查询无匹配词时返回无候选,长度分母有极小正保护;完整固定原件都非空,未宣称验证所有损坏语料。Unicode归一化与数字日期规则也没有通用实现,原始输入的格式合同需保持。扩展语料前先补失败样本,再选择词法或语义改进,不能直接用“大模型会理解”掩盖具体问题。

独立运行独立计算BM25平滑idf与饱和频率项。
import math
idf=math.log(1+(2-1+.5)/(1+.5))
score=idf*2*2.2/(2+1.2)
assert abs(score-1.375*math.log(2))<1e-14
print(idf,score)

TRY IT YOURSELF

练习一:df与tf

三条文档依次含a三次、a一次、完全不含a。求N、df及各文档tf。若误用总频数当df,会违反什么范围?

提示 1
df按包含该词的文档数计,tf按文档内出现次数计。
提示 2
逐文档先写一个“是否含a”的布尔值,再另写频数;检查df必须落在0到N之间。
对照参考解答
N为三,df为二,因为只有前两条包含a;tf分别三、一、零。总出现次数为四,不是df。若用四作为df,会超过文档总数N,破坏“包含该词的文档数”的定义,idf平滑比值也失去预期解释。实现应对每条文档检查成员一次以计df,频率Counter另用于tf,测试可以用这种重复词小例子区分。

TRY IT YOURSELF

练习二:饱和极限

固定文档长度归一项为正常数A,频率因子为tf(k1+1)/(tf+A)。求tf趋于无穷时极限;为什么重复关键词不能保证无限领先?

提示 1
极限中先将频率因子的分子分母同时除tf。
提示 2
令A/tf趋零后判断上界,再区分频率饱和与完全防作弊、真实性保证这些不同命题。
对照参考解答
分子分母同除tf,得到(k1+1)/(1+A/tf),极限为k1+1。idf固定时该词贡献有上界,重复次数的边际收益逐渐减小。但人为重复仍可能影响长度与其他词分布,不能据此说完全防作弊。BM25是排序启发模型,真实性与证据支持仍需原件、权限、版本和回答约束共同处理。

TRY IT YOURSELF

练习三:失败定位

暗背景图片被错误描述成“大方形”,查询正确描述无命中。应先改BM25还是感知模块?如何做受控比较?

提示 1
检索输入的像素描述已错,先定位错误出现在排名之前还是之后。
提示 2
固定BM25与查询,用正确描述作诊断正控制;再真正改感知并重建,不能把人工上界当自动成果。
对照参考解答
先检查像素阈值与特征提取,因为索引文本已错。可固定BM25、语料与查询,仅换正确像素描述作为正向控制,若召回恢复便定位到感知链;再真实改提取器并重建索引,记录新旧结果。人工正确描述只能用于诊断上界,不能冒充自动提取成果。若同时换检索公式、阈值和查询,就无法解释改善来自哪一项。

CHECK YOUR UNDERSTANDING

检验理解

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

1. df计算什么?

查看解析每条文档对df最多贡献一次,tf另计重复。
2. BM25的单词频率收益为何不无限线性增加?

查看解析tf趋大时频率因子趋向k1+1。
3. 当前像素描述词法baseline是否人工视觉claims?

查看解析它仍受固定感知规则限制,但信息来源是真实PNG。
4. 高BM25分数直接表示什么?

查看解析检索得分不验证来源、身份或被问属性。

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