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 端点 |
服务化访问 |
典型工作流程
- 选择语料库 – 例如 MS MARCO、NaturalQuestions、BEIR。
- 下载或构建索引 – 提供预构建索引;否则使用索引指南。
- 选择检索模型 – 词汇(BM25)、学习型稀疏、密集或混合。
- 执行搜索 – 检索前 k 个文档。
- 获取文档文本 – 使用提供的获取工具。
- (可选)重排序 – 将检索到的段落输入大语言模型进行最终评分。
所有步骤均在 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 研究和构建实用检索增强应用所需的全部数据、索引和评估工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目