За кулисами Twitter — как работает алгоритм рекомендаций

08 Sep, 2025

Репозиторий давно не обновлялся

Последнее обновление было 10 месяцев назад.

73,525
🔱 13,264
👥 405

Когда вы открываете Twitter, первое, что видите — это персонализированная лента твитов. Но за этим простым интерфейсом скрывается сложная система из десятков микросервисов и моделей машинного обучения. В 2023 году Twitter открыл исходный код своего рекомендательного алгоритма, и теперь мы можем заглянуть под капот этой системы.

Почему это важно

Представьте, что вам нужно отобрать 100 самых релевантных твитов из миллионов возможных для каждого пользователя — именно такую задачу решает алгоритм Twitter. Это не просто фильтр по подпискам, а целый комплекс:

  • Анализ ваших явных действий (лайки, ретвиты)
  • Учет скрытых сигналов (сколько времени смотрели твит, прокрутили мимо)
  • Учет социального графа (кто ваши друзья и какие у них интересы)

Ключевые компоненты системы

1. Источники кандидатов

Около 50% твитов в ленте берутся из поискового индекса (Earlybird). Остальные поступают из:

  • User-Tweet-Entity Graph (UTEG) — граф взаимодействий пользователей с твитами
  • Follow Recommendation Service (FRS) — рекомендации кого подписаться
  • CR-Mixer — координатор для твитов вне вашего круга общения

2. Ранжирование

Система использует каскад моделей:

  1. Light Ranker — быстрая предварительная сортировка
  2. Heavy Ranker — нейросеть, которая учитывает сотни факторов

3. Фильтрация

Отдельные модули отвечают за:

Реклама
  • Безопасный контент (модели NSFW)
  • Видимость (теневой бан и другие ограничения)
  • Баланс между новыми и популярными твитами

Техническая кухня

Архитектура построена на микросервисах, основные из которых:

  • SimClusters — кластеризация пользователей по интересам
  • TwHIN — векторные представления твитов и пользователей
  • RealGraph — предсказание вероятности взаимодействия между пользователями

Сервисы написаны преимущественно на Scala, а модели — на Python. Для обслуживания ML-моделей используется высокопроизводительный фреймворк на Rust (Navi).

// Пример структуры проекта на Scala
package com.twitter.simclusters_v2

class SimClustersEmbedding {
  // Реализация кластеризации
}

Как это можно использовать

Хотя код специфичен для Twitter, здесь много полезных идей для:

  1. Разработчиков рекомендательных систем
  2. Data Scientist'ов, работающих с графами
  3. Инженеров, проектирующих высоконагруженные сервисы

Особенно интересны:

  • Подходы к обработке графов в реальном времени
  • Каскадное ранжирование
  • Система сбора пользовательских сигналов

Стоит ли изучать этот репозиторий?

Если вы:

  • Разрабатываете социальные сети — обязательно
  • Работаете с рекомендательными системами — полезно для вдохновения
  • Изучаете Scala или распределенные системы — есть что посмотреть

Проект активно развивается, и Twitter принимает пул-реквесты от сообщества. Это редкий шанс поучаствовать в улучшении алгоритма, которым пользуются миллионы.

Диаграмма архитектуры

Интересный факт: алгоритм обрабатывает около 500 миллионов твитов в день, выбирая лишь горстку для вашей ленты.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.