MRL 用一个模型学习嵌套向量表示,推理时按需选择维度,无需重训。
核心思想
低维向量是高维向量的前缀:。
训练时每个维度独立具备语义表达能力;推理时动态选择维度。
损失函数
高效变体 MRL-E
仅学习最大维度头 ,对任意 取前 列,参数量从 降至 。
典型应用
| 场景 | 方式 |
|---|---|
| 检索系统 | 存储低维索引,查询时升维重排 |
| 边缘设备 | 64-128 维粗筛,云端完整维度精算 |
| 服务分级 | 免费版 128 维,付费版 512 维 |
代码实现
class MRLClassifier(nn.Module):
def __init__(self, nesting_list, num_classes, efficient=False):
super().__init__()
if efficient:
self.head = nn.Linear(nesting_list[-1], num_classes)
else:
self.heads = nn.ModuleList([
nn.Linear(m, num_classes) for m in nesting_list
])
def forward(self, x):
return {m: self.head(x[:, :m]) if self.efficient
else self.heads[i](x[:, :m])
for i, m in enumerate(self.nesting_list)}最新进展
- 指令感知 MRL:Qwen3-Embedding、Jina v3 支持维度指令控制
- 多模态扩展:图像-文本联合 MRL 训练
- 向量数据库支持:Chroma、Weaviate 原生支持 MRL 索引