language:
- en
tags:
- ColBERT
- PyLate
- sentence-transformers
- sentence-similarity
- feature-extraction
- generated_from_trainer
- dataset_size:640000
- loss:Distillation
base_model: NeuML/bert-hash-pico
datasets:
- lightonai/ms-marco-en-bge-gemma
pipeline_tag: sentence-similarity
library_name: PyLate
license: apache-2.0
metrics:
- MaxSim_accuracy@1
- MaxSim_accuracy@3
- MaxSim_accuracy@5
- MaxSim_accuracy@10
- MaxSim_precision@1
- MaxSim_precision@3
- MaxSim_precision@5
- MaxSim_precision@10
- MaxSim_recall@1
- MaxSim_recall@3
- MaxSim_recall@5
- MaxSim_recall@10
- MaxSim_ndcg@10
- MaxSim_mrr@10
- MaxSim_map@100
model-index:
- name: ColBERT MUVERA Pico
results:
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoClimateFEVER
type: NanoClimateFEVER
metrics:
- type: MaxSim_accuracy@1
value: 0.22
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.32
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.4
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.54
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.22
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.11333333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.09200000000000001
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.062
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.125
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.18
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.22
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.2723333333333333
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.22523375350232466
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.2918015873015873
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.17799142530014567
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoDBPedia
type: NanoDBPedia
metrics:
- type: MaxSim_accuracy@1
value: 0.68
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.82
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.86
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.9
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.68
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.5733333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.49999999999999994
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.47
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.054334623940057496
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.13885343313592602
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.19014904910202987
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.32073944983710506
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5579484125370805
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.7584126984126983
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.42613646438564345
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoFEVER
type: NanoFEVER
metrics:
- type: MaxSim_accuracy@1
value: 0.68
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.78
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.88
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.92
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.68
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.27333333333333326
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.19199999999999995
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.1
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.6466666666666667
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.7633333333333333
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.87
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.91
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.7844876010568872
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.7531666666666667
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.7413336663336665
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoFiQA2018
type: NanoFiQA2018
metrics:
- type: MaxSim_accuracy@1
value: 0.3
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.48
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.54
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.66
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.3
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.2
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.156
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.098
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.13885714285714287
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.28949206349206347
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.34890476190476183
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.4669047619047619
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.35173862968285535
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.41173809523809524
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.27418803367117023
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoHotpotQA
type: NanoHotpotQA
metrics:
- type: MaxSim_accuracy@1
value: 0.84
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.92
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.96
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.96
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.84
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.44666666666666655
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.288
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.152
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.42
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.67
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.72
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.76
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.7396469666031694
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.8846666666666667
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.6745663269195332
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoMSMARCO
type: NanoMSMARCO
metrics:
- type: MaxSim_accuracy@1
value: 0.4
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.56
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.64
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.72
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.4
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.18666666666666668
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.128
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.07200000000000001
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.4
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.56
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.64
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.72
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5513379104118443
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.4978571428571428
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.5100075204701912
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoNFCorpus
type: NanoNFCorpus
metrics:
- type: MaxSim_accuracy@1
value: 0.42
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.5
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.58
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.62
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.42
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.36
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.316
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.256
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.040942245985757866
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.07446981664033472
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.08961908265974948
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.11750646414430962
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.31817112092123645
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.4845555555555556
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.12896096534086632
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoNQ
type: NanoNQ
metrics:
- type: MaxSim_accuracy@1
value: 0.34
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.62
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.66
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.72
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.34
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.20666666666666664
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.132
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.07400000000000001
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.32
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.58
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.62
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.68
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5190287199365009
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.4836031746031745
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.4681591756850757
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoQuoraRetrieval
type: NanoQuoraRetrieval
metrics:
- type: MaxSim_accuracy@1
value: 0.82
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.9
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.9
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.92
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.82
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.32666666666666666
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.20799999999999996
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.11199999999999999
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.7440000000000001
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.8306666666666667
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.8540000000000001
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.8773333333333332
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.8467657844266899
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.8625
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.8312680912657447
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoSCIDOCS
type: NanoSCIDOCS
metrics:
- type: MaxSim_accuracy@1
value: 0.32
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.52
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.58
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.66
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.32
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.21333333333333332
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.18
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.12
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.066
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.13366666666666668
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.18566666666666662
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.24566666666666667
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.2462853863944484
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.4382222222222222
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.17492730667100076
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoArguAna
type: NanoArguAna
metrics:
- type: MaxSim_accuracy@1
value: 0.1
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.3
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.4
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.46
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.1
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.09999999999999998
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.08000000000000002
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.046000000000000006
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.1
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.3
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.4
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.46
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.275284156147708
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.21590476190476193
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.22481590517812997
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoSciFact
type: NanoSciFact
metrics:
- type: MaxSim_accuracy@1
value: 0.48
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.64
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.72
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.78
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.48
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.22666666666666668
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.15999999999999998
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.088
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.445
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.62
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.71
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.78
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.6190838299940942
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.5744444444444444
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.5693936722581301
name: Maxsim Map@100
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoTouche2020
type: NanoTouche2020
metrics:
- type: MaxSim_accuracy@1
value: 0.673469387755102
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.9183673469387755
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 1
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 1
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.673469387755102
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.6462585034013605
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.616326530612245
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.4938775510204082
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.04572557745748646
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.12524012746937077
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.19598845564624598
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.3058088560800141
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5544751618654643
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.7962585034013605
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.37144809611649504
name: Maxsim Map@100
- task:
type: nano-beir
name: Nano BEIR
dataset:
name: NanoBEIR mean
type: NanoBEIR_mean
metrics:
- type: MaxSim_accuracy@1
value: 0.4825745682888539
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.6367974882260596
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.7015384615384617
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.7584615384615384
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.4825745682888539
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.2979173207744636
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.23448665620094195
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.16491365777080064
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.2728097120697778
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.4050555467234125
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.4649483089214964
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.5320225280999634
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5068836487292541
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.573317809174952
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.4287074345842918
name: Maxsim Map@100
ColBERT MUVERA Pico
This is a PyLate model finetuned from neuml/bert-hash-pico on the msmarco-en-bge-gemma unnormalized split dataset. It maps sentences & paragraphs to sequences of 80-dimensional dense vectors and can be used for semantic textual similarity using the MaxSim operator.
This model is trained with un-normalized scores, making it compatible with MUVERA fixed-dimensional encoding.
Usage (txtai)
This model can be used to build embeddings databases with txtai for semantic search and/or as a knowledge source for retrieval augmented generation (RAG).
Note: txtai 9.0+ is required for late interaction model support
import txtai
embeddings = txtai.Embeddings(
path="neuml/colbert-muvera-pico",
content=True
)
embeddings.index(documents())
# Run a query
embeddings.search("query to run")
Late interaction models excel as reranker pipelines.
from txtai.pipeline import Reranker, Similarity
similarity = Similarity(path="neuml/colbert-muvera-pico", lateencode=True)
ranker = Reranker(embeddings, similarity)
ranker("query to run")
Usage (PyLate)
Alternatively, the model can be loaded with PyLate.
from pylate import rank, models
queries = [
"query A",
"query B",
]
documents = [
["document A", "document B"],
["document 1", "document C", "document B"],
]
documents_ids = [
[1, 2],
[1, 3, 2],
]
model = models.ColBERT(
model_name_or_path="neuml/colbert-muvera-pico",
)
queries_embeddings = model.encode(
queries,
is_query=True,
)
documents_embeddings = model.encode(
documents,
is_query=False,
)
reranked_documents = rank.rerank(
documents_ids=documents_ids,
queries_embeddings=queries_embeddings,
documents_embeddings=documents_embeddings,
)
Full Model Architecture
ColBERT(
(0): Transformer({'max_seq_length': 299, 'do_lower_case': False}) with Transformer model: BertHashModel
(1): Dense({'in_features': 80, 'out_features': 128, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
)
Evaluation
BEIR Subset
The following table shows a subset of BEIR scored with the txtai benchmarks script.
Scores reported are ndcg@10 and grouped into the following three categories.
FULL multi-vector maxsim
| Model | Parameters | NFCorpus | SciDocs | SciFact | Average |
|---|---|---|---|---|---|
| ColBERT v2 | 110M | 0.3165 | 0.1497 | 0.6456 | 0.3706 |
| ColBERT MUVERA Femto | 0.2M | 0.2513 | 0.0870 | 0.4710 | 0.2698 |
| ColBERT MUVERA Pico | 0.4M | 0.3005 | 0.1117 | 0.6452 | 0.3525 |
| ColBERT MUVERA Nano | 0.9M | 0.3180 | 0.1262 | 0.6576 | 0.3673 |
| ColBERT MUVERA Micro | 4M | 0.3235 | 0.1244 | 0.6676 | 0.3718 |
MUVERA encoding + maxsim re-ranking of the top 100 results per MUVERA paper
| Model | Parameters | NFCorpus | SciDocs | SciFact | Average |
|---|---|---|---|---|---|
| ColBERT v2 | 110M | 0.3025 | 0.1538 | 0.6278 | 0.3614 |
| ColBERT MUVERA Femto | 0.2M | 0.2316 | 0.0858 | 0.4641 | 0.2605 |
| ColBERT MUVERA Pico | 0.4M | 0.2821 | 0.1004 | 0.6090 | 0.3305 |
| ColBERT MUVERA Nano | 0.9M | 0.2996 | 0.1201 | 0.6249 | 0.3482 |
| ColBERT MUVERA Micro | 4M | 0.3095 | 0.1228 | 0.6464 | 0.3596 |
MUVERA encoding only
| Model | Parameters | NFCorpus | SciDocs | SciFact | Average |
|---|---|---|---|---|---|
| ColBERT v2 | 110M | 0.2356 | 0.1229 | 0.5002 | 0.2862 |
| ColBERT MUVERA Femto | 0.2M | 0.1851 | 0.0411 | 0.3518 | 0.1927 |
| ColBERT MUVERA Pico | 0.4M | 0.1926 | 0.0564 | 0.4424 | 0.2305 |
| ColBERT MUVERA Nano | 0.9M | 0.2355 | 0.0807 | 0.4904 | 0.2689 |
| ColBERT MUVERA Micro | 4M | 0.2348 | 0.0882 | 0.4875 | 0.2702 |
Note: The scores reported don't match scores reported in the respective papers due to different default settings in the txtai benchmark scripts.
As noted earlier, models trained with min-max score normalization don't perform well with MUVERA encoding. See this GitHub Issue for more.
At 450K parameters, this model does shockingly well! It's not too far off from the baseline 4M parameter model at 1/10th the size. It's also not too far off from the original ColBERT v2 model, which has 110M parameters.
Nano BEIR
- Dataset:
NanoBEIR_mean - Evaluated with
pylate.evaluation.nano_beir_evaluator.NanoBEIREvaluator
| Metric | Value |
|---|---|
| MaxSim_accuracy@1 | 0.4826 |
| MaxSim_accuracy@3 | 0.6368 |
| MaxSim_accuracy@5 | 0.7015 |
| MaxSim_accuracy@10 | 0.7585 |
| MaxSim_precision@1 | 0.4826 |
| MaxSim_precision@3 | 0.2979 |
| MaxSim_precision@5 | 0.2345 |
| MaxSim_precision@10 | 0.1649 |
| MaxSim_recall@1 | 0.2728 |
| MaxSim_recall@3 | 0.4051 |
| MaxSim_recall@5 | 0.4649 |
| MaxSim_recall@10 | 0.532 |
| MaxSim_ndcg@10 | 0.5069 |
| MaxSim_mrr@10 | 0.5733 |
| MaxSim_map@100 | 0.4287 |
Training Details
Training Hyperparameters
Non-Default Hyperparameters
eval_strategy: stepsper_device_train_batch_size: 32learning_rate: 0.0003num_train_epochs: 1warmup_ratio: 0.05fp16: True
All Hyperparameters
Click to expand
overwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 0.0003weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.05warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falsebf16: Falsefp16: Truefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters:auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional
Framework Versions
- Python: 3.10.18
- Sentence Transformers: 4.0.2
- PyLate: 1.3.2
- Transformers: 4.57.0
- PyTorch: 2.8.0+cu128
- Accelerate: 1.10.1
- Datasets: 4.1.1
- Tokenizers: 0.22.1
Citation
BibTeX
Sentence Transformers
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084"
}
PyLate
@misc{PyLate,
title={PyLate: Flexible Training and Retrieval for Late Interaction Models},
author={Chaffin, Antoine and Sourty, Raphaël},
url={https://github.com/lightonai/pylate},
year={2024}
}