FlexNeuART (flex-noo-art)
Flexible classic and NeurAl Retrieval Toolkit, or shortly FlexNeuART (intended pronunciation flex-noo-art)
is a substantially reworked knn4qa package. The overview can be found in our EMNLP OSS workshop paper:
Flexible retrieval with NMSLIB and FlexNeuART, 2020. Leonid Boytsov, Eric Nyberg.
In Aug-Dec 2020, we used this framework to generate best traditional and/or neural runs in the MSMARCO Document ranking task. In fact, our best traditional (non-neural) run slightly outperformed a couple of neural submissions. Please, see our write-up for details: Boytsov, Leonid. "Traditional IR rivals neural models on the MS MARCO Document Ranking Leaderboard." arXiv preprint arXiv:2012.08020 (2020).
In 2021, after being outsripped by a number of participants, we again advanced to a good position with a help of newly implemented models for ranking long documents. Please, see our write-up for details: Boytsov, L., Lin, T., Gao, F., Zhao, Y., Huang, J., & Nyberg, E. (2022). Understanding Performance of Long-Document Ranking Models through Comprehensive Evaluation and Leaderboarding. At the moment of writing (October 2022), we have competitive submissions on both MS MARCO leaderboards.
Code corresponding to Neural Model 1 is not included as this may be subject to a third party patent. This model (together with its non-contextualized variant) is described and evaluated in our ECIR 2021 paper: Boytsov, Leonid, and Zico Kolter. "Exploring Classic and Neural Lexical Translation Models for Information Retrieval: Interpretability, Effectiveness, and Efficiency Benefits." ECIR 2021.
In terms of pure effectiveness on long documents, other models (CEDR & PARADE) seem to be perform equally well (or somewhat better). They are available in our codebase. We are not aware of the patents inhibiting the use of the traditional (non-neural) Model 1.
Objectives
Develop & maintain a (relatively) light-weight modular middleware useful primarily for:
- Research
- Education
- Evaluation & leaderboarding
Main features
- Dense, sparse, or dense-sparse retrieval using Lucene and NMSLIB (dense embeddings can be created using any Sentence BERT model).
- Multi-field multi-level forward indices (+parent-child field relations) that can store parsed and "raw" text input as well as sparse and dense vectors.
- Forward indices can be created in append-only mode, which requires much less RAM.
- Pluggable generic rankers (via a server)
- SOTA neural (PARADE, BERT FirstP/MaxP/Sum, Longformer, COLBERT (re-ranking), dot-product Senence BERT models) and non-neural models (multi-field BM25, IBM Model 1).
- Multi-GPU training and inference with out-of-the box support for ensembling
- Basic experimentation framework (+LETOR)
- Python API to use retrievers and rankers as well as to access indexed data.
Documentation
- Usage notebooks covering installation & most functionality (including experimentation and Python API demo)
- Legacy notebooks for MS MARCO and Yahoo Answers
- Former life (as a knn4qa package), including acknowledgements and publications
We support a number of neural BERT-based ranking models as well as strong traditional ranking models including IBM Model 1 (description of non-neural rankers to follow).
The framework supports data in generic JSONL format. We provide conversion (and in some cases download) scripts for the following collections:
- Configurable dataset processing of standard datasets provided by ir-datasets.
- MS MARCO v1 and v2 (documents and passages)
- Wikipedia DPR (Natural Questions, Trivia QA, SQuAD)
- Yahoo Answers
- Cranfield (a small toy collection)
Acknowledgements
For neural network training FlexNeuART incorporates a substantially re-worked variant of CEDR (MacAvaney et al' 2019).
Metadata
Release files for flexneuart 1.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flexneuart-1.2.6.tar.gz | 63.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flexneuart-1.2.6-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 126.4 MB
Release files / flexneuart-1.2.6.tar.gz
| Download URL | flexneuart-1.2.6.tar.gz |
|---|---|
| Size | 63.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9cd2219aefdeeebfad568c8a798d392f12863e14ee2fb0912d6530a8fa8b9b40
|
|
BLAKE2b-256 checksum How to use checksums |
2e76ae5c2421dffbc675cd6626e9f5e5351d2ad961e44105057b96385568c48e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.16
|
Release files / flexneuart-1.2.6-py2.py3-none-any.whl
| Download URL | flexneuart-1.2.6-py2.py3-none-any.whl |
|---|---|
| Size | 63.3 MB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
eac8d36f1c6a87f89ccfc32c89011c7ed4480d6047f6d7b2253c58ec40329739
|
|
BLAKE2b-256 checksum How to use checksums |
ea59a78add4a2e5a6bbcb2d3d86812cfcbe8a76edd2c2614aa674405e7f51ffa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.16
|