Pyserini ist ein Python-Toolkit für reproduzierbare Informationsabrufforschung mit spärlichen und dichten Darstellungen. Der Abruf mithilfe spärlicher Darstellungen erfolgt über die Integration mit dem Anserini IR-Toolkit unserer Gruppe, das auf Lucene basiert. Der Abruf mithilfe dichter Darstellungen erfolgt über die Integration mit der Faiss-Bibliothek von Facebook.
Pyserini ist in erster Linie darauf ausgelegt, eine effektive, reproduzierbare und benutzerfreundliche Erststufenabfrage in einer mehrstufigen Ranking-Architektur zu ermöglichen. Unser Toolkit ist als Standard-Python-Paket eigenständig und enthält Abfragen, Relevanzbeurteilungen, vorgefertigte Indizes und Auswertungsskripte für viele häufig verwendete IR-Testsammlungen. Mit Pyserini ist es einfach, Läufe einer Reihe von Standard-IR-Testsammlungen zu reproduzieren!
Für weitere Details bietet unser Artikel in SIGIR 2021 einen schönen Überblick.
Neu! Leitfaden zur Arbeit mit dem MS MARCO 2.1 Document Corpus für TREC 2024 RAG Track.
❗ Anserini wurde beim Commit 272565
(03.04.2024) von JDK 11 auf JDK 21 aktualisiert, was der Veröffentlichung von v0.35.0 entspricht. Dementsprechend wurde Pyserini beim Commit b2f677
(04.04.2024) auf JDK 21 aktualisiert.
Installation über PyPI:
pip install pyserini
Pyserini basiert auf Python 3.10 (andere Versionen funktionieren möglicherweise, aber YMMV) und Java 21 (aufgrund der Abhängigkeit von Anserini). Eine pip
-Installation zieht automatisch wichtige Abhängigkeiten wie PyTorch usw. ein. Transformers und die ONNX Runtime.
Das Toolkit verfügt außerdem über eine Reihe optionaler Abhängigkeiten:
pip install 'pyserini[optional]'
Insbesondere sind faiss-cpu
, lightgbm
und nmslib
in diesen optionalen Abhängigkeiten enthalten. Die Installation dieser Pakete kann problematisch sein, weshalb sie nicht in den Kernabhängigkeiten enthalten sind. Es könnte eine gute Idee sein, diese separat selbst zu installieren.
Das Software-Ökosystem entwickelt sich schnell weiter und eine potenzielle Quelle der Frustration ist die Inkompatibilität zwischen verschiedenen Versionen der zugrunde liegenden Abhängigkeiten. Zusätzliche detaillierte Installationsanleitungen stellen wir Ihnen hier zur Verfügung.
Wenn Sie vorhaben, nur Pyserini zu verwenden , sollte die pip
Anweisung (ohne die optionalen Abhängigkeiten) in Ordnung sein. Wenn Sie jedoch vorhaben, zur Codebasis beizutragen oder mit den neuesten, noch nicht veröffentlichten Funktionen arbeiten möchten, benötigen Sie eine Entwicklungsinstallation. Anweisungen finden Sie hier.
Pyserini unterstützt verschiedene Arten von Abrufmodellen. In diesem Leitfaden finden Sie Einzelheiten zur Suche nach gängigen Korpora in der IR- und NLP-Forschung (z. B. MS MARCO, NaturalQuestions, BEIR usw.) mithilfe von Indizes, die wir bereits für Sie erstellt haben. Hier sind direkte Links zum Leitfaden:
Sobald Sie die Top -K -Ergebnisse erhalten, möchten Sie tatsächlich den Dokumenttext abrufen ... In dieser Anleitung erfahren Sie, wie das geht.
Nun, es hängt davon ab, mit welcher Art von Abrufmodell Sie suchen möchten:
Die Schritte sind je nach Modellklasse unterschiedlich: Diese Anleitung (identisch mit den Links oben) beschreibt die Details.
Mit Pyserini ist es einfach, Läufe einer Reihe von Standard-IR-Testsammlungen zu reproduzieren! Wir stellen eine Reihe vorgefertigter Indizes zur Verfügung, die die Reproduzierbarkeit direkt „out of the box“ unterstützen.
In unserem SIGIR 2022-Papier haben wir „Zwei-Klick-Reproduktionen“ eingeführt, die es jedem ermöglichen, experimentelle Läufe mit nur zwei Klicks (d. h. Kopieren und Einfügen) zu reproduzieren. Die Dokumentation ist in Reproduktionsmatrizen für verschiedene Korpora organisiert, die eine Zusammenfassung verschiedener experimenteller Bedingungen und Abfragesätze bieten:
Weitere Einzelheiten finden Sie in unserem Artikel zum Aufbau einer Kultur der Reproduzierbarkeit in der akademischen Forschung.
Weitere Reproduktionsanleitungen unten bieten detaillierte Schritt-für-Schritt-Anleitungen.
Korpora | Größe | Prüfsumme |
---|---|---|
MS MARCO V1-Passage: uniCOIL (noexp) | 2,7 GB | f17ddd8c7c00ff121c3c3b147d2e17d8 |
MS MARCO V1-Passage: uniCOIL (d2q-T5) | 3,4 GB | 78eef752c78c8691f7d61600ceed306f |
MS MARCO V1-Dokument: uniCOIL (noexp) | 11 GB | 11b226e1cacd9c8ae0a660fd14cdd710 |
MS MARCO V1 Dokument: uniCOIL (d2q-T5) | 19 GB | 6a00e2c0c375cb1e52c83ae5ac377ebb |
MS MARCO V2-Passage: uniCOIL (noexp) | 24 GB | d9cc1ed3049746e68a2c91bf90e5212d |
MS MARCO V2-Passage: uniCOIL (d2q-T5) | 41 GB | 1949a00bfd5e1f1a230a04bbc1f01539 |
MS MARCO V2-Dokument: uniCOIL (noexp) | 55 GB | 97ba262c497164de1054f357caea0c63 |
MS MARCO V2 Dokument: uniCOIL (d2q-T5) | 72 GB | c5639748c2cbad0152e10b0ebde3b804 |
Weitere Details:
33c87c
, veröffentlicht am 13.08.2022) ist die letzte Pyserini-Version, die auf Lucene 8 basiert und auf Anserini v0.14.4 basiert. Danach wurde der Anserini-Kofferraum auf Lucene 9 aufgerüstet.5fab14
, veröffentlicht am 26.09.2022) basiert auf Anserini v0.15.0 und verwendet Lucene 9. Danach wurde der Pyserini-Trunk auf Lucene 9 erweitert.Erläuterungen:
Was sind die Auswirkungen? Mit Lucene 8 erstellte Indizes sind nicht vollständig mit Lucene 9-Code kompatibel (siehe Anserini #1952). Die Problemumgehung besteht darin, das konsistente Tie-Breaking zu deaktivieren. Dies erfolgt automatisch, wenn Pyserini einen Lucene 8-Index erkennt. Allerdings liefert Lucene 9-Code, der auf Lucene 8-Indizes ausgeführt wird, etwas andere Ergebnisse als Lucene 8-Code, der auf Lucene 8-Indizes ausgeführt wird. Beachten Sie, dass Lucene 8-Code keine mit Lucene 9 erstellten Indizes lesen kann.
Warum ist das notwendig? Obwohl störend, ist ein Upgrade auf Lucene 9 erforderlich, um die HNSW-Indizes von Lucene nutzen zu können, was die Fähigkeiten von Pyserini erhöht und den Designraum für dichte/spärliche Hybride öffnet.
Mit v0.11.0.0 und früheren Versionen haben Pyserini-Versionen die Konvention XYZW übernommen, wobei XYZ die Version von Anserini verfolgt und W zur Unterscheidung verschiedener Versionen auf der Python-Seite verwendet wird. Ab Anserini v0.12.0 wurden die Versionen Anserini und Pyserini entkoppelt.
Anserini ist für die Zusammenarbeit mit JDK 11 konzipiert. Über JDK 9 gab es eine JRE-Pfadänderung, die Pyjnius 1.2.0 beschädigt, wie in dieser Ausgabe dokumentiert, über die auch in Anserini hier und hier berichtet wird. Dieses Problem wurde mit Pyjnius 1.2.1 (veröffentlicht im Dezember 2019) behoben. Der vorherige Fehler wurde in diesem Notizbuch dokumentiert und dieses Notizbuch dokumentiert die Fehlerbehebung.
Wenn Sie Pyserini verwenden, zitieren Sie bitte das folgende Dokument:
@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",
}
Diese Forschung wird hauptsächlich zum Teil vom Natural Sciences and Engineering Research Council (NSERC) Kanadas unterstützt.