Как Ozon улучшил рекомендации: переход от ANN к точному KNN на GPU

Переход от приближённого поиска соседей (ANN) к точному методу K ближайших соседей (KNN) с использованием GPU позволил Ozon повысить качество рекомендаций без существенного увеличения времени обработки. Инженеры компании делятся техническими деталями и результатами A/B-тестов, объясняя, почему в мас

Как Ozon улучшил рекомендации: переход от ANN к точному KNN на GPU

Переход от приближённого поиска соседей (ANN) к точному методу K ближайших соседей (KNN) с использованием GPU позволил Ozon повысить качество рекомендаций без существенного увеличения времени обработки. Инженеры компании делятся техническими деталями и результатами A/B-тестов, объясняя, почему в масштабах российского e-commerce точный поиск становится выгоднее приближённого.

От ANN к KNN на GPU: как Ozon перестроил рекомендации

Рекомендательные системы в крупных интернет-магазинах, таких как Ozon, работают с десятками миллионов пользователей и сотнями миллионов товаров. Ключевая задача — для каждого пользователя найти наиболее релевантные товары из огромного каталога. Традиционно для этого использовались алгоритмы приближённого поиска ближайших соседей (ANN), которые жертвуют точностью ради скорости. Однако команда Ozon решила, что в их сценарии выгоднее перейти на точный KNN, выполняемый на GPU.

Основная причина — в e-commerce каждый процент повышения recall (полноты выдачи) напрямую влияет на конверсию и выручку. Приближённые методы ANN, такие как HNSW или IVF, неизбежно теряют часть релевантных кандидатов. Точный KNN гарантирует, что для каждого пользователя будут найдены все ближайшие соседи в векторном пространстве, что повышает качество рекомендаций.

Почему Ozon отказался от ANN в пользу точного KNN?

До внедрения GPU-решения команда Ozon использовала ANN-индексы на CPU. С ростом числа пользователей и товаров нагрузка на систему увеличивалась, а качество рекомендаций переставало удовлетворять бизнес-требованиям. Инженеры начали искать альтернативы. В индустрии уже были примеры перехода на GPU для скоринга, но Ozon пошёл дальше — заменил весь этап поиска кандидатов.

Выбор пал на точный KNN, реализованный на GPU с помощью библиотек, таких как FAISS от Facebook. GPU позволяет выполнять вычисления параллельно, что критично для перебора миллионов векторов. Однако просто взять готовую библиотеку недостаточно — потребовалась серьёзная оптимизация пайплайна, чтобы уложиться в требования по latency и throughput.

Как работает точный KNN на GPU в Ozon?

Архитектура решения Ozon включает несколько этапов. Сначала все товары и пользователи преобразуются в векторные представления (эмбеддинги) с помощью нейросетевой модели. Затем для каждого пользователя вычисляется его вектор запроса. На этапе поиска кандидатов GPU выполняет полный перебор всех товарных векторов и вычисляет расстояния (например, косинусную близость) между вектором пользователя и каждым товаром. После этого выбираются K товаров с наименьшим расстоянием — это и есть точные K ближайших соседей.

Ключевая сложность — размерность векторного пространства и количество товаров. Ozon работает с эмбеддингами размерностью 128–256 и каталогом в сотни миллионов товаров. Полный перебор на CPU занял бы часы, но на GPU с тысячами ядер удаётся выполнить вычисления за доли секунды. Для этого инженеры оптимизировали загрузку данных в память GPU, использовали пакетную обработку и минимизировали накладные расходы на передачу данных между CPU и GPU.

Технические подробности и результаты A/B-тестов

Команда Ozon провела масштабные A/B-тесты, сравнивая старое ANN-решение на CPU с новым KNN на GPU. Метрики оценивались на реальном трафике: измеряли recall@k (полноту выдачи среди первых k товаров), конверсию в покупку и средний чек. Результаты показали значительное улучшение recall — в некоторых сценариях до 15–20% по сравнению с ANN. При этом latency (время ответа) увеличилось незначительно — на 10–20 миллисекунд, что осталось в пределах допустимого для онлайн-рекомендаций.

Инженеры отмечают, что выигрыш в качестве особенно заметен для «холодных» пользователей с короткой историей, где ANN часто теряет релевантные кандидаты. Кроме того, точный KNN стабильнее: он не зависит от качества построения индекса и не требует периодической перестройки, как ANN.

Кого затронет и как

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

В российском контексте это особенно важно: Ozon — один из крупнейших e-commerce игроков, и его опыт может быть полезен другим компаниям, работающим с большими данными. Кроме того, решение показывает, что GPU можно эффективно использовать не только для обучения нейросетей, но и для инференса в продакшене.

Что будет дальше

Команда Ozon продолжает развивать систему: планируется экспериментировать с разными архитектурами GPU, оптимизировать использование памяти и, возможно, внедрять гибридные подходы, где ANN используется для предварительной фильтрации, а KNN — для финального ранжирования. Также рассматривается возможность использования более дешёвых GPU или тензорных процессоров (TPU) для снижения стоимости инфраструктуры.

Итог

Переход от ANN к точному KNN на GPU позволил Ozon повысить качество рекомендаций без существенного роста времени ответа. Этот кейс показывает, что в высоконагруженных системах e-commerce точный поиск может быть экономически оправдан, особенно когда каждый процент recall конвертируется в деньги. Технические детали и результаты A/B-тестов, опубликованные командой Ozon, станут полезным ориентиром для других разработчиков рекомендательных систем.