Разбор open-source алгоритма рекомендаций X от xAI: архитектура Phoenix и лента For You
Разбор open-source алгоритма рекомендаций X от xAI: от архитектуры Phoenix к ленте For You
Обзор
В январе 2026 года xAI опубликовал на GitHub репозиторий xai-org/x-algorithm — ядро рекомендательного алгоритма, управляющего лентой «For You» в X (бывший Twitter). Репозиторий набрал более 20,800 звезд и 3,600 форков. В отличие от частичного open-source Twitter 2023 года, это полная архитектурная переработка — от системы на ручных правилах к сквозной ML-архитектуре на базе Grok Transformer.
1. Архитектура: пятислойный рекомендательный пайплайн
От правил к сквозному обучению
Старая система 2023 года описывалась критиками как «запутанный спагетти-код с ручными фильтрами». Новая система, с кодовым названием «Phoenix», устранила все hand-engineered фичи и большинство эвристических правил. Phoenix напрямую использует ту же архитектуру Transformer, что и Grok, адаптированную для рекомендаций.
Семистадийная обработка
| Стадия | Компонент | Объем |
|---|---|---|
| 1. Query Hydration | home-mixer | N/A |
| 2. Candidate Sourcing | thunder + phoenix | ~1,500 |
| 3. Candidate Hydration | home-mixer | ~1,500 |
| 4. Pre-Scoring Filters | home-mixer | ~1,200 |
| 5. ML Scoring | phoenix (Grok Transformer) | ~1,200 |
| 6. Selection | home-mixer | ~200 |
| 7. Post-Selection Filters | home-mixer | ~180 |
Техстек: Rust + Python
Rust используется для инфраструктуры: пайплайн Home Mixer, in-memory хранилище Thunder, трейт-фреймворк Candidate Pipeline, gRPC-интерфейсы. Python + JAX используется для ML-слоя: модели поиска и ранжирования Phoenix на базе JAX и Haiku.
2. Phoenix: ML-ядро на Grok Transformer
Two-Tower Retrieval
Классическая архитектура двух башен: User Tower кодирует пользователя и историю в embedding, Candidate Tower кодирует все посты. Поиск по косинусной близости для извлечения Top-K кандидатов.
Candidate Isolation: инновация в ранжировании
Ключевая инновация Phoenix — маска внимания Candidate Isolation. В стандартном Transformer позиции могут обращать внимание друг на друга. Для ранжирования это создает проблему: оценка кандидата A зависит от того, есть ли в батче кандидат B.
Phoenix решает это маской make_recsys_attn_mask:
- User и History: стандартное каузальное внимание
- Candidates: могут смотреть на User и History, но только на себя (только диагональ 1)
Преимущества: консистентность оценок, кешируемость, масштабируемость, интерпретируемость.
Мульти-действие: 15 типов взаимодействия
Phoenix предсказывает вероятности для 15 типов взаимодействия:
- Позитивные (лайк, реплай, репост, клик, просмотр, шаринг, подписка) — вес ~1x
- Негативные (не интересно, блокировка, мьют, жалоба) — вес ~-74x
Одна негативная реакция отменяет десятки позитивных.
3. Компоненты инфраструктуры
Home Mixer: центральная нервная система
Home Mixer на Rust координирует все стадии пайплайна. Модульная трейт-архитектура (Source, Hydrator, Filter, Scorer, Selector, SideEffect) обеспечивает исключительную расширяемость.
Thunder: поиск за миллисекунды
Thunder — in-memory сервис для хранения постов от аккаунтов, на которые подписан пользователь. Написан на Rust, обеспечивает субмиллисекундный поиск.
4. Ключевые дизайн-решения
Отказ от ручных фич
Phoenix полностью устраняет hand-engineered фичи. Transformer изучает релевантность напрямую из последовательностей взаимодействия пользователя. Это снижает сложность пайплайнов данных, но требует большего объема и качества обучающих данных.
Мульти-действие vs одиночная оценка
Асимметричная стратегия взвешивания: негативные сигналы с весом ~-74x отражают принцип — показать плохую рекомендацию дороже, чем пропустить хорошую.
5. Сравнение с индустрией
| Платформа | Статус алгоритма |
|---|---|
| X (Phoenix) | Полностью open-source (Apache 2.0) |
| Meta | Никогда не открывала |
| TikTok | Считается коммерческой тайной |
| YouTube | Частично через публикации |
Phoenix xAI — первая продакшен-рекомендательная система, полностью открытая мейнстримной соцплатформой.
6. Инсайты для контент-креаторов
- Качество важнее количества: реплаи, репосты и шаринг весят больше пассивных лайков
- Негативные сигналы разрушительны: Not Interested / Block / Mute с весом -74x
- Время просмотра — скрытый сигнал: чем дольше пользователь на посте, тем выше шанс рекомендации
- Внешние ссылки подавляются: на 30-50% ниже охват