Ozon Query Prediction: отказ от ANN, архитектура ML-поиска для e-commerce | AiManual
AiManual Logo Ai / Manual.
30 Янв 2026 Гайд

Как Ozon отказался от векторного поиска (ANN) в пользу Query Prediction: архитектура ML-поиска для e-commerce

Глубокий разбор кейса Ozon: почему векторный поиск не справился с сотнями миллионов товаров и как Query Prediction улучшил релевантность. Архитектура, нюансы, о

Почему векторный поиск не справился с каталогом Ozon

В 2024-2025 годах казалось, что приближенный поиск по соседям (ANN) на эмбеддингах - это серебряная пуля для любого поискового движка. Берёшь модель типа text-embedding-3-large (самая новая на начало 2026 года), векторизуешь товары и запросы, используешь HNSW или SCANN для быстрого поиска - и готово. Но на практике, когда у тебя 500 миллионов SKU и 50 тысяч запросов в секунду, эта пуля рикошетит и попадает тебе в ногу.

Ozon столкнулся с тремя фундаментальными проблемами ANN в e-commerce:

  • Семантический разрыв: Эмбеддинги отлично улавливают смысл, но плохо справляются с точными атрибутами. Запрос "красные кроссовки Nike 45 размера со скидкой" превращался в вектор, который находил вообще все красные вещи Nike. Размер и скидка терялись в шуме.
  • Латентность на масштабе: Чтобы обеспечить recall@10 выше 90% на 500M векторах, индекс занимал терабайты оперативки. Каждый запрос требовал сотни операций расстояний в высокоразмерном пространстве. Пиковая нагрузка в Black Friday вызывала деградацию до 500+ мс на запрос.
  • Холодный старт и динамика: Новый товар появляется каждые 5 секунд. Его эмбеддинг нужно рассчитать и добавить в индекс. При этом ANN-индексы плохо приспособлены для частых апдейтов - перестроение части индекса блокировало поиск.

Кстати, проблема семантического разрыва - не уникальна для e-commerce. В статье "Математический потолок RAG" мы подробно разбирали, почему embedding-модели теряют точные факты. Тот же принцип, только вместо документов - атрибуты товаров.

Команда поиска Ozon провела A/B тест: 50% трафика шло на гибридный поиск (BM25 + векторы), 50% - на чистый ANN. Результаты шокировали: чисто векторный поиск давал на 15% ниже конверсию в категориях "электроника" и "одежда". Пользователи искали конкретные модели телефонов или размеры обуви, а получали "похожие по смыслу" товары. Это стоило миллионов долларов потерянной выручки.

Query Prediction: как предсказать, что ищет пользователь

Вместо того чтобы искать ближайших соседей в векторном пространстве, Ozon перевернул задачу. Вместо "найти похожие товары на запрос" они стали решать "предсказать, какие атрибуты товара ищет пользователь, и найти точное совпадение".

Query Prediction Model (QPM) - это мультизадачная нейросеть, которая разбирает сырой запрос пользователя и предсказывает:

  1. Категорию товара (например, "смартфоны", "женские платья")
  2. Извлечённые атрибуты (бренд, цвет, размер, диагональ экрана, материал)
  3. Исправленные опечатки и нормализованную форму ("айфон 15 про" → "iPhone 15 Pro")
  4. Коммерческие интенты ("со скидкой", "бюджетный", "премиум")

Архитектурно QPM - это трансформер (на основе DeBERTa-v3, дообученной на 2 миллиардах пар запрос-клик с Ozon), но с несколькими выходными головками. Каждая головка отвечает за свою задачу: классификация категорий, NER для атрибутов, генерация исправленного запроса.

💡
Ключевой инсайт: Query Prediction не заменяет поиск, а подготавливает данные для него. Это как если бы вы наняли идеального продавца-консультанта, который выслушивает сбивчивый запрос покупателя и точно знает, куда пойти на складе.

После предсказания атрибутов система строит структурированный поисковый запрос к обычному инвертированному индексу (на Elasticsearch или собственном движке). Например, запрос "красные кроссовки адидас 42" превращается в:

  • Категория: "мужская обувь → кроссовки"
  • Фильтры: brand="Adidas", color="red", size="42"
  • Текстовый поиск: "кроссовки" с boost по заголовку

И вот здесь обычный BM25 внезапно становится точнее векторного поиска. Потому что он ищет точные совпадения по атрибутам, которые нейросеть корректно извлекла.

Архитектура ML-поиска Ozon: от запроса до выдачи

Вся система работает как конвейер из четырёх ступеней. Каждая ступень независима, что позволяет масштабировать и дебажить компоненты по отдельности.

1 Ступень предобработки и Query Prediction

Входящий запрос попадает в QPM, которая работает на GPU-кластере с Triton Inference Server. Модель оптимизирована с помощью TensorRT для latencies < 10 мс. Параллельно запускается корректор опечаток (на основе BPE-токенизатора и словаря популярных запросов) и извлечение сущностей для запросов, которые не покрыты моделью (например, новинки).

Важно: QPM обучается не только на исторических данных, но и на онлайн-фидбеке. Если пользователь ввёл "кроссовки", а потом уточнил фильтр по бренду "Nike", это сигнал, что модель должна была извлечь бренд изначально. Такая петля обратной связи ускоряет обучение в 3 раза.

2 Гибридный поиск по инвертированному индексу

Здесь происходит магия. Система формирует несколько поисковых запросов параллельно:

  • Точный запрос с фильтрами по предсказанным атрибутам (основной канал)
  • Широкий запрос без фильтров, но с бустами по категории (фолбэк, если точный не дал результатов)
  • Семантический запрос (опционально): если QPM определила, что запрос абстрактный ("подарок на день рождения"), запускается векторный поиск по эмбеддингам категорий. Но это менее 5% трафика.

Поисковый движок - кастомное решение на C++, похожее на двухконтурную архитектуру из гибридного поиска по книгам. Первый контур быстро отбирает кандидатов (до 1000 товаров), второй - переранжирует их с учётом сотен признаков.

3 ML-ранжирование (LTR)

Отобранные кандидаты проходят через каскад моделей ранжирования. LightGBM для 500+ фичей: CTR товара, релевантность запросу, цена, наличие отзывов, рейтинг продавца, актуальность (новинки получают буст).

Здесь Ozon использует трюк: они добавили фичу "confidence QPM" - уверенность модели Query Prediction в своих предсказаниях. Если уверенность низкая (например, запрос "что-то для кухни"), система сильнее полагается на популярность товаров и исторический CTR. Если высокая ("сковородка тефаль титан про 28 см") - на точные атрибуты.

4 Пост-обработка и диверсификация

Даже идеально релевантная выдача может проиграть, если покажет 20 одинаковых товаров. Финальный шаг - диверсификация: убираем дубликаты, обеспечиваем представленность разных брендов и продавцов, добавляем рекомендации "похожие товары" на основе векторных эмбеддингов (да, они остались, но только на этом этапе!).

Вся архитектура зашита в графы Apache Airflow для обучения моделей и Kubernetes для обслуживания. Мониторинг через Prometheus и кастомные дашборды, отслеживающие NDCG, CTR и конверсию в реальном времени.

Что получил Ozon: цифры и нюансы

После перехода на Query Prediction (полное внедрение заняло 8 месяцев) метрики сдвинулись так:

Метрика До (гибрид ANN+BM25) После (Query Prediction) Изменение
Средний CTR выдачи 14.2% 16.8% +18.3%
Конверсия в покупку 3.1% 3.7% +19.4%
Средняя латентность (p95) 145 мс 89 мс -38.6%
Recall@10 (человеческая оценка) 72% 88% +22.2%

Но не всё было гладко. Команда наступила на несколько граблей, которые стоит знать, если вы повторяете этот путь.

Ошибка 1: Слепая вера в предсказания модели

Первая версия QPM иногда выдавала дикие предсказания: "платье" → категория "автозапчасти". Потому что в обучающих данных были шумные клики (пользователь ошибся, или кликнул на рекламу). Решение: добавить проверку здравого смысла - правила поверх предсказаний (например, если запрос содержит "iPhone", а предсказанная категория не "смартфоны", переопределить). И человеческую разметку спорных случаев.

Ошибка 2: Игнорирование длинных хвостов

Модель хорошо работала на популярных запросах (миллионы примеров в обучении), но падала на редких. Запрос "фильтр для аквариума tetra ex 600" не извлекал атрибуты, потому что "tetra" модель знала как бренд корма для рыб, а не как модель фильтра. Пришлось дообучать на синтетических данных - генерировать вариации редких запросов через GPT-4o (на 2026 год это самая новая доступная модель от OpenAI для таких задач).

💡
Синтетические данные - это не панацея. Ozon обнаружил, что GPT иногда генерирует атрибуты, которых нет в реальном каталоге. Пришлось добавить этап валидации через поиск по существующим товарам. Если атрибут не находится ни у одного товара - отбрасываем пример.

Ошибка 3: Забыли про мультимодальность

Пользователи всё чаще ищут по фото. Изначальная архитектура не учитывала изображения. Пришлось экстренно добавлять кроссмодальный энкодер (похожий на Amazon Nova Multimodal Embeddings), который преобразует изображение в текст, а потом уже QPM работает с этим текстом. Это добавило сложности, но увеличило конверсию в категориях "одежда" и "мебель" на 12%.

Query Prediction против классического RAG: что выбрать?

Если вы строите поиск по документам или базу знаний, векторный поиск ещё может работать. Но в e-commerce, где точность атрибутов критична, Query Prediction выигрывает. Вот прямое сравнение:

  • Точность атрибутов: QPM извлекает конкретные значения (цвет=красный), векторы ищут "похожие на красный" (оранжевый, бордовый).
  • Скорость: Инвертированный индекс с фильтрами быстрее ANN на порядок при одинаковом recall.
  • Обновляемость: Добавить новый товар в обратный индекс - это добавить запись. В ANN - пересчитать эмбеддинг и обновить граф HNSW (дорого).
  • Интерпретируемость: Вы всегда можете посмотреть, какие атрибуты извлекла QPM, и понять, почему товар попал в выдачу. С векторами - чёрный ящик.

Но есть и минусы. QPM требует огромного количества размеченных данных (у Ozon были миллиарды кликов). Нужна мощная ML-инфраструктура для обучения и обслуживания. И модель должна постоянно дообучаться на новых запросах и товарах.

Предупреждение: Не пытайтесь скопировать архитектуру Ozon, если у вас меньше 10 миллионов товаров и 1000 запросов в минуту. Овчинка не стоит выделки. Начните с гибридного поиска (BM25 + векторы) через готовые решения вроде Vespa или Elasticsearch с плагином векторов. А когда упрётесь в потолок релевантности - думайте о Query Prediction.

Тренд на 2026 год: крупные маркетплейсы уходят от чистого векторного поиска к предсказанию структурированных запросов. Ozon, Amazon со своим Catalog AI, Wildberries - все идут по этому пути. А вот в области корпоративных знаний и RAG векторы пока держатся, но уже появляются гибридные подходы, как в DeepResearch от Яндекса.

Мой прогноз: к 2027 году Query Prediction станет стандартом для e-commerce поиска, а векторы останутся в нишах: рекомендации, поиск по изображениям, хэндлинг абстрактных запросов. Но если вы сейчас начинаете новый поисковый проект, не бегите за модой. Сначала поймите, какие данные у вас и что действительно нужно пользователям. Потому что самая сложная архитектура бесполезна, если она решает не ту проблему.