Downloads · 30 days
179
14% of all-time downloads
NeuML/colbert-muvera-micro
colbert-muvera-micro is a sentence similarity model from NeuML. Use it when you need a score for how close two texts are. It is set up for PyLate. The card lists the license as apache-2.0.
This is a PyLate model finetuned from google/bertuncasedL-2H-128A-2 on the msmarco-en-bge-gemma-unnormalized dataset. It maps sentences & paragraphs to sequences of 128-dimensional dense vectors and can be used for se…
Downloads · 30 days
179
14% of all-time downloads
All-time downloads
1.3K
Public
Parameters
4.4M
17.6 MB on disk
Likes
26
Public
Click a slice to open those files.
.safetensors17.6 MB · 95%
From the Hugging Face model README
This is a PyLate model finetuned from google/bert_uncased_L-2_H-128_A-2 on the msmarco-en-bge-gemma-unnormalized 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.
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-micro",
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-micro", lateencode=True)
ranker = Reranker(embeddings, similarity)
ranker("query to run")
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-micro",
)
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,
)
ColBERT(
(0): Transformer({'max_seq_length': 299, 'do_lower_case': False}) with Transformer model: BertModel
(1): Dense({'in_features': 128, 'out_features': 128, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
)
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.
| Model | Parameters | ArguAna | NFCorpus | SciFact | Average |
|---|---|---|---|---|---|
| AnswerAI ColBERT Small v1 | 33M | 0.4440 | 0.3649 | 0.7423 | 0.5171 |
| ColBERT v2 | 110M | 0.4595 | 0.3165 | 0.6456 | 0.4739 |
| ColBERT MUVERA Micro | 4M | 0.3947 | 0.3235 | 0.6676 | 0.4619 |
| ColBERT MUVERA Small | 33M | 0.4455 | 0.3502 | 0.7145 | 0.5034 |
| GTE ModernColBERT v1 | 149M | 0.4946 | 0.3717 | 0.7529 | 0.5397 |
| Model | Parameters | ArguAna | NFCorpus | SciFact | Average |
|---|---|---|---|---|---|
| AnswerAI ColBERT Small v1 | 33M | 0.0317 | 0.1135 | 0.0836 | 0.0763 |
| ColBERT v2 | 110M | 0.4562 | 0.3025 | 0.6278 | 0.4622 |
| ColBERT MUVERA Micro | 4M | 0.3849 | 0.3095 | 0.6464 | 0.4469 |
| ColBERT MUVERA Small | 33M | 0.4451 | 0.3537 | 0.7148 | 0.5045 |
| GTE ModernColBERT v1 | 149M | 0.0265 | 0.1052 | 0.0556 | 0.0624 |
| Model | Parameters | ArguAna | NFCorpus | SciFact | Average |
|---|---|---|---|---|---|
| AnswerAI ColBERT Small v1 | 33M | 0.0024 | 0.0201 | 0.0047 | 0.0091 |
| ColBERT v2 | 110M | 0.3463 | 0.2356 | 0.5002 | 0.3607 |
| ColBERT MUVERA Micro | 4M | 0.2795 | 0.2348 | 0.4875 | 0.3339 |
| ColBERT MUVERA Small | 33M | 0.3850 | 0.2928 | 0.6357 | 0.4378 |
| GTE ModernColBERT v1 | 149M | 0.0003 | 0.0203 | 0.0013 | 0.0073 |
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.
In reviewing the scores, this model is surprisingly and unreasonably competitive with the original ColBERT v2 model at only 3% of the size!
NanoBEIR_mean| Metric | Value |
|---|---|
| MaxSim_accuracy@1 | 0.535 |
| MaxSim_accuracy@3 | 0.7 |
| MaxSim_accuracy@5 | 0.7431 |
| MaxSim_accuracy@10 | 0.8108 |
| MaxSim_precision@1 | 0.535 |
| MaxSim_precision@3 | 0.3303 |
| MaxSim_precision@5 | 0.2492 |
| MaxSim_precision@10 | 0.1796 |
| MaxSim_recall@1 | 0.3059 |
| MaxSim_recall@3 | 0.4554 |
| MaxSim_recall@5 | 0.5032 |
| MaxSim_recall@10 | 0.5852 |
| MaxSim_ndcg@10 | 0.5599 |
| MaxSim_mrr@10 | 0.6283 |
| MaxSim_map@100 | 0.4818 |
eval_strategy: stepsper_device_train_batch_size: 32learning_rate: 0.0003num_train_epochs: 1warmup_ratio: 0.05bf16: Trueoverwrite_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: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_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}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_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: Falsegradient_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: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional@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"
}
@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}
}