castorini/pyserini

Pyserini is a Python toolkit for reproducible information retrieval research with sparse and dense representations.

什么是 Pyserini?

Pyserini 是一个 Python 库,可让您从 Python 代码中轻松运行现代信息检索(IR)实验。它封装了两个强大的后端:

  • Anserini – 基于 Apache Lucene 的 Java 信息检索工具包,适用于经典词汇搜索(如 BM25)以及使用 Lucene 存储密集向量。
  • FAISS – Facebook 开发的用于快速搜索密集向量嵌入的库。

它们结合使用,让您能够使用 稀疏(基于词项)模型、密集(基于嵌入)模型或 混合 组合,全部通过一个 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 包装器
评估 计算标准 qrels 上的 MAP、nDCG、Recall@k 的脚本 内置评估工具
REST / MCP 服务器 运行 python -m pyserini.rest 以暴露 HTTP 端点 服务化访问

典型工作流程

  1. 选择语料库 – 例如 MS MARCO、NaturalQuestions、BEIR。
  2. 下载或构建索引 – 提供预构建索引;否则使用索引指南。
  3. 选择检索模型 – 词汇(BM25)、学习型稀疏、密集或混合。
  4. 执行搜索 – 检索前 k 个文档。
  5. 获取文档文本 – 使用提供的获取工具。
  6. (可选)重排序 – 将检索到的段落输入大语言模型进行最终评分。

所有步骤均在 docs/ 文件夹中有文档说明,README 提供了每个主要数据集的具体示例链接。


谁在使用 Pyserini?

  • 发表 IR 论文的学术研究人员(该库被引用在 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 研究和构建实用检索增强应用所需的全部数据、索引和评估工具。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目