OSS レコメンドシステム比較
レコメンダーをクラウドベンダーから借りるのではなく自前でホストしたい場合、 オープンソースの選択肢はいくつも存在し、いずれも活発に開発されています。ただし これらは互換品ではありません。それぞれ異なる目的のために作られています。研究用の ベンチマークフレームワーク、オールインワンのリアルタイムエンジン、GPU ディープラーニング基盤、設定駆動の学習・配信ツール —— 重なり合いながらも別々の 問題を解いています。
このページでは、よく知られた 4 つの OSS プロジェクト —— Gorse、 RecBole、NVIDIA Merlin、そして Recotem —— を比較し、チームの データ・インフラ・運用体制に合ったものを選べるようにします。目的は優劣を競う ランキングではなく、地図を公平に描くことです。プロジェクトの範囲やリリースは 時間とともに変わるため、外部情報には 2026-07 時点 と付記しています。
OSS レコメンダーの全体像
OSS のレコメンダーは、おおよそ 3 つの形に分類できます。
- 研究ライブラリ は、多数のアルゴリズムを共通の学習・オフライン評価基盤の 上に実装し、結果を再現・比較できるようにします。実験や論文のために最適化されて おり、本番エンドポイントのためではありません。
- オールインワンエンジン は、常駐サービスとして動作します。インタラクション イベントを送り込むとバックグラウンドで学習し、API 経由でレコメンドを返します。 多くの場合、独自のデータベースとダッシュボードを備えます。
- 学習・配信ツール は、学習ステップを明示的に保ち(いつ・どのデータで学習 するかは利用者が決める)、学習済みモデルを HTTP API の背後に公開しつつ、 インフラは軽量に保ちます。
自分がどの形を求めているかが分かれば、選択肢は一気に絞れます。
一覧比較
選定を左右しがちな観点 —— 実装言語、主眼、データの取り込み方、配信機能の有無、 運用フットプリント —— で並べると次のとおりです。
| Gorse | RecBole | NVIDIA Merlin | Recotem | |
|---|---|---|---|---|
| 言語 | Go | Python / PyTorch | Python(CUDA) | Python |
| 主眼 | オールインワンのリアルタイムエンジン | 研究・ベンチマーク | 大規模ディープラーニング recsys | 設定駆動の学習 + セルフホスト配信 |
| データソース | REST/SDK で独自ストアにイベントを投入 | 専用の atomic データセットファイル | NVTabular 経由の表形式 / Parquet | CSV・Parquet・BigQuery・SQL・プラグイン(レシピで宣言) |
| 配信 | 組み込み REST API + ダッシュボード | なし(オフライン評価のみ) | Triton Inference Server | 組み込み FastAPI /v1/recipes/{name}:recommend |
| 運用負荷 | クラスタ + バックエンド DB + キャッシュを運用 | 該当なし(サービスではなくライブラリ) | GPU インフラ + 配信スタック | 単一パッケージ / Docker イメージ。学習 → 署名 → 配信 |
| ライセンス | Apache-2.0 | MIT(学術利用) | Apache-2.0 | — |
表の内容は 2026-07 時点です。 機能やライセンスは変わり得るため、採用前に各 プロジェクトの最新ドキュメントを確認してください。
それぞれの適所
Gorse
Gorse は、Go で書かれたセルフホスト型のリアルタイム レコメンドエンジンです(Apache-2.0、2026-07 時点の最新リリースは v0.5.10)。 ユーザー・アイテム・フィードバックイベントを REST API または SDK で投入すると、 バックエンドのデータベース(MySQL、MariaDB、PostgreSQL、ClickHouse。キャッシュ には Redis)に保存し、モデルを自動学習して API 経由でレコメンドを返します。GUI ダッシュボードを備え、アイテム間・ユーザーベースのレコメンドに対応し、近年の バージョンでは古典的ランカーと LLM ベースのランカー、埋め込みによるマルチモーダル コンテンツにも対応しています。
Gorse は、取り込み・学習・配信のループ全体をサービスとして丸ごと所有したい —— かつ 学習コードを書きたくない —— チームに適し、そのクラスタ(master/server/worker ノード)とデータベースの運用を許容できることが前提になります。インタラクション データがすでにデータウェアハウスにあり、別のデータストアにイベントを複製するより クエリから学習したい場合、その取り込みモデルは Recotem とは方向性が異なります。
RecBole
RecBole は、Python と PyTorch を基盤とする研究向けの 統合ライブラリで、RUCAIBox(中国人民大学)らが開発しています(MIT ライセンス、 学術利用向け。2026-07 時点で 94 アルゴリズム・44 ベンチマークデータセット)。 その存在意義はレコメンド研究の再現性です。新しいアルゴリズムを共通基盤の上に 実装し、標準データセットで実行し、幅広いアルゴリズム群(一般・逐次・文脈考慮・ 知識ベース)にわたってオフライン指標を公平に比較できます。
RecBole は「自分のデータではどのアルゴリズムが勝つか」を問いたいとき、そして 厳密で比較可能なオフライン評価が欲しいときに最適です。あえて配信システムでは なく、HTTP エンドポイントや本番 API は持ちません。多くのチームは、研究ライブラリで 手法を選び、その後で実際にスケジュール学習・配信を行う別のツールを採用します。
NVIDIA Merlin
NVIDIA Merlin は、ディープラーニング レコメンダーをエンドツーエンドで構築するためのオープンソース(Apache-2.0)の GPU アクセラレーション・フレームワークです。単一ライブラリではなくスタックで、 特徴量エンジニアリングの NVTabular、学習の HugeCTR と Merlin Models、 セッションベースモデルの Transformers4Rec、Triton Inference Server を通じた 配信の Merlin Systems などから構成されます。テラバイト級データと高スループットな ディープモデル向けに設計されています。2026-07 時点で最新のタグ付きリリースは v24.06.00(2024 年 6 月)です。
Merlin は、大規模データ・ディープラーニングの知見・NVIDIA GPU インフラを持ち、 ニューラルレコメンダーのスループットを最大限に引き出したい組織に適します。その 性能は、4 つの中で最も重い運用フットプリント —— GPU と複数コンポーネントの学習・ 配信スタック —— を伴います。GPU がない場合、あるいはデータが数十億ではなく 数百万インタラクション規模であれば、CPU ベースのツールのほうが適していることが 多いでしょう。
Recotem
Recotem は、暗黙的フィードバックのレコメンダーライブラリ irspack を基盤とする、設定駆動・ セルフホスト型の学習・配信ツールです。作業単位は レシピ です。1 つの YAML ファイルが、データの取得元・学習方法・アーティファクトの出力先を定義し、ちょうど 1 つのモデルと 1 組の /v1/recipes/{name}:recommend エンドポイントを生成します。 全体像は アーキテクチャ概要 と 配信 API リファレンス を参照してください。
レシピは CSV・Parquet・BigQuery・SQL(PostgreSQL、MySQL、SQLite)から直接 読み込み、さらにプラグインによる独自ソースにも対応します。学習では Optuna のハイパーパラメータ探索を、指定したアルゴリズム 群 —— IALS、CosineKNN、TopPop、RP3beta、DenseSLIM、TruncatedSVD、 BPRFM —— にわたって実行し、オフライン指標(nDCG、MAP、recall、hit)で最良の ものを選びます。学習済みモデルは署名付きアーティファクトとして書き出され、 recotem serve が API キー認証とレシピ単位のホットスワップを備えた FastAPI サービスの背後にロードします。最小限のレシピは次のようになります。
name: purchase_log
source:
type: csv
path: ./interactions.csv
schema:
user_column: user_id
item_column: item_id
training:
algorithms: [IALS, CosineKNN, TopPop]
metric: ndcg
output:
path: ./artifacts/purchase_log.recotemrecotem train recipe.yaml
recotem serve --recipes ./artifacts/ --port 8080Recotem の立ち位置
Recotem は、研究ライブラリと重量級エンジンの中間に位置します。RecBole のような ライブラリと比べると、ライブラリがあえて含めない 2 つの要素 —— 宣言的なデータ 取り込みと本番配信 API —— を加えます。そのため、インタラクションのテーブルから 稼働中のエンドポイントまでを、各段階を自前でつなぎ合わせることなく到達できます。 Gorse のようなオールインワンエンジンと比べると、学習を明示的かつウェアハウス ネイティブに保ちます。イベントを別のデータストアに複製するのではなく、BigQuery や SQL のクエリにレシピを向けるだけで、運用すべきクラスタもありません。Merlin と 比べると、CPU 上の古典的な暗黙的フィードバックモデルを対象とするため、単一の pip install recotem あるいは 1 つの Docker イメージから GPU なしで動きます。
つまり Recotem の適所は、ウェアハウスネイティブでセルフホストなレコメンドの ための運用面のシンプルさ です。モデルごとに 1 つの設定ファイル、アーティファクトに 署名するバッチ学習、そして再起動なしで新しいモデルへホットスワップする配信 プロセス。データを社内に保ちたい、フレームワークのコードより設定を好む、そして 最大限のモデリング柔軟性よりも小さく監査可能なフットプリントを重視するチームに 向いています。
ディープなニューラルアーキテクチャ、数十億規模のデータ、GPU スループットが問題の 中心なら、Merlin のほうが強力です。まだアルゴリズムを選定中で厳密なオフライン ベンチマークが必要なら、RecBole を手に取ってください。取り込み・学習・配信を 端から端まで所有する稼働中サービスが欲しいなら、Gorse は検討に値します。そして、 すでに手元にあるデータから学習し、最小限の可動部でクリーンなレコメンド API を セルフホストしたいなら、それこそが Recotem の目的です。
次のステップ
- Recotem を学ぶ —— 実行可能なレシピに基づくタスク志向のガイド。
- AWS Personalize の代替 —— マネージドなクラウドサービスに対するセルフホスト・OSS の選択肢。
- アーキテクチャ概要 —— レシピ・アーティファクト・配信の関係。
- 配信 API リファレンス —— 各エンドポイントと リクエスト・レスポンスの形。
