Technical Specification

X Algorithm 仕様書: システム概要

バージョン: 1.0|最終更新日: 2026年1月|ステータス: 公開

#プロジェクト概要

本リポジトリは、Xの「For You」フィードを支えるコアレコメンデーションシステムの実装を含みます。 このシステムは、ユーザーがフォローしているアカウントからのコンテンツ(イン・ネットワーク)と、 機械学習ベースの検索で発見されたコンテンツ(アウト・オブ・ネットワーク)を組み合わせ、 Grokベースのトランスフォーマーモデルを使用してランキングします。

主な特徴

手動特徴量エンジニアリングの排除

システムはGrokベースのトランスフォーマーに完全に依存し、ユーザーのエンゲージメント履歴から関連性を学習します

候補分離(Candidate Isolation)

ランキング時に候補同士が互いに参照できないよう特殊なアテンションマスクを使用

マルチアクション予測

単一の「関連性」スコアではなく、複数のエンゲージメントタイプの確率を予測

構成可能なパイプラインアーキテクチャ

柔軟で拡張可能なレコメンデーションパイプラインフレームワーク

トランスフォーマー実装について: 本システムのトランスフォーマー実装は、 xAIによるGrok-1オープンソースリリースからポートされ、レコメンデーションシステムのユースケースに適応されています。

#For Youフィードとは

パーソナライズされたタイムラインの仕組み

For Youフィードは、Xにおけるパーソナライズされたタイムラインであり、各ユーザーに最も関連性の高いコンテンツを表示することを目的としています。 従来の時系列ベースのタイムラインとは異なり、機械学習モデルがユーザーの興味・関心に基づいてコンテンツを選択・順序付けします。

コンテンツソース

ソース説明コンポーネント
イン・ネットワークユーザーがフォローしているアカウントからの投稿Thunder
アウト・オブ・ネットワークグローバルコーパスからML検索で発見された投稿Phoenix Retrieval
処理フロー概要
1
ユーザーリクエストフィードリクエスト受信
2
候補取得 (Sourcing)Thunder(イン・ネットワーク)+ Phoenix(アウト・オブ・ネットワーク)
3
データ補完 (Hydration)投稿メタデータ、著者情報等を付加
4
フィルタリング (Filtering)重複排除、ブロック/ミュート適用
5
スコアリング (Scoring)Phoenix ML予測 → 重み付けスコア
6
選択 (Selection)上位K件を選択

#主要コンポーネント一覧

Home Mixer

home-mixer/

For Youフィードを組み立てるオーケストレーションレイヤー。Candidate Pipelineフレームワークを活用し、各ステージを実行します。

Thunder

thunder/

イン・ネットワークコンテンツを提供するリアルタイム投稿ストア。Kafkaから投稿イベントを消費し、サブミリ秒のルックアップを実現。

Phoenix

phoenix/

機械学習ベースの検索とランキングを担当。Two-Tower ModelによるRetrievalとTransformerによるRankingの2機能を持ちます。

Candidate Pipeline

candidate-pipeline/

再利用可能なレコメンデーションパイプラインフレームワーク。Source, Hydrator, Filter, Scorer, Selectorなどのトレイトを定義。

Home Mixerのステージ

ステージ説明主要コンポーネント
Query Hydratorsユーザーコンテキストの取得UserActionSeqQueryHydrator, UserFeaturesQueryHydrator
Sources候補の取得ThunderSource, PhoenixSource
Hydrators候補データの補完CoreDataCandidateHydrator, GizmoduckHydrator等
Filters不適格な候補の除去AgeFilter, MutedKeywordFilter, AuthorSocialgraphFilter等
Scorersスコア計算PhoenixScorer, WeightedScorer, AuthorDiversityScorer, OONScorer
Selector上位候補の選択TopKScoreSelector
Post-Selection Filters最終検証VFFilter, DedupConversationFilter
Side Effects非同期処理CacheRequestInfoSideEffect

Phoenix: 予測されるアクション

ポジティブアクション

favorite, reply, repost, quote, click, profile_click, video_view, photo_expand, share, dwell, follow_author

ネガティブアクション

not_interested, block_author, mute_author, report

#技術スタック

プログラミング言語

言語用途バージョン
RustHome Mixer, Thunder, Candidate Pipeline安定版
PythonPhoenix ML モデル3.10+

機械学習フレームワーク

フレームワーク用途
JAX高性能数値計算、自動微分
HaikuJAX上のニューラルネットワークライブラリ

通信・インフラ

技術用途
gRPCサービス間通信(Home Mixer, Thunder, Phoenix間)
Protocol Buffersデータシリアライゼーション
Kafkaリアルタイムイベントストリーミング(投稿イベント)
TonicRust gRPCフレームワーク
AxumRust HTTPフレームワーク
Tokio非同期ランタイム
gzip/ZstdgRPCメッセージ圧縮
技術スタック構成図
アプリケーション層
Home Mixer (Rust)Thunder (Rust)Phoenix (Python/JAX/Haiku)
フレームワーク層
Candidate Pipeline (Rust)Tonic (gRPC)Axum (HTTP)
ランタイム層
Tokio (Rust非同期)JAX (Python数値計算)
インフラストラクチャ層
Kafka (イベントストリーム)Protocol Buffersgzip/Zstd (圧縮)

#システム全体の目的と設計思想

設計目標

ユーザー体験の最適化

  • -パーソナライゼーション: 各ユーザーの興味・関心に合わせたコンテンツ提供
  • -発見性: フォロー外の関連コンテンツを適切に提示
  • -多様性: 単一著者のコンテンツ偏重を防止

技術的優位性

  • -スケーラビリティ: 数億ユーザー規模に対応
  • -レイテンシ: サブミリ秒〜数十ミリ秒でのレスポンス
  • -柔軟性: 新しいソース、フィルタ、スコアラーの容易な追加

主要な設計決定

1. 手動特徴量エンジニアリングの排除

従来のアプローチ

生データ手動特徴量エンジニアリングMLモデル

ドメイン知識・仮説が必要

本システムのアプローチ

エンゲージメント履歴シーケンスGrok Transformer

特徴量学習を自動化

2. ランキングにおける候補分離

問題: 候補間の相互参照がある場合、スコアがバッチ構成に依存し、キャッシュ不可で不安定な結果となる

解決策: 候補分離マスクにより、各候補はユーザーコンテキストのみ参照可能

結果:スコアが一貫性を持ち、キャッシュ可能
3. マルチアクション予測

単一の「関連性」スコアではなく、複数のエンゲージメントタイプの確率を予測:

P(like)P(reply)P(repost)P(quote)P(click)P(dwell)P(follow)
Weighted Score = Σ (weight × P(action))
ポジティブ: +weight / ネガティブ: -weight

#データフロー概要

コンポーネント間通信
Kafka
投稿イベント (create/delete)
Thunder
Home Mixer
gRPC
Thunder
Phoenix

プロトコル: gRPC (Protocol Buffers) |圧縮: gzip, Zstd |認証: 内部サービス間認証

#用語集

用語説明
イン・ネットワークユーザーがフォローしているアカウントからのコンテンツ
アウト・オブ・ネットワークフォロー外のアカウントからのコンテンツ
候補分離ランキング時に候補同士が互いに参照できないようにする設計
Two-Tower Modelユーザーとアイテムを別々のタワーでエンコードする検索モデル
ハイドレーション候補データに追加情報を付与するプロセス
ANNApproximate Nearest Neighbor(近似最近傍探索)

Copyright 2026 X.AI Corp. - Licensed under Apache License 2.0