Jina Embeddings v4 的量化感知训练

AI资讯 6个月前 charles
9.5K 0

在 AI 领域,我们对模型的期待总是既要、又要、还要:模型要强,速度要快,成本还要低。但实际应用时,高质量的向量表征往往意味着庞大的数据体积,既拖慢检索速度,也推高存储和内存消耗。

量化(Quantization)正是破解这一矛盾、实现规模化应用的关键技术。量化是一种常用的神经网络模型压缩技术,本质并不复杂:通过把高精度的小数四舍五入成更粗的整数,主动牺牲一部分精度,换来模型体积的大幅缩减。

量化不仅节省了存储和内存,还让向量计算变得更快,显著提升了检索效率。更重要的是,量化作为一种通用的数值优化手段,它不挑数据、不看场景、不依赖特定领域知识,适用于各类模型和应用场景。

一般认为,量化总会牺牲精度,有得必有失。但我们发现,通过量化感知训练(Quantization-Aware Training, QAT),可以在压缩体积的同时,最大程度保留模型性能。我们已经将这一技术应用在 jina-embeddings-v4,为极致空间敏感的场景带来更小、更高效的向量表征。

Jina Embeddings v4 是我们最新推出的为搜索而生的四代目模型,全球首个集多模态、多向量、多语言于一体的开源向量模型。

HF 🤗 https://huggingface.co/jinaai/jina-embeddings-v4
技术报告 📖 https://arxiv.org/abs/2506.18902
API 💻 https://jina.ai/embeddings/

主流量化方法对比

模型量化是提升大模型落地效率的关键工具。结合实际应用背景,目前主流的量化方法大致可以分为四类:

1. 训练后量化 (Post-training quantization, PTQ)

这种方法最为直接,针对已经训练好的向量模型,直接对输出的浮点数进行取整或缩放处理。模型本身的结构和参数不会发生变化,不需要再进行额外训练。。常用于快速压缩向量体积,操作简单,见效快,但模型本身大小和推理速度不变。

2. 输出量化感知训练 (Training for quantized embedding outputs, Output QAT)

这种方法的关键在于:让模型在训练阶段就知道输出会被量化。 通过在训练过程中引入量化操作,模型主动适应低精度输出的限制,自动调整参数,使量化后的向量尽量保留原始信息。

虽然模型参数会有所调整,但模型权重的精度保持不变,因此模型整体的体积不会缩小,变化的只是输出向量的尺寸。适合对模型结构和推理速度有要求,但希望输出更紧凑的场景。

3. 全量化感知训练 (Training for fully quantized models, Full QAT)

以一个训练好的高精度模型为起点,先将模型权重降低到目标精度,再针对精度损失进行再训练和微调。最终不仅能获得更小的向量表征,还能压缩模型体积、加速推理。由于涉及权重和结构的全面调整,这种方法对训练资源和工程成本的要求最高。

4. 蒸馏 (Distillation)

蒸馏是一种以大带小的策略,通过用一个强大的大模型(教师模型)生成大量训练数据,来训练一个专为量化设计、结构更小的新模型(学生模型)。实现模型和向量的双重压缩,性能接近原模型,适合极致压缩和加速场景,但开发周期较长。

下表总结了这四种方法的特点:

方法
向量表征更紧凑?
需要训练?
模型被压缩?
推理速度更快?
PTQ ✓
❌
❌
❌
Output QAT ✓ ✓
❌
❌
Full QAT ✓ ✓ ✓ ✓
蒸馏 ✓ ✓ ✓ ✓

简单总结一下:四种方法都能实现向量压缩,但除了压缩向量外,还想同时获得更小、更快的模型,则需选择全量化感知训练(Full QAT) 或蒸馏,并承担更高的训练成本。

考虑到应用门槛和性价比,本文将聚焦于训练后量化(PTQ)和输出量化感知训练(Output QAT)这两种无需更改模型结构、也不影响推理速度的量化方案。它们能够大幅减小向量体积,在实际场景中应用门槛低,易于落地。

实验设置与流程

本次实验选择 jina-embeddings-v4 作为基准模型,配备了检索任务专用的 LoRA 适配器。默认状态下,它会生成 2048 维的 FP32(32 位浮点)向量,每个向量占用 8KB 存储空间。

我们在 NanoBEIR 基准上,系统性地评估了多种量化级别(8bit、4bit、三元、二元),并分别采用训练后量化(PTQ)和输出向量量化感知训练(Output QAT)两种策略。部分实验还对比了不同的缩放方法(最大最小值与滚动平均缩放)。

  • 基线 (Baseline):未经量化的 jina-embeddings-v4 的原始性能。

  • 训练后量化,PTQ:仅将模型输出的向量量化为二元向量,而不改动模型本身。

  • 输出量化感知训练,Output QAT:在量化输出向量的基础上,进一步微调 LoRA 适配器,以提升量化条件下的检索性能。

(注:本次实验均使用该模型的内部测试版,其公开发布版的性能会更高。)

量化等级

我们测试了以下四种不同粒度的量化等级,它们的压缩效果层层递进:

  • 8 位整数 (8-bit integers):将向量值映射到 [-128, 127] 区间,体积压缩 4 倍 (降至 2048 字节)。

  • 4 位整数 (4-bit integers):映射到 [-8, 7] 区间,体积压缩 8 倍 (降至 1024 字节)。

  • 三元量化 (Trinary Quantization):只保留-1, 0, 1 三个值,体积压缩约 40 倍 (降至约 230 字节)。

  • 二元量化 (Binary Quantization):只保留-1 和 1 两个值(代表正负),体积压缩 64 倍 (降至 128 字节)。

Jina Embeddings v4 的量化感知训练
不同量化等级带来的向量体积压缩效果

缩放 (Scaling)

在二元量化中,操作极为直接:每个数值只需判断正负,正数映射为 1,零和负数映射为 -1。

Jina Embeddings v4 的量化感知训练
二元量化。所有负值变为-1,其他值变为1。

其他量化方式则需要先将原始向量的数据范围(理论上是无穷大)映射到一个有限区间 [min, max],然后再进行取整。我们主要采用了两种区间确定方法:一是直接取每批数据的最大/最小值,二是通过滚动平均动态调整区间。

三元量化的规则:

  • 大于等于 max 的数值设为 1;
  • 小于等于 min 的数值设为 -1;
  • 介于 min 和 max 之间的数值归为 0。
Jina Embeddings v4 的量化感知训练
三元量化示意图:设定阈值区间,区间内所有数值归零,区间外分别映射为 -1 和 1

4 位整数量化的规则::

  • 大于等于 max 的数值设为 7;
  • 小于等于 min 的数值设为 -8;
  • 其他数值先用 16 * (v - min) / (max - min) - 8 归一化到 [-8, 7] 区间,再四舍五入到最近的整数。
Jina Embeddings v4 的量化感知训练
4位量化示意图:所有数值根据区间归一化并离散到 [-8, 7],边界外分别截断为 -8 和 7

8 位整数量化的规则:

  • 大于等于 max 的数值设为 127;
  • 小于等于 min 的数值设为 -128;
  • 其他数值使用 256 * (v - min) / (max - min) - 128 归一化到 [-128, 127] 区间,并四舍五入到最近的整数。
Jina Embeddings v4 的量化感知训练
8位量化示意图:所有数值映射并离散到 [-128, 127] 区间

为了确定缩放边界 max 和 min,我们探索了两种策略:

  • 最大最小值缩放 (Min/Max) :我们分批处理数据,并直接采用当前数据批次内的最大和最小向量值作为边界,这种方法容易受到极端离群值的影响。

  • 滚动平均缩放 (Rolling averaging over batches) :一种更稳健的方法。它会持续计算多个数据批次的均值和标准差,并基于这些统计值动态设定一个更具代表性的边界(如 max = avg + std, min = avg - std)。这能有效避免单批次内的异常值对整体量化效果造成干扰。

QAT 微调 (QAT Fine-Tuning)

两种量化策略的实验方法有所不同。对于训练后量化(PTQ),我们冻结原模型,仅对它的输出向量应用前述的量化方法。

对于输出量化感知训练(Output QAT),为了能够有效微调,我们采用了直通估计器 (Straight-Through Estimation, STE) 技术。它的核心机制是,在前向传播时对输出进行量化,但在反向传播计算损失时,将量化结果还原为全精度数值,从而用全精度的损失信号来优化模型参数。

我们将每种配置都微调了 10000 步,并每隔 500 步保存一个模型检查点(checkpoint)。训练结束后,我们从所有检查点中,选出在 NanoBEIR 基准测试上得分最高的那一个作为最终模型。

非对称量化 (Asymmetric Quantization)

值得注意的是,PTQ 和 Output QAT 这两种方法,其优化的重点在于减小向量的尺寸,从而节省存储空间并提升检索速度。它们并不会压缩模型本身的体积,也不会加快模型的推理(即向量生成)过程。

考虑到在检索场景中,需要长期大量存储的是文档向量,而用户的查询向量则是临时生成的。基于这一点,我们设计并测试了一种非对称量化 (Asymmetric Quantization) 方案:

只量化需要海量存储的『文档向量』,而用于即时检索的『查询向量』则保持完整的原始精度。

结果

我们总计测试了九种实验条件,所有实验配置与最终在 NanoBEIR 基准上的平均得分汇总如下

实验条件一览

条件名称
微调
量化等级
缩放策略
是否量化查询
基线 (Baseline)
❌
不适用
不适用
不适用
PTQ (查询与文档均量化)
❌
二元
不适用
✓
PTQ (仅量化文档)
❌
二元
不适用
❌
QAT 二元
✓
二元
不适用
✓
QAT 二元 (仅量化文档)
✓
二元
不适用
❌
QAT 三元
✓
三元
滚动平均
✓
QAT 4 位
✓
4 位
滚动平均
✓
QAT 8 位
✓
8 位
滚动平均
✓
QAT 8 位 (Min/Max)
✓
8 位
Min/Max
✓

在 12 个 NanoBEIR 基准测试中,各条件的平均得分(正确率%)

条件名称
平均分
与基线差异
基线 (Baseline)
60.10
不适用
PTQ 二元
58.33
-1.78
PTQ 二元 (仅量化文档)
59.08
-1.02
QAT 二元
59.22
-0.89
QAT 二元 (仅量化文档)
60.81 +0.70
QAT 三元
59.49
-0.62
QAT 4 位
61.73 +1.62
QAT 8 位
61.67 +1.56
QAT 8 位 (Min/Max)
61.29
+1.19

从实验数据中,我们可以解读出几个清晰的趋势。

首先,微调的价值无可替代。 训练后量化(PTQ)与 量化感知训练(Output QAT) 在二元量化条件下,唯一差异是是否微调,但 QAT 得分明显更高;即便只量化文档,QAT 依然带来近 2% 的提升,充分说明量化感知训练的实际价值。

其次,量化精度与表现成正比。 精度越低,压缩越激进,性能损失越大。4 位优于三元,三元优于二元。但值得注意的是,8 位与 4 位之间几乎没有差别,或许说明量化存在性能阈值。

再次,非对称量化能有效提升性能。 在二元量化中,仅量化文档的 QAT 方案性能达到了 60.81 分,成功超越了基线。这证明了在查询侧保留完整信息的有效性。

最后,动态缩放优于静态缩放。滚动平均法在信息保留上优于简单 min/max,带来了更优的整体表现。

结论

量化技术大幅压缩了向量体积,加快检索速度,为实际应用带来直接的运营优势。

我们的实验显示,简单的训练后量化(PTQ) 操作简单但有精度损失;输出量化感知训练(Output QAT)在训练阶段让模型主动适应量化,能有效缓解性能损失,表现更优。

整体来看,量化程度直接影响着模型性能,毕竟这项技术的基础就是降低数值精度。所以量化越温和,性能越好,比如 4 位优于二元量化;但令人意外的是,在 Jina Embeddings v4 上,8 位量化和 4 位量化之间的性能没有显著差异。这或许意味着,精度存在一个阈值:在跨过某个临界点之前,进一步放宽或收紧量化程度,对模型性能的影响可能微乎其微。

此外,缩放策略同样关键。实验表明,滚动平均缩放法明显优于固定的最大最小值缩放法。 更能适应数据分布,值得深入探索。

总之,量化能帮您用更低成本,发掘向量模型的更大价值。本文虽然未能覆盖所有量化选项,但深入探讨的这两种方法都容易实现,且收益实在。我们对量化技术的探索不会止步,jina-embeddings-v4 的二元量化支持也即将推出,敬请期待。

Jina Embeddings v4 的量化感知训练

版权声明:charles 发表于 2026年4月26日 pm8:10。
转载请注明:Jina Embeddings v4 的量化感知训练 | AI工具大全&导航

相关文章