Новости
Модели
Продукты
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные вложения мирового класса.
Реранкер
Нейронный ретривер мирового класса для максимального повышения релевантности поиска.
Глубокий поиск
Ищите, читайте и рассуждайте, пока не найдете лучший ответ.
Более
keyboard_arrow_down
Классификатор
Классификация изображений и текста по нулевому и небольшому количеству кадров.
Сегментатор
Разрежьте длинный текст на куски и выполните токенизацию.

API-документы
Автоматическая генерация кода для вашего второго пилота IDE или LLM
open_in_new


Компания
keyboard_arrow_down
О нас
Связаться с отделом продаж
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия использования


Авторизоваться
login
Обзор методов квантования
Экспериментальная установка
Результаты
Вывод
Технический блог
июнь 30, 2025

jina-embeddings-v4 的量化感知训练

Квантование позволяет получить векторные представления (Embeddings) меньшего размера. Мы покажем вам, что точно настроенное квантование позволяет получить даже векторные представления (Embeddings) без потерь.
Bo Wang
Andrei Ungureanu
Scott Martens
Bo Wang, Andrei Ungureanu, Scott Martens • 8 минуты чтения

Квантование широко используется для решения проблем масштабирования в ИИ. Название может показаться сложным, но это всего лишь округление чисел, чтобы они занимали меньше места. Это означает, что векторы эмбеддингов (Embeddings) становятся меньше, занимают меньше памяти и места для хранения, а также ускоряется поиск информации, поскольку требуется меньше времени для сравнения векторов. Квантование — это чисто числовой метод, которому все равно, какие данные обрабатывает ваша модель или какие у вас варианты использования, поэтому он может принести улучшения, не требуя больших затрат на знания предметной области.

Можно было бы ожидать, что квантование включает в себя старые добрые компромиссы и ничто не дается даром — где мы должны пожертвовать некоторой точностью. В этой статье мы покажем вам способ сделать его без потерь с помощью квантования с учетом обучения (quantization-aware training, QAT). Этот метод используется в jina-embeddings-v4 для предоставления меньших по размеру эмбеддингов, которые требуются в приложениях, критичных к пространству.

tagОбзор методов квантования

Квантование модели обычно означает одно из четырех:

  • Пост-тренировочное квантование (Post-training quantization, PTQ)
  • Обучение для квантованных выходов эмбеддингов (Output QAT)
  • Обучение для полностью квантованных моделей (Full QAT)
  • Дистилляция новой квантованной модели из существующей неквантованной

Пост-тренировочное квантование (PTQ) принимает обученную модель эмбеддингов как есть и никак ее не изменяет. Это просто вопрос отбрасывания наименее значащих цифр значений с плавающей запятой, производимых моделью. Мы просто округляем числа, а иногда масштабируем их до диапазона.

Output QAT означает тонкую настройку модели эмбеддингов для получения оптимальных векторов с уменьшенной точностью. Это означает изменение модели, но не меняет точность весов модели, и, следовательно, не уменьшает ее размер. Уменьшается только размер выходного вектора.

Full QAT начинается с полностью обученной модели с полной точностью и снижает точность весов модели, а затем тонко настраивает производительность этой измененной модели. Это приводит к созданию значительно меньшей модели, а также меньших по размеру эмбеддингов, ценой некоторой тонкой настройки.

Дистилляция — это процесс обучения новой модели для соответствия производительности существующей. Это означает создание новой модели, которая разработана с нуля как квантованная, а затем использование существующей модели для генерации столько обучающих данных, сколько необходимо для обучения, пока она не будет работать как можно ближе к существующей модели.

Преимущества этих четырех подходов суммированы в таблице ниже:

Подход Более компактные эмбеддинги? Требуется обучение? Сжатие модели? Более быстрый вывод?
PTQ ✓ ❌ ❌ ❌
Output QAT ✓ ✓ ❌ ❌
Full QAT ✓ ✓ ✓ ✓
Дистилляция
(к меньшей модели) ✓ ✓ ✓ ✓

Все четыре подхода создают более компактные эмбеддинги, но, кроме PTQ, все требуют некоторого дополнительного обучения, в то время как только Full QAT и дистилляция создают новые, более быстрые модели. Full QAT и дистилляция намного дороже в реализации, поскольку требуют гораздо больше обучения, чем Output QAT.

В этой статье мы рассмотрим только PTQ и Output QAT, которые не меняют размер или скорость модели эмбеддингов.

tagЭкспериментальная установка

Для этих экспериментов нашей базовой моделью является jina-embeddings-v4 с адаптером извлечения, который производит векторы с плавающей запятой 32-битной точности (FP32) в 2048 измерениях. Каждый эмбеддинг, следовательно, имеет размер 8196 байт или 8 кБ.

Мы изучили несколько экспериментальных условий, используя эталонные задачи извлечения запросов-документов из набора NanoBEIR benchmark. Процесс извлечения использует косинусное сходство между векторами для поиска и ранжирования документов, которые лучше всего соответствуют запросам.

  • Базовая линия — Производительность векторов эмбеддингов jina-embeddings-v4 без какого-либо квантования. Во всех этих экспериментах использовалась бета-версия модели, и производительность выпуска несколько лучше.
  • PTQ — Мы квантовали выходные векторы в бинарные векторы, не меняя модель.
  • Output QAT — Мы квантовали выходные векторы и применили тонкую настройку к адаптеру извлечения, чтобы улучшить его производительность в квантованных условиях.

tagУровни квантования

Рисунок 1: Сравнение размеров эмбеддингов после квантования.

Мы экспериментировали с четырьмя различными уровнями квантования.

  • 8-битные целые числа — Значения FP32 сводятся к целым числам в диапазоне от -128 до 127, уменьшая эмбеддинги в 4 раза до 2048 байт.
  • 4-битные целые числа — То же, что и для 4-битных целых чисел, но мы отображаем в диапазон от -8 до 7, уменьшая размеры векторов в 8 раз, до 1024 байт.
  • Троичное квантование — Все значения отображаются в одно из трех значений: -1, 0, 1. Оптимально хранятся, это уменьшает каждое измерение до 1,6 бита, уменьшая размер векторов эмбеддингов примерно в 40 раз до примерно 230 байт.
  • Бинарное квантование — Мы преобразуем скалярные значения FP32 в один бит, используя тип данных torch.sign, который предоставляет только два значения, занимающие один бит для хранения. Это уменьшает 2048-мерные векторы эмбеддингов с 8192 байт до 128 байт, что в 64 раза меньше.

tagМасштабирование

Для бинарного квантования квантование очень простое: Если значение вектора выше 0 или положительное, оно отображается в 1. В противном случае оно отображается в -1.

Рисунок 2: Бинарное квантование. Все отрицательные значения становятся -1, все остальные 1.

Для других сценариев квантования мы нормализовали значения до диапазона, а затем округлили до ближайшего значения, разрешенного уровнем квантования. Векторы эмбеддингов состоят из масштабируемых чисел между -∞ и +∞ (или, на практике, действительно больших положительных и отрицательных чисел). Мы используем два числа, maxmaxmax и minminmin, для масштабирования значений для квантования.

Для троичного квантования мы берем каждый компонент вектора vvv и преобразуем его следующим образом:

  • если vvv ≥ maxmaxmax, vvv становится 1.
  • если vvv ≤ minminmin, vvv становится -1.
  • если minminmin < vvv < maxmaxmax, vvv становится 0.
Рисунок 3: Троичное квантование. Определяется интервал, и значения внутри него становятся 0. Все более низкие значения становятся -1, а все более высокие - 1.

Для 4-битных целых чисел:

  • если vvv ≥ maxmaxmax, vvv становится 7.
  • если vvv ≤ minminmin, vvv становится -8.
  • если minminmin < vvv < maxmaxmax, vvv становится 16∗(v−min)/(max−min)−816*(v - min)/(max - min) - 816∗(v−min)/(max−min)−8, затем округляется до ближайшего целого числа. Это масштабирует значение до диапазона [−8,7][-8,7][−8,7].
Рисунок 4: 4-битное квантование. Определяется интервал, и все значения нормализуются до определенного диапазона [-8,7].

Для 8-битных целых чисел:

  • если vvv ≥ maxmaxmax, vvv становится 127.
  • если vvv ≤ minminmin, vvv становится -128.
  • если minminmin < vvv < maxmaxmax, vvv становится 256∗(v−min)/(max−min)−128256*(v - min)/(max - min) - 128256∗(v−min)/(max−min)−128, округленным до ближайшего целого числа. Это масштабирует значение до диапазона [−128,127][-128,127][−128,127].
Рисунок 5: 8-битное квантование. Определяется интервал, и все значения нормализуются до определенного диапазона [-128,127].

Для вычисления maxmaxmax и minminmin мы использовали два подхода:

  • Min/Max — Мы обрабатывали наши данные пакетами, и для каждого пакета мы определяли самый высокий и самый низкий компонент вектора, устанавливая maxmaxmax на самый высокий, а minminmin на самый низкий.
  • Скользящее усреднение по пакетам — Для каждого пакета мы вычисляли среднее и стандартное отклонение компонентов вектора. Мы поддерживали скользящее среднее как среднего, так и стандартного отклонения по мере обработки всех пакетов. Если avgavgavg является текущим скользящим средним значений среднего пакета, а stdstdstd является текущим скользящим средним стандартных отклонений, то для каждого пакета:

max=avg+stdmax = avg + stdmax=avg+std
min=avg−stdmin = avg - stdmin=avg−std

tagТонкая настройка QAT

Для экспериментов PTQ мы использовали модель как есть и квантовали эмбеддинги, которые она производила, используя методы, описанные выше.

Для Output QAT мы тонко настроили модель, используя прямую оценку. Это означает, что мы обращаем процесс квантования, восстанавливая полную точность значений, прежде чем вычислять потери (т. е. ошибку), а затем используем эту метрику потерь для тонкой настройки модели.

В каждом случае мы выполняли дообучение в течение 10 000 шагов, сохраняя контрольную точку каждые 500 шагов. Затем мы сохранили контрольную точку с наивысшей оценкой в бенчмарке NanoBEIR.

tagАсимметричная квантизация

Посттреничная квантизация (PTQ) и Квантизация с учетом обучения (Output QAT) уменьшают размер векторов 向量模型 (Embeddings), но не уменьшают размер модели или скорость вывода; вся экономия заключается в размере хранимых 向量模型 (Embeddings) документов и скорости поиска.

В результате мы протестировали как квантование векторов запросов, так и оставление их неквантованными во время поиска, поскольку это не меняет размер хранимых векторов 向量模型 (Embeddings) в любом случае.

tagРезультаты

Всего мы протестировали девять условий, которые суммированы в таблицах ниже:

Название условия Дообучение Уровень квантования Стратегия масштабирования Квантованные запросы
Базовый уровень ❌ н/д н/д н/д
PTQ для обоих ❌ Двоичный н/д ✓
PTQ только для документов ❌ Двоичный н/д ❌
QAT Двоичный ✓ Двоичный н/д ✓
QAT Двоичный только для документов ✓ Двоичный н/д ❌
QAT Троичный ✓ Троичный Скользящее среднее ✓
QAT 4-бита ✓ 4-бита Скользящее среднее ✓
QAT 8-бит ✓ 8-бит Скользящее среднее ✓
QAT 8-бит Мин/Макс ✓ 8-бит Мин/Макс ✓

Таблица 2: Экспериментальные условия

Название условия Средняя оценка Отличие от базового уровня
Базовый уровень 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-бит Мин/Макс 61.29 +1.19

Таблица 3: Средняя оценка (в % правильных ответов) для каждого условия по двенадцати бенчмаркам NanoBEIR.

Из приведенной выше таблицы видно, что дообучение для квантования улучшает результаты. Единственное различие между условиями PTQ Двоичный и QAT Двоичный заключается в дообучении, и разница в оценке значительна. Аналогично, мы видим почти 2% улучшение в оценках между условиями PTQ Двоичный только для документов и QAT Двоичный только для документов, которые отличаются только тем же дообучением.

Неудивительно, что мы также видим, что оценки, как правило, улучшаются, чем меньше мы квантуем, при этом 4-битное квантование показывает результаты лучше, чем троичное, а троичное лучше, чем двоичное. Однако дальнейший переход к 8-битам, похоже, ничего не улучшил.

Мы протестировали оставление запросов неквантованными только в двоичных случаях, но, похоже, это улучшает производительность.

Наконец, наши тесты показывают, что метод масштабирования скользящего среднего превосходит упрощенный подход мин/макс.

tagВывод

Квантование имеет некоторые важные операционные преимущества для моделей 向量模型 (Embeddings), значительно уменьшая размер векторов 向量模型 (Embeddings) и ускоряя поиск информации. В то время как простая посттреничная квантизация (PTQ) обеспечивает немедленные преимущества с точки зрения памяти и хранения, наши эксперименты показывают, что квантизация с учетом обучения (QAT) значительно снижает неизбежные потери точности. Дообучение неизменно давало лучшие результаты.

Степень квантования напрямую влияет на производительность, чего и следовало ожидать от метода, основанного на снижении точности значений. Менее агрессивное квантование (например, 4-битное) обычно превосходит более агрессивные методы (например, двоичное), но, что удивительно, не было существенной разницы в производительности между 8-битным и 4-битным квантованием. Казалось бы, пока вы не достигнете определенного порога неточности, разница между большим и меньшим квантованием невелика.

Стратегии масштабирования также важны, при этом метод скользящего среднего показывает превосходные результаты по сравнению с фиксированным подходом мин/макс. Использование значений масштабирования, которые относятся к данным, по-видимому, работает значительно лучше и заслуживает дальнейшего изучения.

Квантование может помочь вам получить больше от ваших моделей 向量模型 (Embeddings) за меньшие деньги. Хотя в этой статье не рассматриваются все варианты квантования, в ней рассматриваются два, которые легко доступны, и они имеют реальные преимущества. Мы работаем над уточнением и улучшением стратегий квантования, чтобы мы могли еще больше снизить затраты пользователей, и ожидаем выпустить двоичную поддержку для jina-embeddings-v4 в ближайшем будущем.

Категории:
Технический блог
rss_feed
Офисы
location_on
Саннивейл, Калифорния
710 Lakeway Dr, Ste 200, Саннивейл, Калифорния 94085, США
location_on
Берлин, Германия (штаб-квартира)
Prinzessinnenstraße 19-20, 10969 Берлин, Германия
location_on
Пекин, Китай
Уровень 5, здание 6, ул. Хайдянь Вест, д. 48, Пекин, Китай
location_on
Шэньчжэнь, Китай
402, этаж 4, здание Fu'an Technology, Шэньчжэнь, Китай
Поиск Фонда
Читатель
Вложения
Реранкер
Глубокий поиск
Классификатор
Сегментатор
API-документация
Получить API-ключ Jina
Ограничение скорости
Статус API
Компания
О нас
Связаться с отделом продаж
отдел новостей
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия
Безопасность
Условия использования
Конфиденциальность
Управление файлами cookie
email
Jina AI © 2020-2025.