在大型语言模型 (LLM) 和信息检索 (IR) 的世界里,“更大”通常意味着“更好”。高维嵌入——那些代表文本语义的长数字向量——能够捕捉到较小向量所遗漏的细微差别。来自 OpenAI 的 3,072 维向量通常比 256 维向量更能理解你的查询。

但“更大”伴随着昂贵的代价。存储数百万个高维向量需要海量的内存。在其中进行搜索 (向量搜索) 会导致高延迟和计算成本。工程师们常常陷入两难境地: 要么选择高精度但耗尽预算,要么选择高效率但接受较差的搜索结果。

如果你不必做选择呢?

Google Cloud AI 的研究人员推出了一种名为 Matryoshka-Adaptor 的新框架。受俄罗斯套娃启发,这种方法允许你采用强大的高维嵌入并对其进行显著“缩减”,同时不损失性能。无论你是拥有标记好的训练数据,还是一堆文档,该适配器都能将你的向量压缩 6 倍到 12 倍,同时保持最先进的检索质量。

Figure 1: The effectiveness of the Matryoshka Adaptor in dimensionality reduction. In both unsupervised (red line) and supervised (black line) settings, the Matryoshka Adaptor showcases the capability to considerably decrease embedding dimensions while maintaining a negligible impact on nDCG@10 retrieval performance.

如图 1 所示,结果令人震惊。红线和黑线 (代表适配器) 即使在维度下降时仍能保持高性能,而标准嵌入通常需要完整的尺寸才能良好运行。

背景: 维度问题

嵌入是现代搜索 (RAG)、推荐系统和聚类的基石。嵌入模型将像“The cat sat on the mat”这样的文本转换为固定大小的向量 (例如 [0.1, -0.5, 0.3, ...]) 。

标准方法假设维度是固定的。如果模型输出 768 个维度,你就必须使用全部 768 个。如果你为了节省空间将向量截断为前 64 个数字,性能通常会崩溃,因为模型并没有被教导前 64 个数字是特殊的;信息是随机分布在整个向量中的。

俄罗斯套娃表示学习 (MRL) 改变了这一范式。它训练模型,使最关键的信息存储在较早的维度中 (“里面的娃娃”) 。这允许有效的截断。然而,MRL 通常需要从头开始训练基础模型。

Matryoshka-Adaptor 论文提出了一个不同的问题: 我们能否利用现有的嵌入模型 (即便是黑盒 API) 并“调整”其输出,使其事后具备这种套娃属性?

核心方法: 适配器如何工作

Matryoshka-Adaptor 不会改变大型 LLM 本身的权重。相反,它训练一个位于 LLM 之上的轻量级“适配器”——一个自定义函数。

设 \(e\) 为模型的原始嵌入。适配器学习一个函数 \(f\) 来创建一个新的嵌入 \(\hat{e}\):

\[ \hat{e} = e + f(e) \]

注意这种加法性质 (残差连接) 。适配器只需要学习将信息组织成套娃结构所需的差异或“修正”。研究人员提出了两种训练该适配器的方法: 无监督 (仅使用语料库文档) 和监督 (使用查询-文档对) 。

1. 无监督微调: 在无标签的情况下组织信息

在许多现实场景中,你拥有海量的文档数据库 (语料库) ,但没有标记好的查询。无监督 Matryoshka-Adaptor 的工作原理是确保文档之间的关系保持一致,无论你是查看完整的嵌入还是缩小后的版本。

该框架使用两个特定的损失函数来强制这种一致性:

A. 成对相似度损失 (Pairwise Similarity Loss) 这确保了如果文档 A 和文档 B 在完整的 768 维空间中相似,它们在 64 维空间中也应该相似。它关注全局关系。

Figure 2: Similarity loss is a measure of the discrepancy between the similarity of two embeddings in their original dimensional space and their similarity in a reduced dimensional space.

在数学上,这最小化了跨不同维度 (\(m\)) 的余弦相似度差异:

Equation for Pairwise Similarity Loss

B. Top-k 相似度损失 (Top-k Similarity Loss) 全局相似度是不够的;我们最关心最近邻。如果文档 A 的最近邻是文档 B,那么这种关系必须在低维度中得到保留。该损失严格关注局部邻域 (\(NN_k\))。

Equation for Top-k Similarity Loss

为了防止新嵌入偏离原始语义太远,他们还包含了一个重构损失 (\(\mathcal{L}_{rec}\)),确保适应后的向量保持接近原始向量:

Equation for Reconstruction Loss

结合这些,无监督目标函数试图在保留邻居、保留全局结构和保持对原始模型的忠实之间取得平衡:

Total Unsupervised Objective Function

2. 监督微调: 为搜索优化

如果你有标记数据 (查询和相关文档对) ,你可以进一步提升性能。Supervised Matryoshka-Adaptor 将查询嵌入和语料库嵌入都通过适配器处理。

Figure 3: Block diagrams illustrating both the unsupervised and supervised Matryoshka-Adaptor frameworks.

在这种设置下,研究人员引入了排序损失 (Ranking Loss) 。 该损失函数强制模型将相关文档排在不相关文档之前,不仅在全维度上,而且在每一个降维级别上

Equation for Ranking Loss

这确保了即使你将向量削减到 64 维,相关的搜索结果仍然会出现在列表顶部。最终的监督目标将这种排序能力与无监督结构保留相结合:

Total Supervised Objective Function

实验与结果

研究人员在 13 个 BEIR 数据集 (信息检索的标准基准) 、多语言数据集 (MIRACL) 甚至多模态 (文本到图像) 数据集上对该框架进行了广泛评估。

在无监督设置下击败 PCA

在没有标签的情况下减少维度的常用方法是主成分分析 (PCA)。研究人员将 Matryoshka-Adaptor 与 PCA 在 OpenAI 的文本嵌入和 Google 的多模态嵌入上进行了比较。

Figure 4: Experimental results of the unsupervised Matryoshka-Adaptor applied to three different embedding models compared to PCA.

如图 4 所示,Matryoshka-Adaptor (橙色三角形) 显著优于 PCA (绿色正方形) ,特别是在中等到高维度时。实际上,随着维度的增加,PCA 的性能往往会下降,因为它不像适配器那样针对特定的语义关系进行优化。适配器允许低维嵌入实现与原始全尺寸嵌入相当的性能。

监督性能提升

当有标记数据可用时,结果更加令人印象深刻。研究人员将其方法与“Search-Adaptor” (以前的最先进方法) 和基础 Google Gecko 嵌入进行了比较。

Figure 5: Experimental results of the supervised Matryoshka-Adaptor on retrieval tasks, utilizing three different embedding models.

在图 5 中,Supervised Matryoshka-Adaptor (橙线) 始终位于顶部。

  • 维度缩减: 在 OpenAI 模型上 (图 5a) ,适配器允许从 3072 维减少到大约 512 维,而检索准确率 (nDCG@10) 几乎没有损失。
  • 性能提升: 即使在相同的维度下,微调后的适配器通常也优于原始基础模型,因为它已针对特定数据集进行了定制。

距离度量作为代理

无监督学习的一个挑战是,在没有基准标签进行核对的情况下,很难知道你的模型是否“足够好”。论文提供了一个有趣的见解: 简单的距离度量与下游性能相关。

Figure 7: Analysis of distance metrics in unsupervised settings. Correlation between nDCG and average pairwise/top-k distances.

图 7 显示 Matryoshka-Adaptor 成功减少了完整向量与缩小向量之间的“距离” (或差异) (图 A) 。更重要的是,图 B 和 C 显示这些距离与实际检索得分 (nDCG) 之间存在很强的相关性。这意味着你可以信任无监督损失指标作为你的搜索系统实际性能的代理。

结论与启示

Matryoshka-Adaptor 代表了实用 AI 工程迈出的重要一步。它解决了嵌入部署的“最后一公里”问题: 成本和速度。

主要收获包括:

  1. 灵活性: 它适用于文本、图像和多种语言。
  2. 模型无关: 你可以将其应用于 OpenAI、Google 或开源模型 (如 BERT/RoBERTa) ,而无需访问其内部权重——你只需要它们的输出向量。
  3. 效率: 它实现了 6 倍到 12 倍的维度缩减 , 且性能损失极小。这直接转化为更小的向量数据库和更快的查询时间。
  4. 无需标签: 虽然标记数据有帮助,但仅无监督模式就比 PCA 等标准降维技术提供了巨大的改进。

对于构建 RAG (检索增强生成) 系统或搜索引擎的学生和工程师来说,这篇论文提供了一条清晰的优化路径。与其为 3,000 维向量的存储和计算买单,不如通过简单的微调步骤,让你以一小部分占用空间实现同样的智能。