向量检索正在成为 AI 应用架构的基础设施。当你把数百万条文档转化为嵌入向量(embedding)存入向量数据库时,存储成本和检索延迟会随维度数线性增长。一个 1536 维的 OpenAI text-embedding-3-small 向量,乘以数百万文档,就是数 GB 的内存占用。降低维度成为工程上绕不开的问题。
目前有两种主流的降维路径。一种是 AI 实验室主推的 Matryoshka Representation Learning(MRL),在模型训练阶段就让嵌入向量支持截断——只取前 N 维,丢弃后面的维度,检索质量损失不大。另一种是统计学里用了几十年的主成分分析(PCA),在推理后对向量做投影变换,保留方差最大的方向。
2026 年 8 月,Iwana Labs 的 Dylan Castillo 发起了一项实验:在 8 个标准检索数据集上,系统对比 MRL 截断和 PCA 投影在不同压缩率下的检索质量保留率。结论出人意料。

两种降维方法的原理差异
MRL 是一种训练时技术。模型训练过程中,损失函数同时施加在多个前缀长度上——前 64 维、前 128 维、前 256 维等。这迫使模型把最重要的语义信息集中在向量的前部,类似俄罗斯套娃(Matryoshka doll)从外到内层层嵌套。推理时只需保留前 d 维并重新归一化即可。OpenAI 的 text-embedding-3-small 和阿里巴巴的 qwen3-embedding-8b 都采用了这种训练方式。
PCA 是一种推理后技术,适用于任何嵌入模型。具体做法是:从语料库中采样一批完整维度向量,计算它们的主成分方向(即方差最大的投影轴),保留前 d 个主成分构成投影矩阵。之后所有文档向量和查询向量都乘以这个投影矩阵再归一化。代价是需要存储和版本化投影矩阵,并保持索引和查询时使用同一版本。
核心区别在于:MRL 需要模型训练阶段就支持,旧模型用不了;PCA 对任何模型都能用,但增加了运维复杂度。
实验设计
实验在 8 个 BEIR 标准检索数据集上展开,覆盖科学文献验证(SciFact)、医学搜索(NFCorpus)、反驳论证检索(ArguAna)、金融问答(FiQA)、引文推荐(SciDocs)、重复问题检测(Quora)、生物医学搜索(TREC-COVID)和网页论证检索(Touché 2020)。语料库规模从 3,600 篇到 523,000 篇不等。
三个模型参与测试:
| 模型 | 维度 | 是否 MRL 训练 |
|---|---|---|
| text-embedding-3-small(OpenAI) | 1,536 | 是 |
| qwen3-embedding-8b(阿里巴巴) | 4,096 | 是,MTEB BEIR 榜首 |
| text-embedding-ada-002(OpenAI) | 1,536 | 否(对照组) |
每个模型的嵌入向量被压缩到 512、256、128、64 和 32 维,分别用 MRL 截断和 PCA 投影两种方法,然后计算 NDCG@10 指标,并与完整维度的基准做比较,得出质量保留率。
核心结果:PCA 在低维度全面领先
text-embedding-3-small
| 维度 | MRL 截断 | PCA | 差距 |
|---|---|---|---|
| 512 | 98% | 97% | -1%(MRL 略优) |
| 256 | 94% | 95% | +1% |
| 128 | 86% | 90% | +4% |
| 64 | 71% | 82% | +11% |
| 32 | 46% | 65% | +19% |
在 512 维时 MRL 截断还有微弱优势,但维度越低,PCA 的领先越明显。到了 32 维(从 1,536 维压缩到原来的 2%),PCA 保留了 65% 的检索质量,而 MRL 截断只保留了 46%。差距接近 20 个百分点。
qwen3-embedding-8b
| 维度 | MRL 截断 | PCA | 差距 |
|---|---|---|---|
| 512 | 99% | 98% | -1%(MRL 略优) |
| 256 | 96% | 96% | 0%(持平) |
| 128 | 91% | 91% | 0%(持平) |
| 64 | 83% | 84% | +1% |
| 32 | 68% | 71% | +3% |
qwen3-embedding-8b 的 MRL 训练更强,缩小了 PCA 的领先幅度。在 256 维和 128 维时两者持平,但在极端压缩(32 维)时 PCA 仍有 3 个百分点的优势。
一个有趣的细节:qwen3-embedding-8b 从 4,096 维截断到 32 维后保留的质量(68%),竟然高于 text-embedding-3-small 从 1,536 维截断到 32 维的保留率(46%)。更强大的 MRL 实现确实能提升截断性能。
逐数据集分析
在 text-embedding-3-small 上,PCA 在 8 个数据集中的 7 个获胜(32 维时)。PCA 在 SciFact、FiQA 和 NFCorpus 上对两个模型都表现更好。MRL 截断在 Quora(重复问题检测)上始终领先,可能因为重复问题检测更依赖粗粒度语义匹配,而 MRL 训练恰好把这种信息放在了前几维。
PCA 不依赖 MRL 训练
一个关键疑问:PCA 表现好,会不会只是因为 MRL 训练已经把嵌入空间整理成了方便投影的结构?如果这个假设成立,那么在非 MRL 训练的模型上 PCA 应该明显变差。
实验用 text-embedding-ada-002(未经 MRL 训练)作为对照组:
| 维度 | ada-002 截断 | ada-002 PCA | 3-small 截断 | 3-small PCA |
|---|---|---|---|---|
| 512 | 96% | 99% | 98% | 97% |
| 256 | 89% | 96% | 94% | 95% |
| 128 | 83% | 89% | 86% | 90% |
| 64 | 66% | 78% | 71% | 82% |
| 32 | 41% | 59% | 46% | 65% |
ada-002 上的 PCA 在 128 维以上时与 3-small 接近,差距主要出现在低维度(64 维以下时 ada-002 的 PCA 保留率下降更快)。但关键对比是:ada-002 上 PCA 在 32 维保留 59% 的质量,而 3-small 上 MRL 截断只保留 46%。即便在未经 MRL 训练的模型上,PCA 在极端压缩时也优于 MRL 训练模型的截断。
实验者坦言无法完全排除 MRL 训练和模型本身质量两个变量的混淆——3-small 是更新的模型,可能本身就更强。但「PCA 只因 MRL 才好用」的假设基本可以排除。
PCA 拟合数据的弹性
PCA 的运维成本主要在投影矩阵的拟合和版本管理上。实验测试了两个维度:
拟合样本量:在 FiQA 的 57K 文档中分别采样 1,000、5,000、20,000 和全部文档拟合 PCA。结果是:1,000 条样本拟合的投影和全量拟合的效果几乎一致。你不需要大量数据来拟合投影矩阵。
跨域拟合:在 100,000 条 MS MARCO 文段上拟合一次 PCA,然后把同一个投影矩阵用在所有其他数据集上(Out-of-Domain)。在 text-embedding-3-small 上,这个跨域投影从 512 维到 64 维的平均表现与域内拟合持平甚至更好。在 qwen3-embedding-8b 上,跨域投影在 128 维以上保持同步,但在 32 维时落后(56% vs 71% 保留率)。
对运维来说,这意味着 PCA 投影矩阵不需要随语料库变化频繁更新,一次拟合可以在相当长时间内复用。
量化压缩:和降维叠加使用
除了减少维度数量,还有一种压缩方式是量化(quantization):每个维度用更少的比特存储。int8 量化让每个维度占 1 字节(比 float32 小 4 倍),二进制量化只用符号位(比 float32 小 32 倍)。
在 text-embedding-3-small 的 1,536 维完整向量上:
| 配置 | 每向量字节 | 相对原始大小 | 质量保留率 |
|---|---|---|---|
| float32(基准) | 6,144 | 100% | 100% |
| int8 | 1,536 | 25% | ~100% |
| binary | 192 | 3.1% | 95% |
二进制量化单独使用就能把向量大小压缩到 3%,同时保留 95% 的检索质量。如果把量化与 PCA 叠加——比如 PCA 降到 512 维后再做二进制量化——向量大小只有 float32 基准的约 1%,但仍保留 82% 的检索质量。
实验局限
这项实验有几个需要考量的边界条件:
模型数量有限:只测了三个模型,其中两个来自 OpenAI。qwen3-embedding-8b 的结果表明,更强的 MRL 实现会缩小 PCA 的领先优势,其他模型家族可能有不同表现。
语料库规模:排除了最大的 BEIR 数据集以控制预算(实验总成本约 30 美元)。在更大规模语料库上 PCA 是否仍然领先尚不确定。
实验室条件:评估使用的是精确搜索(exact search)+ 原始向量,与真实向量数据库的近似索引(ANN)不同。实际部署中还会叠加 BM25 混合检索和重排序器(reranker),这些因素可能改变结论。
基准污染:BEIR 数据集被广泛用于训练嵌入模型,绝对分数可能被系统性高估。
工程启示
对于使用嵌入向量的开发者,这项实验提供了几条可操作的结论:
如果你的嵌入模型支持 MRL(如 text-embedding-3-small、qwen3-embedding-8b),截断到 256-512 维是低风险操作,质量损失在 5% 以内。
如果需要激进压缩到 64 维以下,PCA 比 MRL 截断更可靠。这在存储成本敏感的场景下意义重大——从 1,536 维降到 64 维意味着内存占用减少 24 倍。
如果你的嵌入模型不支持 MRL(比如还在用 text-embedding-ada-002 或其他旧模型),PCA 是唯一可用的降维手段,而且在 128 维以上的效果相当不错。
PCA 投影矩阵的拟合不需要太多数据,也不需要与目标语料严格同域。一次性拟合的投影矩阵可以在多个场景复用,运维成本低于预期。
量化(尤其是二进制量化)是与降维正交的压缩维度,可以叠加使用。int8 量化几乎免费(质量损失 <1%),binary 量化在可接受 5% 质量损失的场景下极具性价比。
完整的实验代码和数据已开源在 GitHub。
原文:Dylan Castillo, "Honey, I shrunk the embeddings: Matryoshka vs. PCA", Iwana Labs, 2026-08-01 数据与代码:github.com/dylanjcastillo/blog/tree/main/_extras/matryoshka-vs-pca