第11章第五部7分
多様化と最終三十五件
似た投稿を間引き、上位50件を選び、投稿は35件に絞られる。
この章で分かること
- 多様化が「点数を少し下げる」ではないと分かる
- 最終的な表示件数と枠の配置を把握できる
- 広告が入る条件が分かる
点数が出そろったあと、似た投稿ばかりにならないよう間引く工程があります。やり方が少し変わっています。
点数は変えず、選外を0にする
多様化を担当するのは vm-ranker という別サービスです。投稿の意味的な近さを見て選抜しますが、選ばれた投稿の点数はそのままです。
if selected_ids.contains(&c.tweet_id) {
s.unwrap_or(0.0) // 選ばれた → そのまま
} else {
0.0 // 選外 → 0にする
}選抜のアルゴリズムは行列式点過程(DPP)といって、「良さ」と「バラけ具合」を同時に見る数学的な手法です。公開既定では、点数上位150件をプールに、θ=0.65 で調整します。選ぶ件数の既定は50件です。params.rs:235-253 args.rs:18-19
なお、このサービスの呼び出しに失敗した場合は、多様化なしでフィードが出ます(フェイルオープン)。このとき、同一作者の減衰とフォロー外割引も掛かりません。vm_ranker.rs:107-113
最終的な枠
- 集めた候補(上限の合計)3,500件フォロー中1200+Phoenix 1000+類似800+人気500
- 予測に進む予算2,800件経路の比率を保って間引く
- 多様化の選抜50件意味の近さで間引く
- 上位選抜50件点数順に切り出す
- 最終的な投稿35件1回のレスポンスに載る投稿数
| 枠 | 件数・位置 |
|---|---|
| 通常の投稿 | 35件 |
| モジュール枠 | 5件(前回は4件) |
| Jetfuelフレーム | 8件(機能は既定オフ) |
| 1回のレスポンス合計 | 最大48件 |
| おすすめユーザー(Who to Follow) | 6番目 |
| 動画カルーセル | 6番目(既定オフ) |
| プロンプト | 先頭 |
| フィードアンケート | 12番目(既定オフ) |
広告の入り方
既定の広告配置(multi_risk)では、投稿が5件以上ないと広告は挿入されません。広告同士の間隔は3件を要求値としています。util.rs:9-11 param.rs:931-936
次に開いたときの話
- 直近10分・最大100件に配信された投稿は再配信されません param.rs:1128-1139
- 配信履歴は直近50レスポンスぶん保持されます truncate_served_history_side_effect.rs:11
- 候補のキャッシュは180秒・最大750件(点数が正のものだけ)param.rs:682-687