Xアルゴリズムが大幅刷新:Rust製「home-mixer」と最新バリューモデル(VM)の全貌公開
xAIおよびXチームは、推薦タイムラインの基盤となる最新コードベース「home-mixer」をオープンソース公開しました。Rustベースのパイプライン刷新により、SimClusters探索、フォロワー外リツイート制限、ブランドセーフティ評価、そして新規投稿者向けのコールドスタート補正とValue Modelランキングが統合されています。
わかりやすい説明
今回の更新で、Xの「おすすめ(For You)」や「フォロー中」タイムラインを表示する最新の仕組みが公開されました。システム全体が高速なプログラミング言語Rustで書き直されており、広告主を守る「ブランド安全性チェック」や、まだフォロワーが少ない新規クリエイターのおすすめ露出を助ける仕組み(コールドスタート機能)が明示されています。また、無関係なリツイートや返信スパムを弾くフィルターの存在も確認できます。
重要ポイント
- 1Rust言語で刷新された高速な推薦パイプライン「home-mixer」のコードを全面公開
- 2新規・フォロワー少数の投稿者を救済する「author_cold_start」スコアラーの存在が判明
- 3Value Model (VM) ランキングにおけるデバイアス処理(特定傾向の偏り補正)の実装
- 4ブランドセーフティ(広告安全性)の評価が候補抽出・パイプライン段階で厳密に統合
- 5フォロワー外の無関係なRTやリプライを弾く「oon_retweet_reply_filter」によるスパム低減
技術的な詳細
本コミットでは、マイクロサービス基盤『home-mixer』がRustで体系的に実装されています。SimClusters ANN(近似最近傍探索)とPopular Postsから候補を取得するソース群、広告適格性を判定する`ads_brand_safety_vf_hydrator`、そして`oon_retweet_reply_filter`によるOut-Of-Network(非フォロー枠)の不要なRT・リプライ除外機構が含まれます。ランキング層では`author_cold_start.rs`による新規投稿者スコアの補正と、`vm_ranker_debias_payload.rs`を用いたValue Model (VM) 推薦バイアス除去が導入されています。
影響を受けるユーザー
Xを利用する全ユーザー、特にフォロワー獲得を目指す新規クリエイター、インフルエンサー、およびブランドセーフティを重視する広告主。
変更前後の比較
以前のScala/Java中心の公開コードから、Rustによるモダンかつ高効率なマイクロサービス構成(home-mixer)へと移行し、ブランドセーフティやコールドスタート評価、Value Modelデバイアスがパイプラインとして明示化されました。
アクションアイテム
- 新規アカウントはコールドスタートスコアラーの恩恵を受けるため、初期から高品質でエンゲージメント率の高い投稿に注力する
- ブランドセーフティ評価クライアントに抵触しないよう、暴言・規約違反スレスレの過激な表現を控える
- 無関係な第三者へのリプライや引用・RT連打はOONフィルターで弾かれやすいため、直接的な質の高い会話を生む投稿を意識する
収益化・活用ヒント
- 広告収益分配を得るにはブランドセーフティ(ads_brand_safety)のクリアが必須なため、広告主が嫌うコンテンツを避けることが最優先
- SimClusters ANNによって特定の興味関心クラスタに分類されやすいよう、発信トピックの一貫性を保つこと
FAQ
Q. コールドスタートスコア(author_cold_start)とは何ですか?
新規アカウントやフォロワー数の少ない投稿者が、十分なエンゲージメント履歴を持つ既存アカウントに埋もれず「おすすめ」に露出できるよう下駄を履かせるアルゴリズム機能です。
Q. OONフィルター(oon_retweet_reply_filter)とは何ですか?
Out-Of-Network(非フォロー関係)におけるリツイートや返信を判別し、文脈のないスパムや露出目的のリプライをタイムラインから除外するフィルターです。
変更ファイル一覧
- + README.md
- + grox/config/config.py
- + grox/flows/reply_spam/constants.py
- + home-mixer/candidate_hydrators/ads_brand_safety_vf_hydrator.rs
- + home-mixer/candidate_hydrators/mod.rs
- + home-mixer/candidate_hydrators/phoenix_reply_ancestors_hydrator.rs
- + home-mixer/candidate_pipeline/following_candidate_pipeline.rs
- + home-mixer/candidate_pipeline/for_you_candidate_pipeline.rs
- + home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs
- + home-mixer/candidate_pipeline/ranked_following_candidate_pipeline.rs
- + home-mixer/candidate_pipeline/reverse_chron_posts_pipeline.rs
- + home-mixer/clients/author_brand_safety_client.rs
- + home-mixer/clients/mod.rs
- + home-mixer/clients/popular_authors_store_client.rs
- + home-mixer/clients/simclusters_ann_cache_client.rs
- + home-mixer/filters/oon_retweet_reply_filter.rs
- + home-mixer/main.rs
- + home-mixer/models/brand_safety.rs
- + home-mixer/params/param.rs
- + home-mixer/scorers/author_cold_start.rs
- + home-mixer/scorers/value_model.rs
- + home-mixer/scorers/vm_ranker_debias_payload.rs
- + home-mixer/scorers/vm_ranker_request.rs
- + home-mixer/side_effects/author_served_metrics_side_effect.rs
- + home-mixer/side_effects/client_events_kafka_side_effect.rs
- + home-mixer/side_effects/mod.rs
- + home-mixer/side_effects/served_event_kafka_side_effect.rs
- + home-mixer/sources/mod.rs
- + home-mixer/sources/popular_posts_source.rs
- + home-mixer/sources/simclusters_source.rs