За кулисами Twitter — как работает алгоритм рекомендаций
Репозиторий давно не обновлялся
Последнее обновление было 10 месяцев назад.
Когда вы открываете Twitter, первое, что видите — это персонализированная лента твитов. Но за этим простым интерфейсом скрывается сложная система из десятков микросервисов и моделей машинного обучения. В 2023 году Twitter открыл исходный код своего рекомендательного алгоритма, и теперь мы можем заглянуть под капот этой системы.
Почему это важно
Представьте, что вам нужно отобрать 100 самых релевантных твитов из миллионов возможных для каждого пользователя — именно такую задачу решает алгоритм Twitter. Это не просто фильтр по подпискам, а целый комплекс:
- Анализ ваших явных действий (лайки, ретвиты)
- Учет скрытых сигналов (сколько времени смотрели твит, прокрутили мимо)
- Учет социального графа (кто ваши друзья и какие у них интересы)
Ключевые компоненты системы
1. Источники кандидатов
Около 50% твитов в ленте берутся из поискового индекса (Earlybird). Остальные поступают из:
- User-Tweet-Entity Graph (UTEG) — граф взаимодействий пользователей с твитами
- Follow Recommendation Service (FRS) — рекомендации кого подписаться
- CR-Mixer — координатор для твитов вне вашего круга общения
2. Ранжирование
Система использует каскад моделей:
- Light Ranker — быстрая предварительная сортировка
- Heavy Ranker — нейросеть, которая учитывает сотни факторов
3. Фильтрация
Отдельные модули отвечают за:
- Безопасный контент (модели NSFW)
- Видимость (теневой бан и другие ограничения)
- Баланс между новыми и популярными твитами
Техническая кухня
Архитектура построена на микросервисах, основные из которых:
- SimClusters — кластеризация пользователей по интересам
- TwHIN — векторные представления твитов и пользователей
- RealGraph — предсказание вероятности взаимодействия между пользователями
Сервисы написаны преимущественно на Scala, а модели — на Python. Для обслуживания ML-моделей используется высокопроизводительный фреймворк на Rust (Navi).
// Пример структуры проекта на Scala
package com.twitter.simclusters_v2
class SimClustersEmbedding {
// Реализация кластеризации
}
Как это можно использовать
Хотя код специфичен для Twitter, здесь много полезных идей для:
- Разработчиков рекомендательных систем
- Data Scientist'ов, работающих с графами
- Инженеров, проектирующих высоконагруженные сервисы
Особенно интересны:
- Подходы к обработке графов в реальном времени
- Каскадное ранжирование
- Система сбора пользовательских сигналов
Стоит ли изучать этот репозиторий?
Если вы:
- Разрабатываете социальные сети — обязательно
- Работаете с рекомендательными системами — полезно для вдохновения
- Изучаете Scala или распределенные системы — есть что посмотреть
Проект активно развивается, и Twitter принимает пул-реквесты от сообщества. Это редкий шанс поучаствовать в улучшении алгоритма, которым пользуются миллионы.
Интересный факт: алгоритм обрабатывает около 500 миллионов твитов в день, выбирая лишь горстку для вашей ленты.
