单向量 Embedding 模型其实"早就会"多向量检索——SMART 把被压扁的隐藏状态用起来了
一个被忽视的事实:单向量模型在被对比学习训练时,梯度其实"顺手"也把前面层的 hidden states 摆成了适合 cosine 检索的几何结构。SMART 说的就是——别再只用那一个池化 token 了,把前面那一串隐藏状态也拿来打 MaxSim,免训练就能涨点,连 SoTA Qwen3-VL-Embedding-8B 都能在 MMEB-V2 上再被往上推一截。

图 1:例子来自 MMEB-V2 Vidore Economic Reports 任务。Query 问"中东和北非地区与欧洲和中亚地区的监管框架对比"。原始 Qwen3-VL-Embedding-8B 的 Top-5 里有两个红 ✗,因为它只用全局 \<eot> 表示去匹配,错过了图表 legend 里"Europe and Central Asia"、"Middle East and North Africa"这种细粒度文字。SMART 把非池化 hidden states 拿出来做局部匹配,把那张被错过的图捞回来了。
一句话先说清楚这篇论文在干嘛
你大概率在用 BGE、E5、Qwen3-VL-Embedding 这种单向量 embedding 模型——它把任意输入压成一个 768 维 / 4096 维 的向量,然后做 cosine 召回。这玩意儿之所以人见人爱,就是因为索引便宜、查询飞快。
但它有个老问题:信息被压扁了。一篇 5 页的财报,最后被你用一个 4096 维向量代表,里面藏在某张图表 legend 里的 "Middle East and North Africa" 这种关键短语,很容易就在池化的时候被洗没了。
业界的解法是上多向量模型(ColBERT、ColPali、jina-embeddings-v4):每个 token / patch 都保留一个向量,召回时用 MaxSim 做 late-interaction。准是更准了,但代价是得重新训练,而且训练贵——self-attention 在序列长度上是 \(O(n^2)\),多模态序列动辄上千 token,训起来很肉痛。
这篇 UW-Madison + Korea University 的工作(SMART:Single-to-Multi Adaptation for Retrieval Transformers)讲了一件挺反直觉的事:
你那个单向量模型,其实早就具备多向量能力了,只是你没用。
具体说,他们指出:在 池化 token 上做 InfoNCE 对比学习时,梯度会顺着 transformer 的 attention 和 residual 路径反传到前面所有 token 的 hidden states 上——也就是说,所有非池化 token 的 hidden states,本身就被隐式塑造成了适合 cosine 检索的几何结构。
那既然已经塑造好了,推理时直接对这些"冻结的"hidden states 套一个 MaxSim 不就完事了?
实测下来:
- 0 训练:在 MMEB-V2 上,SMART 把 VLM2Vec-V2 平均涨 2.54 个点,连 SoTA Qwen3-VL-Embedding-8B 都从 78.83 推到 79.34
- 轻量后训:只训一个 token 级线性 adapter,1 小时 50 分钟(8×A6000 48GB),让 Qwen3-VL-Embedding-2B 的 Visdoc 平均超过 jina-embeddings-v4(4B 参数的 SoTA 多向量模型)0.34 个点
- 从头训也省:用 LoRA 把单向量模型转换成多向量,比从头训多向量节省至少 20% 的训练时间
我读完的第一反应是:这个观察其实不算多么新鲜——理论上 InfoNCE 的梯度确实会流到前面的 hidden states,做 RLHF 的人对这种"梯度溢出"应该都不陌生。但能把它变成一个真的 work、还普适的训练-free 即插即用方案,我觉得是这篇论文最值钱的地方。
论文信息
- 标题:Your Embedding Model is SMARTer Than You Think
- 作者:Jianrui Zhang*(UW-Madison)、Hyun Jung Lee(Korea University)、Sukanta Ganguly(NetApp)、Tae-Eui Kam(Korea University)、Donghyun Kim(Korea University)、Yong Jae Lee†(UW-Madison)
- arXiv:2605.24938(2026 年 5 月 24 日提交)
- 代码:https://github.com/HanSolo9682/SMART
- 领域:多模态检索 / Embedding 模型 / 信息检索
*共同一作;†共同通讯。
单向量的瓶颈到底有多硬
先聊一段背景。
单向量 vs 多向量,差在哪
先快速对一下两条技术路线:
| 维度 | 单向量(CLIP / VLM2Vec / Qwen3-VL-Embedding) | 多向量(ColBERT / ColPali / jina-v4) |
|---|---|---|
| 每个 doc 存几个向量 | 1 个(池化的 \<eot>) | n 个 token 向量(n = 序列长度) |
| 打分方式 | 一次 cosine 内积 | MaxSim:每个 query token 找 doc 中最相似的 token,再求和 |
| 索引代价 | 极低(HNSW / IVF 都很轻) | 高(n 倍存储 + ANN 难做) |
| 细粒度能力 | 弱(局部信号被池化抹平) | 强(token 级匹配) |
| 训练代价 | 中等 | 高(self-attention 二次复杂度) |
单向量的优势是工程友好,但有个理论上限:单个 d 维向量能区分的"子集排名"数量是被 d 严格限制的(参考论文 [22, 14, 18] 提到的最近的容量分析)。说人话就是——一个向量再大也就那么大,硬塞太多细粒度信息进去,必然会有相互抵消、彼此覆盖。
MaxSim 是什么
MaxSim 是 ColBERT [Khattab & Zaharia, 2020] 提的 late-interaction 算子。给定 query 的 token 集合 \(M_q\) 和 candidate 的 token 集合 \(M_c\),每个 query token 在 candidate 里找最相似的那个 token,把所有"最相似"加起来:
直觉上:query 中的每一段局部含义,都能在 candidate 里找到对应的局部证据吗? 如果 query 提到了"Middle East and North Africa"这个短语,MaxSim 就会去 doc 里找最像的那个 token,把那一份匹配度算进去。池化向量做不到这件事——因为它已经把整个 doc 揉成了一坨。
SMART 的核心观察:池化监督会"溢出"到前面所有 token
这是整篇论文的灵魂部分。
梯度路径:池化的监督,其实在塑造所有 token
标准对比学习的损失只看池化 token:
其中 \(s_{\mathrm{single}}(q,c) = (h_{q,\texttt{eot}}^L)^\top h_{c,\texttt{eot}}^L\),只用最后一层的 \<eot> 表示。
乍一看,这个 loss 只监督 \<eot> 一个 token,前面那一串 hidden states 跟 loss 没关系——但这个理解是错的。
因为 \(h_{q,\texttt{eot}}^L\) 是从前一层所有 token 的 hidden states 经 attention 和 residual 算出来的。任何一个 token 只要 attention 路径上跟 \<eot> 有连接,loss 的梯度就会流回去:
对比学习的 loss 本身是基于 cosine 相似度的,所以梯度反传过来"指导"非池化 hidden states 的方向,也是 cosine-friendly 的——它们被隐式地塑造成了适合做 token 级 cosine 检索的几何结构。
我看到这一段的时候真的愣了一下。这个观察很显然,但被几乎所有用单向量 embedder 的人忽略了。模型已经"准备好"了多向量能力,只是没人去用它。
Hybrid Scoring:原汤化原食
SMART 的做法很干净。原始的池化分数 \(s_{\mathrm{single}}\) 不动,再加一个 MaxSim 分数 \(s_{\mathrm{late}}\),简单相加:
为什么直接相加就行? 两个分数都是 cosine 形式(normalized vector 内积),都是从同一最后一层算出来的,所以量纲一致、范围一致。作者说这让 SMART 完全没有超参数——不需要去调权重 \(\alpha\),连 temperature 都不用动。
我喜欢这个干净的设计。一旦你引入超参数,调参的成本就上来了,而且不同任务最优 \(\alpha\) 不一样,这事就麻烦了。SMART 直接相加这个选择其实是有底气的——因为两边的几何结构是同源的(都来自同一个池化对比学习训练过程)。
关键设计选择:用最后一层
SMART 用最后一层的 hidden states 而不是更早的层。原因:\<eot> 池化分数是从最后一层读出的,所以最后一层是和池化分数最直接相容的几何空间。
这事在论文 4.6 节有专门的 layer-wise 分析——后面会展开。
受控玩具实验:单向量真的"看不见"局部细节吗
光说不练假把式。论文先做了一个非常巧妙的受控实验。

图 2:这个 setup 的精髓在于——正负样本的"全局视觉印象"几乎一模一样,区分它们的唯一线索就是某个 panel 里 code 和 marker 的局部对应关系。
数据上的发现
40 对报告,每对 25 个 binding,共 1000 个 query。对每个 query 只在它对应的正负两份报告间排序,看 pairwise accuracy(随机猜是 50%):
| 打分方式 | Pairwise Accuracy |
|---|---|
| Qwen3-VL-Embedding-2B 单向量分数 | 31.9 个点(低于随机!) |
| Qwen3-VL-Embedding-2B hidden states + MaxSim(即 SMART late only) | 56.8 个点 |
| SMART hybrid(single + late) | 42.6% |
| jina-embeddings-v4 多向量 | 50.9% |
| ColPali 多向量 | 48.7% |
单向量分数低于随机猜——这是个相当极端的诊断结果。它说的不是"单向量略差",而是"在这种局部 binding 主导的场景下,单向量信号是有偏的、起反作用"。
但同一个模型的 hidden states 加 MaxSim 直接干到 56.8 个点,超过了 jina-v4 和 ColPali 这两个原生多向量模型。这就把作者的核心 hypothesis 钉死了:局部证据并不是没有被编码,只是池化把它压没了。
Hybrid 居然降了?
注意 hybrid 在这个 toy 上反而比 late only 差(42.6% vs 56.8%)。作者很坦诚地解释了这件事——这个 toy 是对抗性设计的诊断工具,全局信号在这里是误导性的(正负样本的全局相似度几乎一样高),所以加进来反而拖累。真实检索任务里全局信号是有用的,所以 hybrid 在 MMEB-V2 上是稳定的(下面会看到)。
我挺欣赏这种坦诚。AI 论文里很多人会刻意把不利结果藏起来,作者这里直接放出来,还分析得很到位——toy 是用来证明 local evidence 存在性的,不是用来证明 hybrid 在所有场景都最优的。这种诚实是加分项。
主实验:免训练就能涨点,连 SoTA 都能再推一截
这是 SMART 最让人 excited 的部分。
Table 1:MMEB-V2 主表(推理时即插即用)
MMEB-V2 是覆盖图像、视频、视觉文档的多模态检索综合 benchmark。SMART 套到 5 个不同的 backbone 上:
| Model | Image | VDRv1 | VDRv2 | VR | OOD | Video | Average |
|---|---|---|---|---|---|---|---|
| VLM2Vec-V2.0 | 69.50 | 75.34 | 47.28 | 79.43 | 62.04 | 28.66 | 64.50 |
| 加 SMART | 69.95 | 80.23 | 51.08 | 82.76 | 64.00 | 30.03 | 67.04 (+2.54) |
| GME-2B | 70.13 | 87.61 | 53.76 | 82.49 | 66.93 | 26.73 | 69.00 |
| 加 SMART | 71.05 | 87.97 | 57.23 | 84.18 | 67.82 | 26.50 | 70.00 (+1.00) |
| GME-7B | 73.09 | 90.01 | 60.43 | 86.20 | 69.22 | 29.92 | 72.26 |
| 加 SMART | 73.57 | 90.12 | 61.04 | 87.05 | 69.43 | 29.38 | 72.56 (+0.30) |
| Qwen3-VL-Embed-2B | 74.91 | 84.46 | 65.38 | 86.19 | 69.37 | 54.04 | 74.87 |
| 加 SMART | 75.33 | 85.52 | 66.61 | 86.87 | 69.90 | 56.05 | 75.77 (+0.90) |
| Qwen3-VL-Embed-8B (SoTA) | 80.09 | 87.29 | 69.35 | 88.78 | 73.27 | 59.01 | 78.83 |
| 加 SMART | 80.15 | 87.92 | 70.57 | 89.12 | 73.21 | 60.43 | 79.34 (+0.51) |
Image / Video 列报 Recall@1,Visdoc(VDRv1/v2/VR/OOD)列报 NDCG@5。
几个让我皱眉认真看的地方:
1. VLM2Vec-V2.0 上涨了 2.54 个点。 这个幅度对一个完全免训练的 trick 来说,已经相当能打了。VDRv2 从 47.28 直接干到 51.08,涨了快 4 个点。
2. SoTA 仍然能涨。 Qwen3-VL-Embedding-8B 在 MMEB-V2 上的 78.83 已经是当前榜单顶端,往上每涨 0.5 都是各家在花大力气调出来的。SMART 啥都没改,0.51 个点白嫖到手。
3. Video 涨幅最大。 Qwen3-VL-Embed-2B 在 Video 上从 54.04 干到 56.05(+2.01),8B 从 59.01 干到 60.43(+1.42)。这跟 video 本来就是高度依赖局部时序证据的任务有关——一段视频用一个池化向量代表,损失的信息特别多,把 token 级信号拿回来收益就大。
4. GME-7B 涨幅最小(+0.30)。 这其实有点意思——越大越优化的模型,其池化向量本身已经相当能干了,留给 SMART 捡漏的空间就小。但即便如此还是涨了,没有出现"SMART 在强模型上失效"的反例。
从工程视角看
我之前给一个客户做 RAG 的视觉文档检索,跑的就是 ColPali 那套多向量。痛点是索引太重——一份 50 页的 PDF 一索引下来就上千个 patch 向量,召回的时候 MaxSim 一算,延迟和存储都顶在那。
如果 SMART 这套能 work,意味着我们可以继续用单向量索引(一个 doc 就一个向量),召回 Top-K(K 比较大)之后,对前 K 个候选用其完整的 hidden states 跑一次 MaxSim 重排。这个 hybrid 既保留了单向量索引的轻便,又拿回了多向量的细粒度能力——是一个非常实用的工程模式。
不过有个细节论文没展开:hidden states 的存储成本怎么算? 如果你想离线把每个 doc 的所有 hidden states 都存下来用于 MaxSim,那存储量跟纯多向量没差多少。如果你只在召回阶段重新编码 Top-K 候选去算 MaxSim,那就有重新过 encoder 的延迟。这事工程落地时要细想。
轻量后训练:1 小时 50 分钟,干翻 SoTA 多向量
这是实验 4.3 的内容,我觉得特别"性价比"。
冻住整个 backbone,只在最后一层 hidden states 上训一个 token 级的线性 adapter:
Linear: ℝ^H → ℝ^d 是唯一可训参数。训练只用 \(s_{\mathrm{late}}\)(不动池化分数)。Colpali 训练集,全局 batch=512。
8 张 A6000 48GB,1 小时 50 分钟训完 Qwen3-VL-Embedding-2B 的 adapter。 这是真正的"academia-level resources"。
Table 2:Visdoc 子集结果
| Model | Size | SMART(Train / Eval) | VDRv1 | VDRv2 | VR | OOD | Average |
|---|---|---|---|---|---|---|---|
| Qwen3-VL-Embedding-2B | 2B | ✗s / ✗s(原始) | 84.60 | 65.33 | 86.34 | 69.27 | 79.27 |
| Qwen3-VL-Embedding-2B | 2B | ✗s / ✓(推理时 SMART) | 85.52 | 66.61 | 86.87 | 69.90 | 80.10 |
| Qwen3-VL-Embedding-2B | 2B | ✓†(adapter)/ ✓ | 87.09 | 67.08 | 87.99 | 70.73 | 81.25 |
| Qwen3-VL-Embedding-8B | 8B | ✗s / ✗s(原始) | 87.29 | 69.35 | 88.78 | 73.27 | 82.33 |
| Qwen3-VL-Embedding-8B | 8B | ✗s / ✓(推理时 SMART) | 87.92 | 70.57 | 89.12 | 73.21 | 82.88 |
| Qwen3-VL-Embedding-8B | 8B | ✓†(adapter)/ ✓ | 89.42 | 71.25 | 89.67 | 73.99 | 83.89 |
| ColPali-1.3 | 3B | ✗m / ✗m(多向量) | 83.60 | 52.00 | 81.10 | 43.10 | 71.00 |
| jina-embeddings-v4 | 4B | ✗m / ✗m(多向量 SoTA) | 89.94 | 57.36 | 88.74 | 70.18 | 80.91 |
✓† 代表冻住 backbone、只训 adapter;✗s 是无 SMART 单向量;✗m 是无 SMART 多向量。
Qwen3-VL-Embedding-2B + SMART adapter 干到 81.25,比 4B 参数的 SoTA 多向量 jina-embeddings-v4 还高 0.34 个点。模型小一半、训练只用了 1 小时 50 分钟,把 SoTA 多向量给打了。
8B 模型上 adapter 把推理 SMART 的 0.55 分提升进一步推到 1.56 分(82.33 → 83.89),意思是:模型越强,SMART adapter 的边际收益越大——这点和推理 SMART 的趋势相反(推理时模型越强收益越小)。
我猜这背后的逻辑是:弱模型本身的 hidden states 已经被对比学习"塑造"得差不多了,再训一个 adapter 也学不出更多东西;但强模型的 hidden states 信息量大、表达力更细,加一个 adapter 才能把这些信息用得更彻底。
Table 3:从头训 vs LoRA 转换
更进一步,作者自己也训了一组模型来对比"从头训多向量" vs "用 SMART 把单向量 LoRA 转换成多向量":
| Model | Training Time | SMART(Train / Eval) | VDRv1 | VDRv2 | VR | OOD | Avg |
|---|---|---|---|---|---|---|---|
| LamRA-Single | 6.5h | ✗s / ✗s | 81.58 | 50.72 | 78.41 | 63.50 | 72.60 |
| LamRA-Single + SMART(推理) | 6.5h | ✗s / ✓ | 83.02 | 52.25 | 80.52 | 64.50 | 74.18 |
| LamRA-Single-Convert(LoRA, +1 epoch) | 9.5h | ✓†(hybrid 目标)/ ✓ | 86.93 | 54.60 | 84.39 | 67.61 | 77.68 |
| LamRA-Multi(从头训) | 12h | ✗m / ✗m | 87.93 | 54.29 | 85.24 | 67.91 | 78.31 |
LoRA 接着 LamRA-Single 再训 1 epoch(多用 3 小时,总共 9.5 小时)就能逼近从头训多向量的效果(77.68 vs 78.31,差距 0.63 个点),但总训练时间省了大约 20 个百分点。
这个数字其实蛮重要的——很多团队选择继续用单向量而不上多向量,就是怕训练成本飞升。SMART 提供了一条中间路线:既能享受多向量的细粒度能力,又不用从头训。对落地来说挺香的。
Layer-wise 分析:为什么是最后一层
论文 4.6 节做了个我特别欣赏的消融:把 SMART 用在不同的 layer X 上。两种配置:
- 左边(X-th Layer Pooling):池化分数 + MaxSim 都用 Layer X
- 右边(Last Layer Pooling):池化分数固定用最后一层(28),MaxSim 用 Layer X
| X | 左:X-th Layer Avg | 右:Last+Layer X Avg |
|---|---|---|
| 4 | 48.59 | 79.42 |
| 8 | 62.28 | 79.83 |
| 12 | 64.77 | 79.67 |
| 16 | 60.71 | 79.70 |
| 20 | 72.34 | 80.16 |
| 24 | 76.29 | 80.04 |
| 28 (last) | 80.10 | 80.10 |
两个发现:
1. 池化分数随层加深单调上升(左列从 48.59 到 80.10)。这跟我们对 transformer 的直觉一致——越深层语义越聚合、越有判别力。
2. 一旦把池化分数固定在最后一层,MaxSim 用哪一层都差不多(右列基本都在 79-80 之间,Layer 20 的 80.16 甚至略胜 Layer 28 的 80.10)。
第二个观察挺有意思的——它说明池化分数本身就是一个非常 robust 的 anchor,只要 anchor 稳定,late-interaction 在哪一层做都不会差到哪儿去。Layer 20 比 Layer 28 还略好这一点也合理:早一点的层可能保留了更多局部细节,而最后一层为了配合池化已经被"压缩"过了。
但作者还是选了最后一层做默认配置,理由是"和池化几何空间一致",简单相加无超参。Layer 20 那 0.06 的提升其实是个有趣的工程优化方向——如果你愿意调一下、跟池化分数加权再融合,可能还能再榨一点。
定性可视化:模型到底在看什么

图 3:上行——query 是一个石质城堡入口,原始模型选了一张广角的城堡内景(全局像,但不是同一座建筑);SMART 通过黄色框(钟楼塔顶)和橙色框(拱门细节)找到了正确的两张图。下行——query 是带圆塔的红砖城堡,原始模型挑了广角图,SMART 通过紫色框(圆塔)和红色框(其他建筑细节)锁定了正确目标。注意 SMART 给出的"局部证据"是空间上聚集的——它不是平均地看整张图,而是真的把注意力放在了几个关键区域。

图 5:高亮区域聚焦在小的、语义有意义的部位(钟楼、塔顶、入口等),而不是均匀洒在整个候选图上。

图 4:这种"全局像但不是它"是单向量模型的典型失败模式——同一类物体(修道院、城墙、塔楼)在池化空间里挤在一起,池化分数无法区分。
我的判断:哪些是真功夫,哪些值得追问
聊完干货,回到一个研究者最想问的问题:这篇论文到底怎么样?
我觉得真亮的地方
1. 观察简单但深刻。 "对比学习的池化监督会通过梯度反传塑造前面所有 hidden states 的几何结构"——这个观察一旦说出来就显得平凡,但在它被说出来之前,整个 embedding 社区都在用单向量的方式部署单向量模型,浪费了已经训出来的局部表征能力。好的研究往往是这种"显然但被忽视"的洞察。
2. Hybrid 设计无超参。 直接相加,不调权重,能 work——这是因为两个分数同源(同一最后一层 cosine 几何)。这种"自洽"的设计是工程上最香的,不用每个数据集重新调参。
3. 实验诚实。 Toy benchmark 上 hybrid 反而比 late only 差,作者主动报告并解释为什么。Layer-wise 分析里 Layer 20 略好于 Layer 28 也直接放出来。这种坦诚提升了我对这篇论文的信任度。
4. 工程价值清晰。 1 小时 50 分钟的 adapter 训练超过 SoTA 多向量,这个数字会让很多企业团队动心。从头训多向量动辄几天,SMART 给了一条非常实用的"轻量升级路径"。
我觉得需要追问的地方
1. 推理时的存储和延迟成本论文没讲透。 推理 SMART 需要保留所有非池化 hidden states 才能算 MaxSim。如果你想给 100 万 doc 建库,是不是每个 doc 都得离线存所有 hidden states?这跟纯多向量索引的存储成本就一样了。论文吹的是"训练免费",但推理时的工程开销是另一回事,没看到详细分析。
2. SoTA 上涨 0.5 个点是不是显著? Qwen3-VL-Embedding-8B 在 MMEB-V2 上从 78.83 到 79.34。这种小幅提升在 SOTA 区间到底有多稳定?论文没报错误棒(error bar)或多次实验的方差。说实话我希望看到至少 3 次独立 run 的 std。
3. 局限明确——只对密集检索 work。 作者自己在 Limitations 里承认了:SMART 在分类、VQA 这种"全局任务"上没有提升,甚至可能反而拖累。这意味着 SMART 不是一个"通用增强",而是专门针对密集检索的特化技巧。用户得自己判断你的任务是不是密集检索类型。
4. 全是 visdoc 子集训练。 Adapter 和 LoRA 转换都只在 Colpali 训练集上做。如果你的场景不是文档检索而是别的,这套调参出来的 adapter 不一定能直接迁移。
一个想问但论文没回答的问题
InfoNCE 的池化训练能否被改成"hybrid 训练",从一开始就让 backbone 同时学好两条路径? 论文 Appendix D 似乎有讨论,但主文里没有把这个作为主要 training paradigm。直觉上,如果训练目标本身就是 \(s_{\mathrm{hybrid}}\),那 hidden states 应该会被塑造得更适合 late-interaction,效果应该比"只训 adapter"更好。这是一个值得继续推的方向。
工程落地建议:你可以这样用 SMART
如果你也在做检索系统,这里是一些直接可用的思路:
1. 已有单向量索引,想要细粒度能力? 用推理 SMART 做 Top-K 重排。流程: - 单向量召回 Top-100 - 对 Top-100 重新过一次 encoder,拿到 hidden states - 算 MaxSim + 池化分数 hybrid,重排得到 Top-10
这样既保留了原有单向量索引的低成本,又拿到了多向量的精度。
2. 准备升级到多向量但训练预算有限? 上 SMART adapter,4-8 小时搞定,不动 backbone。
3. 有时间从头训多向量? 也别从头训了,用 SMART LoRA 转换,省 20% 时间且性能逼近。
4. 注意任务匹配。 SMART 是给密集检索设计的(VDR、image retrieval、video retrieval)。如果你做的是分类、VQA、生成任务,别硬上 SMART。
收尾:embedding 模型还有多少潜力没被挖出来?
这篇论文最让我感慨的是——我们用了好多年的 embedding 模型,可能从来没用对。
单向量模型每次 forward 都跑了一整个 transformer,产生上千个 hidden states,但最后只读了一个 token,剩下的全部丢弃。这些被丢弃的状态在训练时被对比 loss 隐式塑造过——它们是"免费的"细粒度表征。SMART 第一次系统地把它们捡回来用了。
我相信这条思路还有更多可以挖的:
- 不同 layer 的 hidden states 融合?Layer 20 比 28 略好,那加权融合会不会更好?
- 池化训练能不能 incorporate token-level 信号?让 backbone 在训练时就 aware 到 hidden states 也会被读取,可能效果更好。
- 跨模态的 token-level alignment?图像 patch 和文本 token 的 MaxSim 是否还能玩出更多花样?
如果你也在做 RAG、多模态检索、视觉文档理解,这篇论文值得花一两个小时认真读一遍——核心思想很简单,但能给你 embed 模型的部署方式带来一次"重新审视"。
参考资料
- 论文:Your Embedding Model is SMARTer Than You Think
- 代码:https://github.com/HanSolo9682/SMART
- 关键 baseline:
- ColBERT(late-interaction 鼻祖):Khattab & Zaharia, 2020
- ColPali:Faysse et al., ICLR 2025
- jina-embeddings-v4:Günther et al., 2025
- Qwen3-VL-Embedding:Bai et al., 2025
- Benchmark:MMEB-V2(VLM2Vec 团队维护)
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我