xai-org/x-algorithm
Algorithm powering the For You feed on X
X For You フィードアルゴリズム (x‑ai‑org/x‑algorithm)
何であるか – このリポジトリには、X(元Twitter)のFor‑Youタイムラインを支えるプロダクショングレードのコードが含まれています。ユーザーがフォローしているアカウントからの投稿(in‑network経路)と、他の場所から発見された投稿(out‑of‑network経路)の2つのコンテンツストリームを統合し、Transformerベースのモデルでフィルタリング・ランク付けを行います。
なぜ重要か – このフィードはXにおけるコアのユーザー体験です。大規模な推薦システム、リアルタイムMLパイプライン、アルゴリズムによるキュレーションの社会的影響を研究する人にとって、その仕組みを理解することは非常に価値があります。
コアコンセプト
| コンセプト | 説明 |
|---|---|
| In‑networkソース | thunder/ – ビューアーがフォローしているアカウントの最新ツイートをメモリ内に保持するストア。 |
| Out‑of‑networkソース | phoenix/ – ビューアーがフォローしていないアカウントのツイートの関連性を予測するリトリーバモデル。 simclusters/ – 類似性に基づくクラスタリングにより、追加のout‑of‑networkツイートを抽出。 |
| スコアリングモデル | Transformer(名前:Phoenix)で、ビューアーの最近のエンゲージメント履歴を入力し、Like、Retweet、Reply、Dwell‑time、Reportなどの行動確率を予測。 |
| ウェイト | 予測された行動確率に手動で調整されたウェイト(home-mixer/params/param.rsを参照)を乗算し、合計して単一の関連性スコアを生成。 |
| 可視性フィルタリング | visibility-filtering/は、ユーザーのブロック・ミュート、アカウントラベル、国、サブスクリプション状態など、豊富なシグナルに基づき、各投稿をALLOW(表示)、INTERSTITIAL(例:成人コンテンツ警告)またはDROP(非表示)に分類。 |
| ブレンドパイプライン | ランキング後、非投稿アイテム(広告、「フォローすべきアカウント」の提案、プロンプトなど)はBlender(home-mixer/candidate_pipeline/for_you_candidate_pipeline.rs)によってインターリーブされます。 |
| ラベリングパス | 持続的なバックグラウンドジョブにより、agatha/、bdsm/、clip/、media‑model‑proxy/などの分類器とscarecrow/、botmaker/のルールエンジンを使って投稿・アカウントにラベルを付与。これらのラベルは可視性フィルタに供給されます。 |
リポジトリ構成(概要)
home-mixer/– リクエスト時パイプライン。候補をハイドレートし、事前スコアリングフィルタを実行、Phoenixでスコアリング、ポストセレクションフィルタを適用し、上位K件の投稿を選定。visibility-filtering/– ラベル+ビューア行動からALLOW/INTERSTITIAL/DROPの判断を行うロジック。phoenix/– ランキングTransformerのトレーニングコード、推論ラッパー、合成データ生成コード。simclusters/– out‑of‑networkツイートのクラスタベースリトリーバ。thunder/– フォローしているアカウントの最新ツイートをメモリ内にキャッシュ。botmaker/、botmaker-rules/、scarecrow/– 可視性フィルタが消費するラベルを生成するルールエンジンインフラ。agatha/、bdsm/、user-cred-v2/、clip/、media-model-proxy/– アカウント、メディア、テキストをスコアリングするMLモデル。abuse-enforcement-service/– モデルスコアに基づきアカウントを一時停止またはコンテンツを非表示にする強制ロジック。under‑the‑hood‑label‑transparency‑tool/– ユーザーがタイムラインに影響を与えるラベルの集計統計を閲覧できるUI。
動作仕組み(リクエストフロー)
- クエリハイドレート – ビューアーの最近の行動、フォローリスト、ブロック・ミュートなどを取得。
- 候補ソース –
thunder/(in‑network)とphoenix/+simclusters/(out‑of‑network)を並列で取得。 - 候補ハイドレート – 各ツイートにテキスト、メディア埋め込み、著者ラベル、言語、エンゲージメント数などを付加。
- 事前スコアリングフィルタ – 古いツイート、重複、自己投稿、サブスク限定コンテンツなどを除外。
- スコアリング –
PhoenixScorerが各行動の確率を予測。RankingScorerがウェイト付き合計、著者減衰、out‑of‑network割引、新規著者ブーストを適用。VMRankerは外部再ランクサービスをオプションで呼び出し。
- 選定 –
TopKScoreSelectorがスコアの高い候補を保持。 - ポストセレクションフィルタ – 可視性フィルタが各投稿をラベルストアと照合;除外された投稿は削除、インタースティシャル投稿はフラグ付きで保持。
- ブレンド – 非投稿アイテム(広告、フォロー提案、プロンプトなど)をインターリーブ。
- サイドエフェクト – インプレッションを記録、キャッシュを更新、広告クリックを記録など。
最近の注目アップデート(2026年8月時点)
- ウェイトドキュメント –
home-mixer/params/param.rsとhome-mixer/scorers/ranking_scorer.rsにコメント追加。ウェイトは予測された行動確率に乗算されることが明確化。エンゲージメント数そのものには乗算されない。 - ブラジル2026選挙フィルタ – 新たな
Brazil2026ElectionFilterにより、ブラジル選挙裁判所がマークしたアカウントからの投稿は、ビューアーがそのアカウントをフォローしていない限り削除。 - 合成トレーニングパイプライン –
phoenix/に合成データ生成コードとプロトタイプトレーニング実行コードが追加。以前の「Phoenixデモモデル」のプレースホルダを置き換え。 - 可視性フィルタリングの拡張 – 新しいモジュール(
visibility-filtering/)と関連ラベルソースを追加し、フィルタの透明性とカスタマイズ性を向上。
このリポジトリには含まれないもの
このリポジトリは意図的に以下を除外しています:
- プロダクション用のライブデータストア(例:ツイートデータベース、ユーザープロフィールストア)。
- Xで使用される大規模なトレーニングインフラ(大規模Spark/TFパイプライン)。
- リクエストパスコード以外のリアルタイムサービングインフラ(ロードバランサ、APIゲートウェイなど)。
ライセンス
プロジェクトはApache 2.0ライセンスの下でリリースされており、出典を明記すれば使用・改変・配布が可能です。
非専門家向けTL;DR
- このコードは、Xで表示されるパーソナライズされたタイムラインのエンジンです。
- フォローしている投稿とアルゴリズムが選んだ投稿を混ぜ、現代的なAIモデルでスコアリングし、安全規則と関連性ルールを適用してから表示します。
- 大規模なML、ルールベースのモデレーション、エンジニアリングの工夫を組み合わせた、実世界のプロダクショングレード推薦システムの貴重な観察窓です。
関連
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト