Как устроена рекомендательная система Instagram

140

В Instagram есть возможность узнать о новых фотографиях, видео и историях на странице Explore. Рекомендации на этой странице составляются индивидуально для каждого пользователя в реальном времени. Система рекомендаций состоит из трех этапов. Итоговая модель собирает 65 миллиардов признаков и делает 90 миллионов предсказаний каждую секунду.

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

Система для выдачи рекомендаций базируется на трех дополнительных инструментах:

IGQL: кастомный язык для экспериментов с рекомендательными алгоритмами;

IGQL оптимизирован на C++ и позволяет обращаться к зоопарку ML-моделей для рекомендаци. Разработчики могут писать алгоритмы рекомендации на схожем с Python языке. При этом сами модели будут исполняться на C++. Такой подход позволяет тестировать алгоритмы на данных разных юзкейсов с минимальными затратами.

Ig2vec: эмбеддинги акаунта пользователя, чтобы определять тематически близкие акаунты;

Ig2vec основан на word2vec модели. Чтобы кластеризовать полученные эмбеддинги пользователей, исследователи используют KNN. В продукте используется библиотека от Facebook для поиска ближайших соседей FAISS.

Генерация кандидатов для рекомендации: система отбирает 500 кандидатов на ранжирование из списка взаимодействий пользователя с чужим контентом

Отобранные 500 кандидатов отправляются в модель для ранжирования рекомендаций.