Repository navigation
Add topk-io/Iso-ModernColBERT model meta - #4812
Conversation
Closes embeddings-benchmark#4758. Adds the ModelMeta entry for topk-io/Iso-ModernColBERT, a PyLate/ColBERT late-interaction model that is an isotropically corrected version of lightonai/GTE-ModernColBERT-v1 (same architecture, 149M params, 128-dim multi-vectors, 8192 max tokens, Apache-2.0). Metadata sourced from the HF model card and API (revision, license, base model, training data).
|
Can you run tasks to reproduce results? |
|
I checked this branch again and did a best-effort local run. What passed locally: .venv312/bin/python - <<'PY'
from mteb.models.model_implementations import MODEL_REGISTRY
meta = MODEL_REGISTRY['topk-io/Iso-ModernColBERT']
print(meta.name)
print(meta.revision)
print(meta.framework)
print(meta.modalities)
print(meta.extra_requirements_groups)
print(meta.loader)
PYOutput confirms the registry entry resolves to I then tried to run the relevant small retrieval task: .venv312/bin/mteb run \
-m topk-io/Iso-ModernColBERT \
-t NanoMSMARCORetrieval \
--eval-splits train \
--batch-size 64 \
--output-folder /tmp/mteb-iso-moderncolbert-results \
--verbosity 2 \
--no-co2-tracker \
--overwrite-strategy alwaysThat run got through model loading, task loading, corpus standardization, and entered the PyLate Also, the currently failing lowest-deps CI job looks unrelated to this PR: it fails while downloading |
Yes, you don't need to run it on train |
|
Thanks, that makes sense. I reran this on a proper non-train eval split instead of using the Nano train split. Completed local run: import mteb
model = mteb.get_model("topk-io/Iso-ModernColBERT", device="mps")
evaluation = mteb.MTEB(tasks=[mteb.get_task("NFCorpus")])
results = evaluation.run(
model,
eval_splits=["test"],
output_folder="/tmp/mteb-iso-moderncolbert-nfcorpus-mps",
overwrite_results=True,
co2_tracker=False,
encode_kwargs={"batch_size": 16},
)Run details:
Key metrics from
So the registered |
|
They report |
|
I checked a few likely causes. I do not see evidence that the registry entry is loading the wrong revision/model, but I also cannot exactly reproduce the model-card number from the MTEB path. What I verified locally:
model = mteb.get_model(
"topk-io/Iso-ModernColBERT",
device="mps",
model_kwargs={"torch_dtype": torch.bfloat16},
)
# dtype torch.bfloat16, query_length=32, document_length=300
# NFCorpus/test main_score remains ~0.37
So my best guess is that this is a small harness/data-path difference rather than a metadata issue: TopK's internal BEIR evaluation vs MTEB's |
Samoed
left a comment
There was a problem hiding this comment.
Gap is small and I think we can merge.
Summary
Closes #4758.
Adds the
ModelMetaentry fortopk-io/Iso-ModernColBERTtomteb/models/model_implementations/pylate_models.py.Iso-ModernColBERT is a PyLate / ColBERT late-interaction (multi-vector) model —
an isotropically corrected version of
lightonai/GTE-ModernColBERT-v1builtfor faster
bf16inference at near-identical accuracy. It loads via the sameMultiVectorModelloader as the other ModernColBERT entries.Metadata sources
All fields were taken from the model card + HF API (not guessed):
a43b93e62b11ff205b7f935c1ce2207bfed2d283(currentmain)apache-2.0, languageseng-Latnlightonai/GTE-ModernColBERT-v1(HFbase_model), so itshares its architecture: 149,015,808 params, 128-dim embeddings, 8192 tokens
lightonai/ms-marco-en-bge-gemma(carddatasets)release_datefrom the repo creation date (2026-05-27)Verification
ruff check/ruff format --check: cleanpytest tests/test_models/test_model_meta.py -k "name_and_revision or hashable or without_prefix": 731 passed