Product quantization
Зачем это важно? Рекомендации, поиск по картинкам и дубликатам, работа с эмбеддингами упираются в скорость. Если у вас база из ста миллионов изображений, честное сравнение каждого запроса со всеми вариантами займёт дни. Product quantization позволяет сделать это за миллисекунды, ужимая исходные векторы в десятки раз без катастрофической потери качества. Это стандартный инструмент библиотек поиска вроде FAISS.
Как работает интуитивно: вектор режется на кусочки. Для каждого кусочка обучается словарь из 256 типичных шаблонов. Кусочек заменяется номером ближайшего шаблона (0–255). Итоговый код — несколько байт: например, 8 частей = 8 байт. Расстояние между кодами не пересчитывается: есть готовая таблица расстояний, ответ суммируется за один проход.
Пример: 10 миллионов фото, вектор 128 чисел. Без сжатия — 5 гигабайт и долгий поиск. С product quantization — 16 байт на вектор, база 160 мегабайт в памяти. Запрос сжимается так же, расстояния считаются параллельно, результат за сотые доли секунды.
Важно понимать: это приближённый метод. Он не гарантирует абсолютно точного совпадения с полным перебором, зато даёт колоссальный выигрыш в скорости и памяти — именно то, что нужно для реальных систем. Поэтому product quantization — рабочий компромисс между точностью и практичностью, без которого немыслим современный поиск по большим данным.
Поделиться