castorini/pyserini
Pyserini is a Python toolkit for reproducible information retrieval research with sparse and dense representations.
Pyserini とは?
Pyserini は、Python ライブラリとして、Python コードから現代的な情報検索(IR)実験を簡単に実行できるようにするツールです。このライブラリは以下の2つの強力なバックエンドをラップしています:
- Anserini – Apache Lucene を基盤とする Java ベースの IR ツールキット。古典的な語彙検索(例:BM25)や、Lucene を用いた密度ベクトルの格納に適しています。
- FAISS – Facebook が開発した、密度ベクトル埋め込みに対する高速類似性検索用のライブラリ。
これらを組み合わせることで、スパース(語彙ベース)モデル、密度(埋め込みベース)モデル、またはハイブリッドな組み合わせによるドキュメント検索が、1つの Python パッケージから可能になります。
なぜ注目すべきか?
- 再現性のある研究 – Pyserini には、MS MARCO、NaturalQuestions、BEIR など多くの標準テストコレクション用の準備済みインデックス、クエリセット、関連性判断、評価スクリプトが同梱されています。
- 第一段階の検索 – マルチステージランク付けパイプラインの高速かつスケーラブルな「最初のフェーズ」として設計されています(例:上位k件の候補を取得し、その後大規模言語モデルで再ランク)。
- インストールが簡単 –
pip install pyseriniでほとんどの依存関係(PyTorch、🤗 Transformers、ONNX Runtime)が自動インストールされます。FAISS はオプションで、適切なfaiss-cpuまたはfaiss-gpuパッケージで追加可能です。 - プログラム的・サービス指向 – Python で直接ライブラリを使用するか、REST または MCP サーバーを起動してリモートクエリを実行できます。
インストール(開始方法)
# 基本インストール – 主な依存関係を取得
pip install pyserini
# 密度ベクトル検索が必要な場合、まず FAISS のバリアントをインストール
pip install faiss-cpu # または faiss-gpu
# オプション:マルチモーダル(画像)サポート
pip install "pyserini[optional]"
Pyserini は Python 3.12 で動作します(他のバージョンも動作する可能性があります)。Anserini にアクセスするため、Java 21 が必要です。
主要機能
| 機能 | 使用方法 | 一般的なモデル/バックエンド |
|---|---|---|
| 語彙検索(BM25、クエリ尤度) | searcher.search("my query") |
Anserini による Lucene |
| 学習済みスパース検索(uniCOIL、SPLADE など) | 同じ API を使用、適切なインデックスをロード | Lucene + 項重みベクトル |
| 密度検索(DPR、Contriever、BGE など) | Faiss インデックスまたは Lucene ベースのベクトルインデックスをロード | FAISS または Lucene HNSW |
| ハイブリッド検索(密度+スパース融合) | プログラム的に結果を統合するか、組み込み融合機能を使用 | 両方のバックエンド |
| インデックス構築 | BM25、スパースベクトル、密度ベクトル用の IndexBuilder クラス |
Java 実装(直接)または埋め込み可能な Python ラッパー |
| 評価 | MAP、nDCG、Recall@k を標準 qrels で計算するスクリプト | 組み込み評価ユーティリティ |
| REST / MCP サーバー | python -m pyserini.rest を実行して HTTP エンドポイントを公開 |
サービス指向アクセス |
一般的なワークフロー
- コーパスを選択 – 例:MS MARCO、NaturalQuestions、BEIR。
- インデックスをダウンロードまたは構築 – 事前構築済みインデックスが利用可能。なければインデックス作成ガイドを使用。
- 検索モデルを選択 – 語彙(BM25)、学習済みスパース、密度、またはハイブリッド。
- 検索を実行 – 上位k件のドキュメントを取得。
- ドキュメント本文を取得 – 提供された取得ユーティリティを使用。
- (オプション)再ランク – 取得したパッセージを大規模言語モデルに供給して最終スコアリング。
すべてのステップは docs/ フォルダにドキュメント化されており、README には各主要データセットの具体的な例へのリンクがあります。
Pyserini を使っているのは誰か?
- 情報検索論文を発表する学術研究者(SIGIR 2021 論文で引用されています)。
- 速い第一段階検索器が必要な、検索拡張生成(RAG)パイプラインを構築するチーム。
- 標準的な IR テストコレクションで再現可能なベースラインが必要な誰も。
詳細情報の入手先
- 論文:Pyserini: A Python Toolkit for Reproducible Information Retrieval Research(SIGIR 2021)。
- ドキュメント:https://github.com/castorini/pyserini/tree/master/docs
- 再現ガイド:MS MARCO、BEIR、Mr. TyDi などに対する2クリックノートブック。
- コミュニティ:GitHub リポジトリの Issues とディスカッション、および Anserini/Pyserini プロジェクト用のメーリングリスト。
要するに:Pyserini は、最小限の設定で Python から最先端のスパース、密度、ハイブリッド検索を実行できるようにし、厳密な IR 研究や実用的な検索拡張アプリケーションの構築に必要なデータ、インデックス、評価ツールを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト