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 エンドポイントを公開 サービス指向アクセス

一般的なワークフロー

  1. コーパスを選択 – 例:MS MARCO、NaturalQuestions、BEIR。
  2. インデックスをダウンロードまたは構築 – 事前構築済みインデックスが利用可能。なければインデックス作成ガイドを使用。
  3. 検索モデルを選択 – 語彙(BM25)、学習済みスパース、密度、またはハイブリッド。
  4. 検索を実行 – 上位k件のドキュメントを取得。
  5. ドキュメント本文を取得 – 提供された取得ユーティリティを使用。
  6. (オプション)再ランク – 取得したパッセージを大規模言語モデルに供給して最終スコアリング。

すべてのステップは 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 研究や実用的な検索拡張アプリケーションの構築に必要なデータ、インデックス、評価ツールを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト