language:
- en
tags:
- ColBERT
- PyLate
- sentence-transformers
- sentence-similarity
- feature-extraction
- generated_from_trainer
- dataset_size:640000
- loss:Distillation
base_model: NeuML/bert-hash-nano
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 Nano
results:
- task:
type: py-late-information-retrieval
name: Py Late Information Retrieval
dataset:
name: NanoClimateFEVER
type: NanoClimateFEVER
metrics:
- type: MaxSim_accuracy@1
value: 0.3
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.4
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.48
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.54
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.3
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.14666666666666664
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.10800000000000001
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.07200000000000001
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.12999999999999998
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.19833333333333333
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.24
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.295
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.25693689476232956
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.3689126984126984
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.20238579189860822
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.66
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.82
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.66
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.5666666666666665
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.524
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.48200000000000004
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.05242687651506869
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.13921550887445522
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.19747421384152156
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.3240079111162478
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5626087795584744
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.7505
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.43170467867134016
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.8
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.84
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.86
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.92
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.8
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.29333333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.184
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.09999999999999998
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.7566666666666667
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.8133333333333332
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.84
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.89
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.8297799319515553
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.8250476190476193
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.8113438403701564
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.4
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.52
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.66
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.76
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.4
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.22666666666666668
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.18799999999999997
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.11199999999999999
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.2461904761904762
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.3277936507936508
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.4542380952380952
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.5184047619047619
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.4359941442854233
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.5049126984126984
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.36500352221028065
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.8
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.94
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.96
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 1
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.8
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.4599999999999999
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.30799999999999994
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.16999999999999996
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.4
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.69
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.77
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.85
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.7791724226460205
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.8793333333333332
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.7004123402170076
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.44
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.44
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.21333333333333332
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.14400000000000002
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.07800000000000001
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.44
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.64
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.72
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.78
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.6037947687284007
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.5473333333333332
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.5593945067344082
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.44
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.6
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.62
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.66
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.44
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.3933333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.33199999999999996
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.26
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.042699664136408834
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.07806895769271134
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.09327844593663599
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.11679808931654996
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.32747074296711476
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.5297222222222222
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.14001894101433573
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.36
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.58
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.72
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.8
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.36
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.19333333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.14800000000000002
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.08199999999999999
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.35
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.56
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.69
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.77
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5666668175637105
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.5109365079365079
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.5060753330396947
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.86
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.9
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.92
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.94
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.86
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.32666666666666666
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.21599999999999997
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.11599999999999998
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.784
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.8313333333333333
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.8713333333333333
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.898
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.8685515910259487
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.8838888888888888
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.8518536903500825
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.38
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.5
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.62
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.76
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.38
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.2333333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.18799999999999997
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.128
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.08066666666666666
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.14566666666666667
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.19466666666666668
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.26366666666666666
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.26913925437260855
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.4848809523809524
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.19279409328239955
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.14
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.32
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.42
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.56
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.14
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.10666666666666666
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.08400000000000002
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.056000000000000015
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.14
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.32
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.42
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.56
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.3381955845251465
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.2689920634920634
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.27812414648450906
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.6
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.72
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.8
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.82
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.6
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.2533333333333333
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.17600000000000002
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.092
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.565
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.7
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.785
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.81
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.6965110171594289
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.6668888888888889
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.659209595959596
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.9591836734693877
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.7074829931972788
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.6612244897959185
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.5204081632653061
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.04513010438618095
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.14053118239478446
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.21284594516135155
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.3318018815073785
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5876998904974655
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.826530612244898
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.41690806080588444
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.5271899529042385
name: Maxsim Accuracy@1
- type: MaxSim_accuracy@3
value: 0.6722448979591836
name: Maxsim Accuracy@3
- type: MaxSim_accuracy@5
value: 0.7446153846153846
name: Maxsim Accuracy@5
- type: MaxSim_accuracy@10
value: 0.8046153846153847
name: Maxsim Accuracy@10
- type: MaxSim_precision@1
value: 0.5271899529042385
name: Maxsim Precision@1
- type: MaxSim_precision@3
value: 0.3169858712715855
name: Maxsim Precision@3
- type: MaxSim_precision@5
value: 0.25086342229199377
name: Maxsim Precision@5
- type: MaxSim_precision@10
value: 0.17449293563579277
name: Maxsim Precision@10
- type: MaxSim_recall@1
value: 0.31021388112011294
name: Maxsim Recall@1
- type: MaxSim_recall@3
value: 0.4295596897247899
name: Maxsim Recall@3
- type: MaxSim_recall@5
value: 0.49914128462904644
name: Maxsim Recall@5
- type: MaxSim_recall@10
value: 0.5698214854239696
name: Maxsim Recall@10
- type: MaxSim_ndcg@10
value: 0.5478862953879712
name: Maxsim Ndcg@10
- type: MaxSim_mrr@10
value: 0.6190676783533925
name: Maxsim Mrr@10
- type: MaxSim_map@100
value: 0.47040219546448486
name: Maxsim Map@100
ColBERT MUVERA Nano
This is a PyLate model finetuned from neuml/bert-hash-nano on the msmarco-en-bge-gemma unnormalized split dataset. It maps sentences & paragraphs to sequences of 128-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(
sparse="neuml/colbert-muvera-nano",
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-nano", 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-nano",
)
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': 128, '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.
This model packs a punch into 950K parameters. It's the same architecture as the 4M parameter model with the modified embeddings layer taking the parameter county down. It even beats the original ColBERT v2 model on a couple of the benchmarks.
Nano BEIR
- Dataset:
NanoBEIR_mean - Evaluated with
pylate.evaluation.nano_beir_evaluator.NanoBEIREvaluator
| Metric | Value |
|---|---|
| MaxSim_accuracy@1 | 0.5272 |
| MaxSim_accuracy@3 | 0.6722 |
| MaxSim_accuracy@5 | 0.7446 |
| MaxSim_accuracy@10 | 0.8046 |
| MaxSim_precision@1 | 0.5272 |
| MaxSim_precision@3 | 0.317 |
| MaxSim_precision@5 | 0.2509 |
| MaxSim_precision@10 | 0.1745 |
| MaxSim_recall@1 | 0.3102 |
| MaxSim_recall@3 | 0.4296 |
| MaxSim_recall@5 | 0.4991 |
| MaxSim_recall@10 | 0.5698 |
| MaxSim_ndcg@10 | 0.5479 |
| MaxSim_mrr@10 | 0.6191 |
| MaxSim_map@100 | 0.4704 |
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}
}