本文へ移動
Xアルゴリズム解体新書
11第五部6

多様化と最終三十五件

似た投稿を間引き、上位50件を選び、投稿は35件に絞られる。

この章で分かること

  • 多様化が「点数を下げる」ではないと分かる
  • 最終的な表示件数と枠の配置を把握できる
  • 広告が入る条件が分かる

点数が出そろったあと、似た投稿ばかりにならないよう間引く工程があります。ここのやり方が、少し変わっています。

点数は変えず、選外を0にする

多様化を担当するのは VMRanker という別サービスです。投稿の意味的な近さを見て選抜しますが、選ばれた投稿の点数は一切変更しません

score: if selected_ids.contains(&c.tweet_id) {
    c.score.unwrap_or(0.0)   // 選ばれた → そのまま
} else {
    0.0                       // 選外   → 0にする
}
dpp_model.rs:146-151

選抜のアルゴリズムは行列式点過程(DPP)といって、「良さ」と「バラけ具合」を同時に最大化する数学的な手法です。上位150件をプールにして、そこから最大50件を選びます。

なお、このサービスが落ちた場合は多様化なしでフィードが出ます(フェイルオープン設計)。止まって表示されないより、多様性を諦めて表示する、という判断です。

最終的な枠

  • 集めた候補3,000
    フォロー中1200+フォロー外1000+類似800
  • 多様化の選抜50
    意味の近さで間引く
  • 上位選抜50
    点数順に切り出す
  • 最終的な投稿35
    1回のレスポンスに載る投稿数
候補のうち実際に表示されるのは約1%です。 config.rs:17-22
件数・位置
通常の投稿35件
モジュール枠4件
Jetfuelフレーム8件
1回のレスポンス合計最大47件
おすすめユーザー(Who to Follow)6番目
プロンプト先頭
フィードアンケート12番目

広告の入り方

広告は投稿が5件以上ないと挿入されません。広告同士は最低3件の間隔を空けます。

次に開いたときの話

表示された投稿は記録され、次回以降のフィルタで使われます。

  • 直近10分・最大100件に配信された投稿は再配信されません
  • 配信履歴は直近50レスポンスぶん保持されます
  • 候補のキャッシュは180秒・最大750件(点数が正のものだけ)