Яндекс Картинки: мультимодальная оценка релевантности и дистилляция VLM
Описание проекта
Начали с генеративной VLM: визуальный энкодер, LLaVA-адаптер, переводящий картинку в токены, и трансформер-декодер с каузальной маской, выдающий один скор релевантности. Затем маску убрали и перешли к двунаправленному вниманию — получился vBERT примерно на миллиард параметров, всё ещё слишком медленный для рантайма. В прод пошли три дистиллированные модели, разнесённые по стадиям ранжирования: Embedder — упрощённый би-энкодер на чистом скалярном произведении, под который строится HNSW-индекс для генерации кандидатов; би-энкодер с MLP-головой поверх N скалярных произведений для грубого ранжирования; и Light Cross-Encoder с early binding — кэшированные раздельные эмбеддинги плюс лёгкий совместный трансформер для финального переранжирования. Эмбеддинги документов считаются офлайн, эмбеддинг запроса — один раз на запрос.
Вендор и технология: Яндекс, собственная линейка VLM → vBERT → дистиллированные Embedder, би-энкодер и Light Cross-Encoder.
Задача
Релевантность исторически оценивалась двумя раздельными сигналами — картинка-текст и текст-текст, и они противоречили друг другу. Возникала «серая зона», где было непонятно, как агрегировать сигналы в итоговый скор.
Цели внедрения
-
Анализировать обе модальности одновременно
-
убрать серую зону в агрегации сигналов
-
уложиться в рантайм-бюджет поиска
-
распределить модели по стадиям ранжирования
-
повысить долю релевантных картинок в топе
Результаты
-
Результаты
-
Би-энкодер и кросс-энкодер вместе — +4% релевантных картинок в топе
-
вместе с Embedder — +5%
-
обработка десятков тысяч запросов в секунду
-
vBERT около 1 млрд параметров Нагрузка и масштаб
-
Десятки тысяч запросов в секунду Сроки
-
Публикация 10.08.2026