想象你是一家国际美食大赛的评委团主席。大赛请来了三位风格迥异的评审:口感评审偏爱打 85 到 95 的高分,视觉评审习惯压着 60 到 80 分打分,香氛评审则总在 90 到 100 之间徘徊。如果直接把三位评审的分数相加排名,视觉评审给出的 75 分,含金量可能远超口感评审的 90 分——因为两人用的根本不是同一套评分语言。更麻烦的是,遇到甜品赛口感评审更权威,遇到分子料理视觉评审更有话语权,最终排名还需要三位评审围坐讨论,结合彼此观察后才能敲定。这正是多模态检索结果重排序的真实写照:文本、图像、音频三种模态各自给出匹配分数,量纲不同、可靠性不同、彼此还有交叉信息,需要一套统一的“评委团机制”来校准分数、分配话语权、综合讨论,最后输出一份公平可信的榜单。

岗位关联

多模态重排序是检索系统从“能召回”走向“排得准”的关键一环,掌握它能让你在面对真实多模态业务时,设计出精度与效率兼得的排序方案,是向量检索从业者的核心进阶技能。

目录
  1. 可视化演示
  2. 跨模态分数归一化
  3. 模态权重学习
  4. 交互特征排序
  5. 训练数据构造
  6. 在线推理优化
  7. 排序效果评估
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示CLIP双塔召回、跨编码器精排、多模态分数归一化与加权融合重排序三阶段流程,交互切换各阶段查看候选排序变化。

本节配有交互动效(进入视口后自动加载,约 3KB)。

CLIP双塔召回阶段 文本编码器将查询编码为向量 图像编码器将候选编码为同维向量 sim=cos(q,d) 余弦相似度排序选取Top-N候选

跨模态分数归一化

评委团开会的第一件事,是统一打分规则。口感评审的 90 分、视觉评审的 70 分、香氛评审的 95 分,背后是三套完全不同的评分语言——如果不先对齐,后面的所有讨论都是空中楼阁。多模态检索也是同样的困境:文本检索模块输出的是 0 到 1 的余弦相似度,图像检索模块输出的是 0 到 100 的距离分,音频模块输出的可能是带符号的相似度。三种分数直接相加,等于让评委各说各话。

把它们拉到同一把尺子上,就是跨模态分数归一化。最直观的方法是 Min-Max 归一化:把每个模态内部的最小值当作 0、最大值当作 1,原始分数在这条线段上找到自己的相对位置。下图公式将任意原始分数映射到 [0,1] 区间,消除了量纲差异。

如果分数的分布是钟形曲线而非均匀铺开,第二种更稳健的方案是 Z-Score 标准化。它不关心最大最小值,而是以均值为原点、以标准差为单位重新定位每个分数,适合大多数真实场景。

归一化解决的是“公平”问题。当三位评委都改用同一套百分制语言,下一步才能讨论谁的发言更该被重视。此外还有排序归一化,它直接把分数转成名次比例,能天然抵抗极端离群值——就像评委只打“第几名”不打具体分,虽然丢了分数差距的精细度,但胜在稳定。

x′=x−min⁡max⁡−min⁡\displaystyle x' = \frac{x - \min}{\max - \min}
Z-Score 像把评委的评分习惯做了一次“性格矫正”:先看整体平均水平,再看每个人的分偏离平均水平几个身位。
  1. 中心化当前分数减去全体均值,得到相对位置差
    x−μx - \mu
  2. 尺度化除以标准差,把偏差换算成“几个标准身位”
    x−μσ\frac{x - \mu}{\sigma}
  3. 输出含义z 为正说明高于均值,为负说明低于均值,绝对值越大偏离越远
    z=x−μσz = \frac{x - \mu}{\sigma}

模态权重学习

统一评分语言后,评委团面临第二个问题:谁的判断更可信?如果是甜品大赛,口感评审的意见权重自然要上调;如果是摆盘艺术赛,视觉评审才是权威;若是需要开盲盒的香料料理,香氛评审的话语权最大。模态权重学习的任务,就是给每位评委分配一个“话语权系数”。

最简单的做法是人工设定固定权重:文本 0.5、图像 0.3、音频 0.2,三个数字写死,实现简单但僵化。进阶做法是从数据中学习权重:准备一批已标注好坏的历史检索结果,让模型自动找出最能让标注结果排前的权重组合。更灵活的是注意力加权——权重不再是一个固定数字,而是随着查询内容动态变化:用户搜苹果图片时图像权重自动升高,搜 iPhone 说明书时文本权重占据主导。

三种权重策略的数学共性是一个加权求和公式。假设三个模态归一化后的分数为 s₁、s₂、s₃,对应权重为 w₁、w₂、w₃,最终融合分数为:

注意力加权则把固定权重升级成自适应函数:用一个轻量网络接收查询向量与模态特征,输出一组随查询变化的权重。这意味着同一个候选文档,在“搜菜谱”和“搜餐厅环境”两个查询下,融合排名可能完全不同——就像同一道菜,甜品赛中口感评审的话语权压过视觉评审,换到摆盘赛中则反了过来。权重学习让排序框架从“一刀切”进化为“见人下菜碟”。

S=w1×s1+w2×s2+w3×s3\displaystyle S = w_{1} \times s_{1} + w_{2} \times s_{2} + w_{3} \times s_{3}
这个式子像三位评委的最终打分按话语权加权汇总:权重越大,这位评委的分对总分的影响越强。
  1. 逐项加权每个模态的归一化分数乘上自己的权重,完成“话语权”注入
    w1×s1,w2×s2,w3×s3w_{1} \times s_{1}, \quad w_{2} \times s_{2}, \quad w_{3} \times s_{3}
  2. 求和汇总把三项加权结果相加,得到候选文档的融合分数
    ∑i=13wi×si\sum_{i=1}^{3} w_{i} \times s_{i}
  3. 约束条件权重通常要求非负且和为 1,保证融合分数仍处于可解释的度量范围
    wi≥0,∑i=13wi=1w_{i} \geq 0,\quad \sum_{i=1}^{3} w_{i} = 1

交互特征排序

加权融合虽然解决了话语权问题,但三位评委依然是“各自打分、互不商量”。现实中,最终排名往往诞生于一场讨论:视觉评审说“这道菜摆盘极美但口感偏老”,口感评审才恍然大悟,意识到自己刚给的分数没有考虑食材搭配的瑕疵。多模态交互特征排序,正是这场“评审团讨论会”。

交互排序的第一步是特征拼接:把文本、图像、音频的模态特征向量首尾相连,形成一条融合的“全局特征”;第二步是交叉注意力:让文本特征“看到”图像特征,图像特征“看到”音频特征,在模型内部自动摸索彼此间的关联——相当于每位评审在发言前先听了一遍其他人的观察笔记。最后,一个排序得分模型(通常是一层或多层 MLP)把交互后的特征映射为相关性得分。

以交叉注意力为例,设查询模态特征为 Q,另一模态的特征为 K、V,交互后的特征为:

交互排序相比简单加权,能捕获“单看每个模态都不错、但组合起来违和”的微妙信号。评委团讨论后的排名,往往比各自独立打分再汇总更可靠。代价是计算量上升,因此业界常见做法是:第一阶段用轻量加权融合做粗排、筛掉大多数候选,只对 Top 50 到 100 的结果做交互精排——把宝贵的讨论时间留给真正有悬念的选手。

ATTN(Q,K,V)=softmax(QKTdk)V\displaystyle \text{ATTN}(Q, K, V) = \text{softmax}\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right) V
这个公式像评审们互相递纸条:Q 是“我在关注什么”,K 是“对方看到了什么”,两者的匹配度决定了对方哪条观察值得借鉴,V 就是那些观察的实际内容。
  1. 相似度矩阵查询特征 Q 与键特征 K 做内积,衡量两者关注点的匹配程度
    QKTQK^{T}
  2. 缩放稳定除以特征维度的平方根,防止内积过大导致 softmax 梯度消失
    QKTdk\frac{QK^{T}}{\sqrt{d_{k}}}
  3. 概率化取重softmax 把匹配度转为概率分布,哪个观察更值得参考就分配更高注意权重,再与 V 加权求和得到交互特征
    softmax(QKTdk)V\text{softmax}\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right) V

训练数据构造

交互排序模型再聪明,也需要“培训题库”来学会当评委。讨论会上的每个判断,都来自评委对历史案例的学习:哪些菜搭配合理、哪些组合是雷区。训练数据构造,就是为排序模型准备这些“标准案例”。

核心是构造正负样本对:给定一个查询,检索系统召回的文档中,与查询相关的标记为正样本、不相关的标记为负样本。但真正让模型成长的是难例挖掘——挑选那些“看起来相关、实际不相关”的文档作为负样本。就像训练评委辨别“摆盘精美的预制菜”:普通负样本一眼可辨,模型学不到东西;只有把高仿的难例喂进去,评委的辨别力才会提升。另一种思路是伪标签:对海量无标注数据,先用现有模型打一个粗略标签,再从中挑选置信度高的样本加入训练集——相当于让老评委带着新评委实习,用老评委的笔记当教材。

难例筛选的排序损失可以用对比学习的目标函数来刻画。设查询 q,正样本 d⁺,难负样本 d⁻,使用 InfoNCE 风格损失:

训练数据的质量直接决定重排序模型的上限。正样本不足,模型会趋向保守;难例太少,模型辨别力平庸;难例过难,训练可能震荡不收敛。理想的数据配比是“常规负样本保底、难负样本拔高、伪标签扩充规模”三者搭配,就像评委培训既要有基础课,也要有魔鬼训练营。

L=−log⁡e s(q,d+)e s(q,d+)+∑k=1Ke s(q,dk−)\displaystyle \mathcal{L} = -\log \frac{e^{\,s(q, d^{+})}}{e^{\,s(q, d^{+})} + \sum_{k=1}^{K} e^{\,s(q, d_{k}^{-})}}
这个式子像一场“找真品”考试:模型要学会给真品打高分、给仿品打低分,仿品越逼真,模型被逼出的辨别力越强。
  1. 正样本得分指数查询与正样本的相关性得分取指数,转化为正的“信心值”
    e s(q,d+)e^{\,s(q, d^{+})}
  2. 分母汇总正样本信心值加上所有难负样本的信心值,构成归一化底数
    e s(q,d+)+∑k=1Ke s(q,dk−)e^{\,s(q, d^{+})} + \sum_{k=1}^{K} e^{\,s(q, d_{k}^{-})}
  3. 对数比值正样本信心值占全体的比例取负对数,比例越接近 1 损失越小,模型被迫拉大正负差距
    L=−log⁡e s(q,d+)e s(q,d+)+∑k=1Ke s(q,dk−)\mathcal{L} = -\log \frac{e^{\,s(q, d^{+})}}{e^{\,s(q, d^{+})} + \sum_{k=1}^{K} e^{\,s(q, d_{k}^{-})}}

在线推理优化

训练出优秀的重排序模型,只是走了一半路。回到美食大赛现场,观众可没有耐心等三位评委翻资料、查笔记、讨论十分钟才出排名——在线检索服务同样面临严苛的延迟预算。多模态重排序发生在召回之后,通常需要在几十毫秒内完成打分,这要求推理阶段精打细算。

第一条优化路径是模型轻量化。把复杂的交互排序模型蒸馏成一个小模型:让大模型当“导师”,小模型学习它的打分行为,用更少的参数逼近相近的排序效果。就像一位经验丰富的老评委,把毕生口味判断浓缩成几条快速直觉,新评委照着学也能快速上手。第二条是特征缓存策略。多模态特征提取是最昂贵的环节,而同一张图片、同一段音频一天内可能被成千上万次检索复用。把模态特征提前算好存入缓存,查询时直接读取,省去重复计算。第三条是批量推理。把多个候选文档的特征打包成 batch 一起过模型,利用 GPU 并行能力摊薄单条延迟。

设单条候选的模态特征提取耗时为 t_feat、排序模型推理耗时为 t_model,批量大小为 B 时,单条结果的平均延迟为:

实际系统中,三级流水线也常见:召回侧用向量检索快速圈定数千候选,轻量融合粗排压到几百,交互精排只处理 Top 50。每一级都在用更贵的模型处理更少的候选——就像海选看照片、复赛看视频、决赛请评委亲口尝。延迟与精度的平衡,本质是“把最贵的判断留给最值得的选手”。

Tavg=B×tfeat+tmodelB=tfeat+tmodelB\displaystyle T_{\text{avg}} = \frac{B \times t_{\text{feat}} + t_{\text{model}}}{B} = t_{\text{feat}} + \frac{t_{\text{model}}}{B}
这个公式像自助餐出菜:备菜(特征提取)每人一份躲不掉,但起锅烧油(模型推理)可以一锅炒很多份,人越多平摊到每份的时间越少。
  1. 总耗时B 条候选的总延迟为 B 次特征提取加上一次批量模型推理
    B×tfeat+tmodelB \times t_{\text{feat}} + t_{\text{model}}
  2. 平均分摊总耗时除以 B,得到每条候选的平均延迟
    B×tfeat+tmodelB\frac{B \times t_{\text{feat}} + t_{\text{model}}}{B}
  3. 极限视角B 趋向无穷时,模型推理成本趋近于零,平均延迟逼近单次特征提取时间
    Tavg≈tfeatT_{\text{avg}} \approx t_{\text{feat}}

排序效果评估

评委团忙活一整场,最终排名是否服众?美食大赛的复盘会上,观众投票、媒体评分、专业评审三方对照,才能判断这次评审是否公正。排序效果评估也是同样的逻辑:重排序模型上线前,必须先回答“排得准不准”。

最常用的指标是 NDCG(归一化折损累计增益)。它的思想很朴素:相关的文档排在越前面越好,排位越靠后,相关性的价值要打折扣——就像比赛冠军的分量远重于第八名。NDCG 先计算实际排序的折损收益,再除以理想排序的折损收益,得到的是 0 到 1 之间的“排序质量比例”。

离线评测用历史标注数据对比重排序前后的 NDCG、Recall@K 等指标,模型调优主要在这个环节完成。但离线指标再好,也未必能照搬到线上——真实用户的行为分布与历史标注存在偏差。因此最终要看在线实验:将用户流量按比例分桶,一组用旧排序、一组用新排序,观察点击率、转化率等业务指标。就像美食大赛的排名公布后,还要看观众的实际口碑反馈,才算完成了闭环验证。

NDCG@K=DCG@KIDCG@K,DCG@K=∑i=1K2reli−1log⁡2(i+1)\displaystyle \text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}, \quad \text{DCG@K} = \sum_{i=1}^{K} \frac{2^{rel_{i}} - 1}{\log_{2}(i + 1)}
这个公式像给榜单打分:越靠前的好结果加分越多,越靠后的好结果加分越被折损;最后拿实际榜单和“理想榜单”比,越接近说明排得越好。
  1. 逐位折损收益第 i 个位置的相关性等级转化为收益,同时除以位置的对数做衰减
    2reli−1log⁡2(i+1)\frac{2^{rel_{i}} - 1}{\log_{2}(i + 1)}
  2. 前 K 项求和把前 K 个位置的折损收益累加,得到实际排序的 DCG
    DCG@K=∑i=1K2reli−1log⁡2(i+1)\text{DCG@K} = \sum_{i=1}^{K} \frac{2^{rel_{i}} - 1}{\log_{2}(i + 1)}
  3. 归一化对比除以理想排序的 IDCG,得到 1 为满分、0 为最差的相对指标
    NDCG@K=DCG@KIDCG@K\text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}

AI 应用场景

电商多模态商品搜索

阶段:多模态结果重排序

解决的问题:用户在电商平台搜索“红色连衣裙”时,同时上传了一张街拍照片。传统做法是文本检索和图像检索分别出分、简单相加,但文本分数偏高、图像分数偏低,量纲不一致导致排序结果偏向文本,图片的视觉特征被稀释。引入归一化与权重学习后,系统根据查询中的图像占比动态调整模态权重,重排序结果更贴合用户真实意图。

具体案例:某服装电商平台接入多模态重排序后,点击率提升 12%,“拍照搜同款”场景的下单转化率提升 18%。系统对图像模态分配了 0.5 的权重,并缓存了热销商品的图像特征,在线推理延迟从 85ms 降至 42ms。

短视频平台跨模态检索

阶段:多模态交互特征排序

解决的问题:用户搜索“雨天咖啡馆氛围感”,一个视频同时包含标题文本、封面图像和背景音源。文本说“雨天探店”,封面是昏暗咖啡馆,背景音有雨声——三个模态单独看都相关,但组合起来的协调度需要交互建模才能判断。简单加权会漏掉“封面与音频是否匹配”这一层信息。

具体案例:某短视频平台使用交叉注意力精排模型,对召回后的 Top 100 视频进行交互重排序,搜索会话人均观看时长提升 9%,相关性差评率下降 21%。难例挖掘从历史点击数据中筛选“标题吸睛但内容空洞”的视频作为难负样本,模型辨别力显著增强。

企业知识库多模态问答

阶段:训练数据构造与评估调优

解决的问题:企业内部知识库包含产品文档(文本)、操作截图(图像)、培训视频(音频+字幕),员工提问时经常包含多个模态的查询。重排序模型需要综合三个模态的相关性,同时控制在线问答的响应延迟。

具体案例:某大型制造企业的智能客服系统,使用伪标签从 80 万条未标注问答记录中扩充训练集,配合难例挖掘,检索命中率提升 15%。推理侧采用模型蒸馏加特征缓存,问答端到端延迟控制在 300ms 以内,NDCG@5 从 0.61 提升至 0.74。

Python 演示

python42 行
import numpy as np  def min_max_norm(scores):    """将一维分数归一化到 [0, 1] 区间"""    lo = scores.min()    hi = scores.max()    if hi > lo:        return (scores - lo) / (hi - lo)    return np.full_like(scores, 0.5)  def z_score_norm(scores):    """Z-Score 标准化: (x - mean) / std"""    mu = scores.mean()    sd = scores.std()    if sd > 1e-12:        return (scores - mu) / sd    return np.zeros_like(scores)  def fuse_and_rank(modality_scores, weights, top_k=3):    """归一化 -> 加权融合 -> 重排序"""    normed = np.stack([        min_max_norm(s) for s in modality_scores    ], axis=-1)                     # shape: (N, 3)    fused = normed @ np.array(weights)   # 加权求和    rank = np.argsort(-fused)[:top_k]    # 降序取 top_k    return fused, rank  if __name__ == "__main__":    # 3 个模态对 5 个候选文档的原始分数    text_scores = np.array([0.82, 0.67, 0.91, 0.55, 0.73])    image_scores = np.array([0.41, 0.68, 0.35, 0.72, 0.50])    audio_scores = np.array([0.10, 0.88, 0.45, 0.60, 0.30])     weights = [0.4, 0.35, 0.25]    fused, rank = fuse_and_rank([text_scores, image_scores, audio_scores], weights)     print("融合分数:", fused)    print("重排序 Top3 索引:", rank.tolist())
目的:演示多模态结果重排序的完整流程——三个模态的原始分数先做 Min-Max 归一化,再按权重加权融合,最后按融合分数降序取 Top K,直接对照正文中的“归一化→加权→重排”三步曲。
  1. def min_max_norm(scores):定义 Min-Max 归一化函数,消除模态内部量纲差异
  2. hi = scores.max()找出当前模态分数的最大值,作为尺子的上边界
  3. return (scores - lo) / (hi - lo)分数减去最小值再除以跨度,映射到 [0,1]
  4. fused = normed @ np.array(weights)矩阵乘实现加权求和,一行完成话语权分配
  5. rank = np.argsort(-fused)[:top_k]取负号实现降序排序,截取前 K 个作为最终榜单
  6. if __name__ == "__main__":可执行入口,保证模块被导入时不会误跑演示逻辑

常见误区

误区我把三个模态的分数都归一化到 0 到 1 之后,看到图像模态给某个文档打了 0.95 分,就认为它一定比文本模态打 0.80 分的文档更相关。既然都归一化了,分数高低总该是绝对可信的吧?

正解归一化只消除了“打分尺子”的差异,并没有改变每个模态内部的打分质量。Min-Max 只保证分数在 0 到 1 之间,0.95 只代表“这个文档在这个模态内部排名靠前”,不代表它的绝对相关性比另一个模态的 0.80 更高。就像评委统一了百分制,但口感评审给 95 分和视觉评审给 95 分,依然代表两套不同的审美标准。归一化是让分数可比较的必要前提,而不是充分条件。

为何常见:人天生倾向于把“数值大”等同于“质量高”,归一化后所有分数都落在一个区间,这种直觉被进一步放大了。

误区我手动调了三个模态的权重,文本 0.5、图像 0.3、音频 0.2,在线上跑了一个月效果挺稳定,比那些训练出来的权重靠谱多了。学习权重到底学了什么,我看不透,反而不敢用。

正解固定权重在单一业务场景、数据分布稳定时确实够用,但它无法应对查询内容的动态变化。用户搜商品图时图像模态更关键,搜说明书时文本模态更关键,固定权重相当于让口感评审在所有比赛里都拥有固定的最大话语权。学习权重(尤其是注意力加权)能从数据中归纳出“什么查询下该信任谁”,泛化能力更强。稳定不等于可靠,只说明还没遇到够大的挑战。

为何常见:手动调的权重可解释、可控制,训练出来的权重是个黑盒,初学者的安全感天然倾向前者。

误区第一轮向量检索已经把最相关的文档排前面了,再用一个重排序模型重新排一遍,输入输出都是排序,这不就是脱裤子放屁吗?直接把第一轮的分数拿来用不就行了?

正解第一轮检索面对的是全库千万级候选,必须用快速但粗糙的近似方法,它的目标是“不漏”;重排序面对的是召回后的几十到几百条候选,可以用更精细的交互模型,目标是“更准”。两者是漏斗的两级:粗召回负责把候选池圈住,重排序负责在池子里精挑细选。就像海选评委看照片筛出 100 人,决赛评委必须亲口尝菜才能定冠军——后者不是前者的重复,而是量变到质变的跃迁。

为何常见:从表面看两者的输出形式都是排序列表,容易忽略候选规模和计算精度上的本质差异。

误区我在离线数据集上跑重排序模型,NDCG@10 从 0.58 提升到了 0.71,效果显著,直接推上线应该没问题吧?离线指标都这么好了,线上肯定不会差。

正解离线数据集是历史标注的快照,而用户的查询分布、内容供给、新鲜度偏好都在持续变化。离线 NDCG 高,只能说明模型在历史数据上表现好,无法保证在线场景中同样优秀——线下观众投票和线上观众口味可能存在系统性偏差。正确做法是走在线实验:流量分桶、灰度对比、观察点击率和转化率,用真实业务指标验证离线结论。NDCG 是体检报告,线上实验才是赛场上的正式比赛。

为何常见:离线评测成本低、反馈快,让人产生“指标好=效果好”的错觉,忽略了离线与在线环境的分布差异。

面试题

Q1. 为什么多模态检索结果不能直接用原始分数相加?

单选题 · easy

  • A.不同模态分数量纲不同无法直接比较← 正确答案
  • B.原始分数一定包含大量计算错误
  • C.相加会导致结果数量急剧膨胀
  • D.原始分数之间完全不存在相关性

答案:A。不同模态的分数来自不同的模型、不同的度量方式,量纲和分布完全不同。直接相加等于让三位打分风格迥异的评委各说各话后强行求和,量纲大的模态会主导结果。其他选项要么是错误假设,要么与排序合理性问题无关。

Q2. Min-Max 归一化对离群点敏感,正确理解是?

单选题 · mid

  • A.离群点会把其他分数压缩到很低← 正确答案
  • B.离群点对归一化结果毫无影响
  • C.离群点只改变自己的分数大小
  • D.离群点会让归一化输出负数

答案:A。Min-Max 的分母是最大值减最小值,一个极端大的离群点会把分母拉大,导致其他正常样本的归一化分数整体被压缩到很小区间,区分度下降。这就像评委团里混入一个永远打满分的“疯狂评审”,其他评委的正常分差全被淹没了。B 和 C 与事实相反,D 不成立——Min-Max 输出始终在 [0,1]。

Q3. Z-Score 标准化的输出分布特征是?

单选题 · mid

  • A.均值归零方差归一← 正确答案
  • B.分数仍保持原始分布
  • C.最小值必定映射为零
  • D.最大值不变只平移均值

答案:A。Z-Score 用均值做中心化、标准差做尺度化,输出分布的均值恒为 0、方差恒为 1。它不保证最小值为 0,也不保留原始分布形态,而是把分布转换成“相对均值偏离几个标准差”的语言。B 描述的是未做任何处理的情况,C 和 D 是 Min-Max 或平移操作的特征。

Q4. 模态权重学习方式包括?

多选题 · mid

  • A.人工根据经验设定固定权重← 正确答案
  • B.利用训练数据自动学习权重← 正确答案
  • C.根据查询内容动态调整权重← 正确答案
  • D.直接把所有权重设置为零

答案:ABC。权重学习的三条路径正是正文提到的固定权重、学习权重与注意力加权。A 是人工方案,B 是从数据中自动学习,C 是注意力机制的动态加权,三者都是合法策略。D 把所有权重设为零等于让排序模型完全失效,是干扰项。

Q5. 交互特征排序与简单加权融合的本质区别是?

单选题 · hard

  • A.前者建模模态间高阶相关性← 正确答案
  • B.前者不包含神经网络结构
  • C.前者忽略文本内容的影响
  • D.前者只能应用于图像数据

答案:A。加权融合假设各模态相互独立,只是线性叠加;交互排序通过交叉注意力等机制让模态特征互相“看见”,能捕获“单看都合理、组合却违和”的高阶相关性。后者依赖神经网络结构,也不局限于图像数据。B、C、D 都与交互排序的设计初衷相悖。

Q6. 难例挖掘中“难例”指的是?

单选题 · easy

  • A.与查询相似但实际不相关← 正确答案
  • B.与查询毫无语义关联的样本
  • C.训练数据中永远不出现的样本
  • D.无关且特征差异明显的样本

答案:A。难例是那些“表面看起来匹配、实际不相关”的样本,比如标题提到“苹果”但内容是水果食谱的页面,对搜 iPhone 的用户而言就是难负样本。它们最能倒逼模型提升辨别力。B 和 D 描述的是一眼可辨的普通负样本,模型从它们身上学不到东西,C 无意义。

Q7. 在线推理延迟优化的常用手段有?

多选题 · hard

  • A.对重排序模型做知识蒸馏← 正确答案
  • B.缓存高频查询的融合结果← 正确答案
  • C.在批量推理中复用模态特征← 正确答案
  • D.把检索候选数量趋于无穷大

答案:ABC。蒸馏用小模型逼近大模型效果、缓存省去重复特征提取、批量推理摊薄模型计算均摊成本,是三种主流优化手段。D 把候选数量推向无穷只会让延迟暴涨,与优化目标背道而驰,属于典型干扰项。

Q8. NDCG@K 在 0 到 1 之间取值,其含义是?

单选题 · mid

  • A.排序结果相对理想排序的折损收益比← 正确答案
  • B.排序结果中包含相关结果个数的比例
  • C.排序模型在训练集上的精确度高低
  • D.排序结果与检索耗时成反比关系

答案:A。NDCG 用实际排序的折损累计收益除以理想排序的折损累计收益,衡量“排得有多接近完美”——越接近 1 说明好结果越靠前。B 描述的是 Recall 或 Precision,C 是训练集表现,D 与评估指标无关。它不关心检索快慢,只关心排序质量。

Q9. 重排序训练数据的正负样本来源包括?

多选题 · extreme

  • A.人工标注的相关与不相关对← 正确答案
  • B.检索系统召回的高相关结果← 正确答案
  • C.使用伪标签扩充无标注数据← 正确答案
  • D.随机抽取的全部海量数据

答案:ABC。正样本通常来自人工标注或检索系统的高相关结果,负样本依赖难例挖掘,伪标签则能利用海量无标注数据扩充训练集。D 的“全部海量数据”没有经过相关性筛选,直接拿来当样本会导致正负样本比例严重失衡。A、B、C 是正文明确的三种构造路径。

Q10. 重排序模型与第一轮向量检索的关系是?

单选题 · easy

  • A.前者精排少数候选提升精度← 正确答案
  • B.前者代替后者进行全库扫描
  • C.前者降低输入数据的维度
  • D.前者仅负责输出随机结果

答案:A。第一轮检索面向全库快速召回,重排序只对少量候选做精细打分,两者是漏斗式流水线的前后级。重排序不扫描全库,也不降维或随机输出,B、C、D 都是对重排序职责的误解。就像海选评委看照片筛人、决赛评委亲口尝菜定冠,各司其职。