Pyserini est une boîte à outils Python pour la recherche de recherche d'informations reproductibles avec des représentations clairsemées et denses. La récupération à l'aide de représentations clairsemées est assurée via l'intégration avec la boîte à outils Anserini IR de notre groupe, qui est construite sur Lucene. La récupération à l'aide de représentations denses est assurée via l'intégration avec la bibliothèque Faiss de Facebook.
Pyserini est principalement conçu pour fournir une récupération de première étape efficace, reproductible et facile à utiliser dans une architecture de classement à plusieurs étapes. Notre boîte à outils est autonome en tant que package Python standard et est livrée avec des requêtes, des jugements de pertinence, des index prédéfinis et des scripts d'évaluation pour de nombreuses collections de tests IR couramment utilisées. Avec Pyserini, il est facile de reproduire des analyses sur un certain nombre de collections de tests IR standards !
Pour plus de détails, notre article dans SIGIR 2021 fournit un bel aperçu.
Nouveau! Guide pour travailler avec le corpus de documents MS MARCO 2.1 pour TREC 2024 RAG Track.
❗ Anserini a été mis à niveau du JDK 11 vers le JDK 21 au commit 272565
(03/04/2024), ce qui correspond à la sortie de la v0.35.0. En conséquence, Pyserini a été mis à niveau vers JDK 21 lors du commit b2f677
(04/04/2024).
Installer via PyPI :
pip install pyserini
Pyserini est construit sur Python 3.10 (d'autres versions peuvent fonctionner, mais YMMV) et Java 21 (en raison de sa dépendance à Anserini). Une installation pip
intégrera automatiquement les dépendances majeures telles que PyTorch, ? Transformateurs et ONNX Runtime.
La boîte à outils comporte également un certain nombre de dépendances facultatives :
pip install 'pyserini[optional]'
Notamment, faiss-cpu
, lightgbm
et nmslib
sont inclus dans ces dépendances facultatives. L'installation de ces packages peut être capricieuse, c'est pourquoi ils ne sont pas inclus dans les dépendances principales. Ce serait peut-être une bonne idée de les installer vous-même séparément.
L'écosystème logiciel évolue rapidement et une source potentielle de frustration est l'incompatibilité entre les différentes versions des dépendances sous-jacentes. Nous fournissons ici des instructions d’installation détaillées supplémentaires.
Si vous envisagez d' utiliser uniquement Pyserini, alors l'instruction pip
(sans les dépendances facultatives) devrait convenir. Cependant, si vous envisagez de contribuer à la base de code ou si vous souhaitez travailler avec les dernières fonctionnalités non encore publiées, vous aurez besoin d'une installation de développement. Les instructions sont fournies ici.
Pyserini prend en charge différents types de modèles de récupération. Consultez ce guide pour plus de détails sur la manière de rechercher des corpus courants dans la recherche IR et NLP (par exemple, MS MARCO, NaturalQuestions, BEIR, etc.) à l'aide d'index que nous avons déjà créés pour vous. Voici des liens directs vers le guide :
Une fois que vous aurez obtenu les meilleurs résultats, vous souhaiterez en fait récupérer le texte du document... Consultez ce guide pour savoir comment.
Eh bien, cela dépend du type de modèle de récupération avec lequel vous souhaitez effectuer une recherche :
Les étapes sont différentes pour différentes classes de modèles : ce guide (identique aux liens ci-dessus) décrit les détails.
Avec Pyserini, il est facile de reproduire des analyses sur un certain nombre de collections de tests IR standards ! Nous fournissons un certain nombre d'index prédéfinis qui prennent directement en charge la reproductibilité « prêts à l'emploi ».
Dans notre article SIGIR 2022, nous avons introduit les « reproductions en deux clics » qui permettent à quiconque de reproduire des essais expérimentaux en seulement deux clics (c'est-à-dire copier-coller). La documentation est organisée en matrices de reproduction de différents corpus qui fournissent une synthèse de différentes conditions expérimentales et ensembles de requêtes :
Pour plus de détails, consultez notre article sur la construction d'une culture de reproductibilité dans la recherche universitaire.
Des guides de reproduction supplémentaires ci-dessous fournissent des instructions détaillées étape par étape.
Corpus | Taille | Somme de contrôle |
---|---|---|
Passage MS MARCO V1 : uniCOIL (noexp) | 2,7 Go | f17ddd8c7c00ff121c3c3b147d2e17d8 |
Passage MS MARCO V1 : uniCOIL (d2q-T5) | 3,4 Go | 78eef752c78c8691f7d61600ceed306f |
Document MS MARCO V1 : uniCOIL (noexp) | 11 Go | 11b226e1cacd9c8ae0a660fd14cdd710 |
Document MS MARCO V1 : uniCOIL (d2q-T5) | 19 Go | 6a00e2c0c375cb1e52c83ae5ac377ebb |
Passage MS MARCO V2 : uniCOIL (noexp) | 24 Go | d9cc1ed3049746e68a2c91bf90e5212d |
Passage MS MARCO V2 : uniCOIL (d2q-T5) | 41 Go | 1949a00bfd5e1f1a230a04bbc1f01539 |
Document MS MARCO V2 : uniCOIL (noexp) | 55 Go | 97ba262c497164de1054f357caea0c63 |
Document MS MARCO V2 : uniCOIL (d2q-T5) | 72 Go | c5639748c2cbad0152e10b0ebde3b804 |
Plus de détails :
33c87c
, publié le 13/08/2022) est la dernière version de Pyserini construite sur Lucene 8, basée sur Anserini v0.14.4. Par la suite, le coffre Anserini a été mis à niveau vers Lucene 9.5fab14
, publié le 26/09/2022) est construit sur Anserini v0.15.0, en utilisant Lucene 9. Par la suite, le tronc Pyserini est passé à Lucene 9.Explications :
Quel est l'impact ? Les index construits avec Lucene 8 ne sont pas entièrement compatibles avec le code Lucene 9 (voir Anserini #1952). La solution de contournement consiste à désactiver la séparation cohérente, qui se produit automatiquement si un index Lucene 8 est détecté par Pyserini. Cependant, le code Lucene 9 exécuté sur les index Lucene 8 donnera des résultats légèrement différents du code Lucene 8 exécuté sur les index Lucene 8. Notez que le code Lucene 8 n'est pas capable de lire les index créés avec Lucene 9.
Pourquoi est-ce nécessaire ? Bien que perturbatrice, une mise à niveau vers Lucene 9 est nécessaire pour tirer parti des indices HNSW de Lucene, ce qui augmentera les capacités de Pyserini et ouvrira l'espace de conception d'hybrides denses/ clairsemés.
Avec la v0.11.0.0 et les versions antérieures, les versions de Pyserini ont adopté la convention XYZW , où XYZ suit la version d'Anserini et W est utilisé pour distinguer les différentes versions du côté Python. À partir d'Anserini v0.12.0, les versions Anserini et Pyserini sont découplées.
Anserini est conçu pour fonctionner avec JDK 11. Il y a eu un changement de chemin JRE au-dessus du JDK 9 qui interrompt pyjnius 1.2.0, comme documenté dans ce numéro, également signalé dans Anserini ici et ici. Ce problème a été résolu avec pyjnius 1.2.1 (publié en décembre 2019). L'erreur précédente a été documentée dans ce bloc-notes et ce bloc-notes documente le correctif.
Si vous utilisez Pyserini, veuillez citer l'article suivant :
@INPROCEEDINGS{Lin_etal_SIGIR2021_Pyserini,
author = "Jimmy Lin and Xueguang Ma and Sheng-Chieh Lin and Jheng-Hong Yang and Ronak Pradeep and Rodrigo Nogueira",
title = "{Pyserini}: A {Python} Toolkit for Reproducible Information Retrieval Research with Sparse and Dense Representations",
booktitle = "Proceedings of the 44th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR 2021)",
year = 2021,
pages = "2356--2362",
}
Cette recherche est principalement financée en partie par le Conseil de recherches en sciences naturelles et en génie (CRSNG) du Canada.