文章目录
- 关于 Pyserini
- 安装🎬
- 如何搜索?🙋
- 如何给我的语料集建立索引
关于 Pyserini
- github : https://github.com/castorini/pyserini
- Pyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Representations
https://arxiv.org/abs/2102.10073
Pyserini 是一个 Python 工具包,用于具有稀疏和密集表示 的可重复信息检索研究。通过与我们小组基于 Lucene 构建的Anserini IR 工具包集成,可以使用稀疏表示进行检索。通过与 Facebook 的Faiss库集成,提供使用密集表示的检索。
Pyserini 的主要设计目的是在多阶段 ranking 架构中提供有效、可重复且易于使用的第一阶段检索。
我们的工具包是独立的标准 Python 包,并附带针对许多常用 IR 测试集合的查询、相关性判断、预构建索引和评估脚本。使用 Pyserini,可以轻松地在许多标准 IR 测试集合上重现运行!
有关更多详细信息,我们在 SIGIR 2021 中的论文提供了很好的概述。
❗ Anserini 在提交时(2024/04/03)从 JDK 11 升级到 JDK 21 272565
,对应 v0.35.0 版本。相应地,Pyserini 在提交时b2f677
(2024/04/04)升级到了 JDK 21 。
安装🎬
通过 PyPI 安装(需要 Python 3.10+):
pip install pyserini
- 稀疏检索依赖于Anserini,它本身是基于 Lucene 构建的(用 Java 编写),因此需要 JDK 21。
- 密集检索依赖于神经网络,并且需要一组更复杂的依赖关系。安装
pip
时会自动拉入🤗 Transformers 库来满足包要求。 - Pyserini 还依赖于PyTorch和Faiss,但由于这些包可能需要特定于平台的自定义配置,因此它们没有在包要求中明确列出。我们将这些软件包的安装留给您。
软件生态系统正在快速发展,潜在的挫败感是不同版本的底层依赖项之间的不兼容。我们在此处提供了其他详细的安装说明。
如果您打算只使用Pyserini,那么pip
上面的说明就可以了。
但是,如果您计划为代码库做出贡献或想要使用最新的尚未发布的功能,则需要进行开发安装。此处提供了说明。
如何搜索?🙋
Pyserini 支持以下类别的检索模型:
- Traditional lexical models (e.g., BM25) using
LuceneSearcher
. - Learned sparse retrieval models (e.g., uniCOIL, SPLADE, etc.) using
LuceneImpactSearcher
. - Learned dense retrieval models (e.g., DPR, Contriever, etc.) using
FaissSearcher
. - Hybrid retrieval models (e.g., dense-sparse fusion) using
HybridSearcher
.
请参阅本指南(与上面的链接相同),详细了解如何使用我们已经为您构建的索引来搜索 IR 和 NLP 研究中的常见语料库(例如 MS MARCO、NaturalQuestions、BEIR 等)。
一旦获得前k 个结果,您实际上会想要获取文档文本…请参阅本指南了解如何操作。
如何给我的语料集建立索引
这依据于 你要使用哪种检索模型来搜索
- Building a BM25 Index (Direct Java Implementation)
- Building a BM25 Index (Embeddable Python Implementation)
- Building a Sparse Vector Index
- Building a Dense Vector Index
不同的模型,有不同的步骤,详情可参考教程:https://github.com/castorini/pyserini/blob/master/docs/usage-index.md
2024-05-02(四)