castorini/rank_llm
RankLLM is a Python toolkit for reproducible information retrieval research using rerankers, with a focus on listwise reranking.
解決する問題
検索エンジンは、多くの場合、関連性によって完全に順序付けられていない初期結果セットを返します(例:BM25 や類似のレトリーバーを使用する場合)。RankLLM は、大規模言語モデルを使用してこれらの候補リストを再順序付け(再ランキング)し、最も関連性の高いドキュメントがより早く表示されるようにします。3 つの再ランキング戦略をサポートしています:ポイントワイズ(各ドキュメントを独立してスコアリング、例:MonoT5)、ペアワイズ(ドキュメントのペアを比較、例:DuoT5)、リストワイズ(リスト全体をまとめて考慮、例:RankZephyr、RankGPT、LiT5)。これにより、検索システムを再構築することなく検索品質が向上します。
仕組み
典型的なワークフローは次のとおりです:まず、初期候補セットを取得します(例:BM25 や SPLADE を使用して上位 100 件のドキュメント)。次に、これらの候補を再ランキングモデルに入力し、クエリとの関連性に基づいて再順序付けします。RankLLM は、統合されたコマンドラインインターフェース(rank-llm)と Python API を提供します。複数の推論バックエンドをサポートしています:vLLM を介したローカルモデル(例:RankZephyr、RankVicuna)、OpenAI/OpenRouter を介したホスト型モデル(例:GPT-4o)、および Gemini(例:Gemini 3 Flash)。ライブラリには、評価ツール(例:nDCG@10、MAP、再現率)、モデル呼び出しを検査するための分析モジュール、結果を JSONL、TREC、または JSON 形式で保存するデータライターも含まれています。簡単なデプロイのために、HTTP または Model Context Protocol(MCP)を介して再ランキングを提供できます。カスタムプロンプトテンプレートは YAML ファイルとして提供できます。
対象読者
情報検索、検索品質、ランキングに取り組む研究者や開発者。実験の実行、公開された結果の再現(MS MARCO データセット DL19–23 の 2 クリック再現コマンド)、および LLM ベースの再ランキングを必要とする本番システムの構築に役立ちます。ライブラリは柔軟に設計されており、クイック実行用の CLI と、より深い統合用の Python API の両方を備えています。
ハイライト
- ポイントワイズ(MonoT5)、ペアワイズ(DuoT5)、リストワイズ(RankZephyr、RankVicuna、RankGPT、LiT5)の再ランキングモデルをサポート
- 事前学習済み再ランカー(RankZephyr 7B、RankVicuna、LiT5 スイート、MonoT5、DuoT5、MonoELECTRA)のモデルズーを含む
- オープンソースモデル(vLLM 経由)とプロプライエタリ API(OpenAI、OpenRouter、Gemini)の両方で動作
- 推論効率を向上させるために、最初のトークンのロジットのみを使用して再ランキング可能(例:FirstMistral)
- YAML ファイルによるカスタムプロンプトテンプレート
- エンドツーエンドのパイプライン:検索、再ランキング、評価、分析
- MS MARCO パッセージデータセット(DL19–DL23)の 2 クリック再現コマンド
- サービングオプション:HTTP API と MCP(Model Context Protocol)サーバー
- リストワイズ再ランカーのファインチューニング用トレーニングスクリプト
- LlamaIndex などの一般的なツールキットとの緊密な統合(注:README には多くのツールキットでの実装が示されています)
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト