多项式自编码器:压缩嵌入向量新解法
2026 年 5 月 5 日,文章聚焦嵌入、PCA、自编码器、套娃向量、检索等领域。除量化外,压缩嵌入向量常用主成分分析(PCA),但它是线性投影,而神经网络嵌入结构非线性,存在线性解码器无法触及的方差。本文介绍在 PCA 基础上添加二次解码器的闭式方法,编码器用普通 PCA,解码器是二次多项式提升加岭回归,无需随机梯度下降等,只需一次 `np.linalg.solve` 运算。
实验结果:多项式自编码器优势明显
在 BEIR/FiQA 数据集上,用 `mxbai - embed - large - v1` 模型,每个向量预算 512 字节,评估指标为 NDCG@10。结果显示,PCA 实现 4 倍内存压缩,但 NDCG 下降 3.58 个百分点;多项式自编码器(poly - AE)256 维时,NDCG 仅下降 0.85 个百分点,比 PCA 提升 2.73 个百分点。在四个模型测试中,多项式自编码器在 d = 128 时提升 1 到 4.4 个百分点,d = 256 时提升 0.03 到 2.7 个百分点。
对比内容:四种方法各有特点
每次测量含四条线:原始为完整嵌入向量,是质量上限;套娃向量(matryoshka)对不同模型处理方式不同;PCA 取语料库协方差前 d 个特征向量;多项式自编码器用 PCA 编码,二次多项式解码。固定 `d` 下,四种方法每个向量存储 `2d` 字节。
实验设置:贴合生产部署
BEIR 是标准检索数据集集合,评估指标为 NDCG@10。PCA 和多项式自编码器采用直推式拟合,统计数据在要压缩的语料库上计算,查询不参与拟合,推理时用固定编码器/解码器,与生产部署相符。主要实验用 FiQA 数据集,含 57K 个文档、648 个查询和 1706 个 qrels。
主要表格:多模型验证优势
在 FiQA 数据集上,不同模型在 256 个半精度浮点(512 字节/向量)和 128 个半精度浮点(256 字节)预算下的 NDCG@10 结果表明:多项式自编码器在所有四个模型上始终优于 PCA;d = 256 时,与原始向量相比,NDCG 损失 0.7 - 1.4 个百分点,实现 4 倍内存压缩;对于未进行套娃训练的模型,套娃向量表现比 PCA 更差。
二次解码器:作用与适用范围
PCA 是线性基线,二次解码器添加线性解码器无法触及的非线性部分。多项式自编码器相对于 PCA 的提升,在 d = 128 时始终高 1 - 4 个百分点,是最佳适用范围;d = 256 时,差距因模型而异。各向异性越强,提升越大。对于非 MRL 模型,套娃向量表现比 PCA 差。多项式自编码器在语料库不可用时无法工作,如多租户 SaaS、流式索引、边缘推理等场景。在操作员拟合场景中,d = 256 实现 4 倍压缩,d = 128 实现 8 倍压缩,多项式自编码器优势明显。
线性投影信息损失:锥体效应致信息丢失
PCA 是最佳线性投影方法,但数据具非线性结构时,线性解码器无法触及。变压器模型嵌入向量有锥体效应,点云集中在单位球面上的狭窄锥体内,具强烈非线性结构。PCA 只能捕捉线性椭球体投影,流形曲率信息不可见,各向异性越强,PCA 无法触及的方差越多,因此需能处理坐标二次组合的解码器。
多项式解码器:线性提升实现非线性解码
需非线性解码器,直接训练神经网络会失去闭式解优势。采用多项式提升,将向量提升到所有次数不超过 2 的单项式,对提升后的向量进行线性回归,相当于在原始空间进行二次回归。编码器用前 d 个 PCA 分量,解码器是从 M 维提升空间到 D 维原始空间的线性回归,训练解码器只需一次 `np.linalg.solve` 运算。多项式自编码器结构包括编码器、解码器、重建和残差,无需反向传播等,计算时间因 d 值而异。PCA 后原始 `p` 坐标各向异性大,需进行逐轴标准差归一化。
小语料库问题:过拟合致结果假象
在 SciFact 数据集上,d = 256 时多项式自编码器 NDCG@10 与原始向量差距小,与 PCA 差距大;在 FiQA 数据集上,与原始向量差距稳定,但与 PCA 差距缩小。原因是 SciFact 数据集岭回归过拟合,记忆语料库而非有更好泛化能力。安全经验法则是 `N` 至少是 `M = (d + 1)(d + 2) / 2` 的 5 - 10 倍。
压缩残差:结合 TurboQuant 实现高效压缩
自编码器将向量重新打包为 `(p, V_resid)` 对,需对残差进行量化。多项式自编码器去除各向异性,与 TurboQuant 结合可高效量化残差。Qdrant 1.18 发布的 TurboQuant 修改版本,实现与“多项式自编码器 + 残差量化”混合方法大致相同的召回率,且节省向量字节预算。
方法来源:相邻领域技术应用
作者在化学信息学中熟悉多项式提升方法,在 Qdrant 工作时将“PCA + 二次解码器”应用于神经嵌入。相关构建方法在物理系统数值建模中被称为二次流形,已有多篇论文研究。该构建方法在物理系统模拟中应用,嵌入向量实验结果表明其也适用于此。这种组合未成为主流机器学习方法,可能因研究社区重叠少、多项式方法与核技巧相关、闭式解变体超出常见关注范围。
方法局限性:复杂度与适用范围受限
该方法存在一些局限性:立方复杂度的岭回归求解在 d 较大时难以处理,适用于 d ≈ 200 - 256 范围;直推式拟合在语料库变化时解压缩效果下降;小样本数量时岭回归易过拟合;三次多项式提升维度高,岭回归求解不切实际且过拟合严重。
下一步尝试方向:探索更多可能
未来可在更大语料库和更复杂模型上实验,如在 MS MARCO 数据集上用 e5 - mistral - 7b 类模型;研究提升多项式次数的效果;探索无法计算套娃向量场景下的混合方法。
代码和复现:可在 GitHub 找到相关代码
BEIR 数据集加载器、编码器、PCA 初始化、多项式提升、岭回归、检索等代码可在 [github.com/IvanPleshkov/poly - autoencoder](https://github.com/IvanPleshkov/poly - autoencoder) 找到。最小运行步骤包括克隆仓库、创建虚拟环境、安装依赖、运行评估脚本。在 M 系列 MacBook 上,首次运行会下载模型和数据集,编码语料库并打印 NDCG@10 表格。