レコメンドシステムパイプラインアーキテクト は何をしますか?
構成可能なレコメンデーション、ランキング、フィードパイプラインを構築するための仕様・スキャフォールディングスキルです。xAIがオープンソース化したFor You アルゴリズム(Apache 2.0)で広まった6段階パターン — Source → Hydrator → Filter → Scorer → Selector → SideEffect をエンコードしています。このスキルはパターンの独立した再実装(MIT)であり、オリジナルのコードは一切コピーしていません。
上流: https://github.com/mturac/recsys-pipeline-architect
使用するタイミング
- ユーザーが「ユーザー/コンテキストに最適な上位Kアイテム」を選択するシステムを構築したい場合
- ユーザーが「Xをどのようにランキングすべきか」と質問したり、フィード/パーソナライゼーションの問題を説明した場合
- ユーザーがスコアリング関数を持っており、その周辺のパイプライン基盤が必要な場合
- 単一の関連性スコアから、調整可能な重みを持つマルチアクション予測に移行したい場合
- LLM/MLスコアラーをラップし、フィルター、ハイドレーター、副作用、実行可能なスキャフォールドをスタック(TypeScript / Go / Python)に追加したい場合
- トリガーとなるキーワード: 「レコメンデーションシステム」、「フィードアルゴリズム」、「ランキングパイプライン」、「おすすめフィード」、「候補パイプライン」、「コンテンツレコメンダー」、「recsys向けパイプラインアーキテクチャ」、「RAG検索リランカー」
使用すべきでないタイミング
- モデルアーキテクチャの作業(トランスフォーマー設計、2タワー検索、埋め込み学習) — このスキルはモデルに関するパイプライン基盤であり、モデルそのものではありません
- 純粋なMLトレーニングパイプライン — スコアリング関数はユーザーの責任です
- デプロイ済みパイプラインの運用(モニタリング、オートスケーリング) — 範囲外
6段階フレームワーク
| # | 段階 | 役割 | 並列実行可能? |
|---|---|---|---|
| 1 | Source | 1つ以上の起点から候補を取得 | はい — 複数のSourceを並列実行 |
| 2 | Hydrator | 各候補をフィルタリングとスコアリングに必要なメタデータで補完 | はい — 独立したハイドレーターを並列実行 |
| 3 | Filter | 表示してはいけない候補(ブロック済み、期限切れ、重複、不適格)を削除 | 順次 — 各フィルターは項目数が減った状態で動作 |
| 4 | Scorer | 生き残った各候補に1つ以上のスコアを割り当て | 順次 — 後続のスコアラーは以前のスコアを参照可能 |
| 5 | Selector | 最終スコアでソートし、上位Kを返す | 単一操作 |
| 6 | SideEffect | 配信済みIDをキャッシュ、インプレッションをログ、イベントを発行、カウンターを更新 | 非同期 — レスポンスをブロックしてはならない |
この順序の理由
- Sourceの前にHydrationを実行しない: 候補が存在することを確認してから、それらを補完するコストを払う
- Filterの前にHydrationを実行する: 多くのフィルターはSourceが提供しなかったメタデータを必要とする
- Scorerの前にFilterを実行する: スコアリングは高コストな段階。まず不適格なものを削除する
- チェーン状のScorer(単一ではない): 実際のシステムはMLスコアリング + 多様性リランキング + ビジネスルールを組み合わせる
- Scorerの後にSelectorを配置する: スコアリングを決定論的かつキャッシュ可能に保つ
- SideEffectは最後かつ非同期: 副作用は決してユーザーレスポンスをブロックしてはならない
呼び出し時のワークフロー
次の8ステップでユーザーをガイドします:
- ユースケースの明確化(1ラウンド、3つの質問): ランキング対象のアイテムは? 入力コンテキストは? 言語/ランタイムは?
- 候補Sourceの特定: 通常はネットワーク内(フォロー/所有/購読) + ネットワーク外(ML検索 / トレンド / 類似お気に入り)
- 必要なHydrationをリストアップ: 各フィルターとスコアラーについて、Sourceが提供しなかったデータは何か?
- フィルターをリストアップ: 重複、自分自身、経過時間、ブロック/ミュート、過去配信済み、適格性。安価なものから高価なものへ順序付け。
- スコアラーチェーンを設計: 一次(ML)→ 結合器(マルチアクションと重み)→ 多様性 → ビジネスルール
- Selector: 最終スコアで降順ソート、上位Kを取得(ネットワーク内/外で層別混合も可)
- SideEffect: 配信済みIDをキャッシュ、インプレッションイベントを発行、カウンターを更新、分析ログ — すべてfire-and-forget
- ユーザーのスタックにスキャフォールドを生成
提示すべき主要なトレードオフ(暗黙のデフォルトにしない)
1. 単一スコア vs マルチアクション予測
- 単一スコア: 1つのモデルで関連性を予測。動作を変更するには → 再トレーニング。
- マルチアクション: 複数のアクション(読む、いいね、シェア、スキップ、報告)に対してP(アクション)を予測し、サービング時に重みを組み合わせる。動作を変更するには → 重みを変更。再トレーニング不要。
X For Youシステムは、正と負の両方の重みを持つマルチアクションを使用。ユーザーが頻繁にチューニングする場合はマルチアクションを推奨。
2. スコアリングにおける候補の独立性
- 独立: 各候補を独立してスコアリング。決定論的、キャッシュ可能。
- 共同: スコアリング中に候補同士が相互作用(例: バッチ全体に対するトランスフォーマー)。より表現力豊かだが、バッチ間で非決定論的。
デフォルトは独立。特定の理由(例: 明示的なバッチ認識多様性)がある場合のみ共同を選択。
3. オンライン vs オフライン
- リクエスト時(オンライン): 各リクエストでパイプラインを実行。レイテンシ予算: 100~300ms。デフォルト。
- 事前計算(オフラインバッチ): パイプラインを定期的に実行し、結果をキャッシュ。より低レイテンシ、より低い鮮度。
- ハイブリッド: 候補検索はオフライン、ランキングはオンライン。
厳格なルール
- ベンチマーク数値を捏造しない。 「どれくらい速いか?」 → 「ワークロードに依存するので、自分で実行してください。」
- 帰属の規律を守る。 パターンを参照する場合、「xAIのオープンソースFor Youアルゴリズムによって広められた」 /
github.com/xai-org/x-algorithm(Apache 2.0)として帰属させる。 - 商標を使用しない。 ユーザーの成果物を「Xライク」と命名したり、「For You」ブランディングを使用しない。パターンは自由だが、ブランドはそうではない。推奨命名: 「候補パイプライン」、「フィードパイプライン」、「ランキングパイプライン」、「recsysパイプライン」。
- トレードオフを明示する。 マルチアクション vs 単一、独立 vs 共同、オンライン vs オフライン — 暗黙のデフォルトにしない。
- 生成されたスキャフォールドは実行可能でなければならない。 疑似コードをコードとして渡さない。
- フィルターの順序は重要。 安価なものを高価なものより前に。普遍的なものをユーザー固有のものより前に。
- 副作用は決してブロックしない。 ファイアアンドフォーゲットパターン(goroutine / promise awaitなし / asyncioタスク)でラップする。
アンチパターン
- フィルタリングの前にスコアリング(削除される候補に計算リソースを浪費)
- 同期的な副作用(キャッシュ書き込み / インプレッション発行がレスポンスをブロック)
- 製品が複数の目的(エンゲージメント vs 安全性 vs 多様性 vs 広告)に対してチューニングする必要がある場合に、単一の「関連性」スコアを使用
- デフォルトでの共同スコアリング(非決定論的、キャッシュが困難、リランキング段階と組み合わせにくい)
- 「説明用」の疑似コードを生成 — スキャフォールドは実際に実行可能でなければならない
上流リポジトリの内容
上流リポジトリ https://github.com/mturac/recsys-pipeline-architect には以下が含まれます:
- 完全な8ステップワークフローを備えた完全な
SKILL.md - 5つのオンデマンドロード可能なリファレンスドキュメント: 4言語(TS/Go/Python/Rust)のインターフェース、マルチアクションスコアリングパターン、候補独立性、フィルタークックブック(12パターン)、スコアラークックブック(加重和、MMR、多様性ペナルティ、位置バイアス補正)
- 3つの実行可能なサンプルスキャフォールド、すべてテストスイートでパス:
- Strapi v5プラグイン(TypeScript / Jest — 3/3 パス)
- Zentra互換パイプライン(Go with ジェネリクス — 3/3 パス)
- PMAIタスク優先順位付けツール(Python / FastAPI / pytest — 3/3 パス)
- v0.1.0 リリースタグ
- MITライセンス; パターンはxAI X For Youアルゴリズム(Apache 2.0)に帰属
skills.shでインストール: npx skills add mturac/recsys-pipeline-architect