Model reference · open weights

GTE-ModernColBERT

Embeddings lightonai Embeddings 1 build Open weights 360k dl/mo

GTE-ModernColBERT is an open-weight embedding model from lightonai. GTE-ModernColBERT-v1 (FP32) weighs 298 MB; the smallest configuration that runs it is RTX 3060 12 GB.

  • GTE-ModernColBERT is a 149M parameter multi-vector embedding model by lightonai designed for sentence-similarity tasks.
  • It uses a ColBERT-style late interaction approach with the MaxSim operator to map English text to sequences of 128-dimensional dense vectors.
  • The model supports a context length of 8192 tokens and is released under the Apache 2.0 license.

Summary of the lightonai/GTE-ModernColBERT-v1 model card, 2026-10-01

What it is

Released bylightonai
Released2025-04-30
Parameters149M
VRAM298 MB for the weights

What it runs on

Memory and cards for GTE-ModernColBERT-v1 (FP32)

298 MBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What lightonai says about GTE-ModernColBERT

Read the model card

This is a multi-vector (ColBERT-style late interaction) embedding model trained on the ms-marco-en-bge-gemma dataset. It maps sentences & paragraphs to sequences of 128-dimensional dense vectors and can be used for semantic textual similarity using the MaxSim operator.

Model Details

Model Description

  • Model Type: Multi-vector embedding model
  • Base model: Alibaba-NLP/gte-modernbert-base
  • Document Length: 300 tokens
  • Query Length: 32 tokens
  • Output Dimensionality: 128 dimensions
  • Similarity Function: MaxSim
  • Training Dataset:
  • Language: English
  • License: Apache 2.0

Document length

GTE-ModernColBERT has been trained with knowledge distillation on MS MARCO with a document length of 300 tokens, explaining its default value for documents length.

However, as illustrated in the ModernBERT paper, ColBERT models can generalize to documents lengths way beyond their training length and GTE-ModernColBERT actually yields results way above SOTA in long-context embedding benchmarks, see LongEmbed results.

Simply change adapt the document length parameter to your needs when loading the model:

model = models.ColBERT(
    model_name_or_path=lightonai/GTE-ModernColBERT-v1,
    document_length=8192,
)

ModernBERT itself has only been trained on 8K context length, but it seems that GTE-ModernColBERT can generalize to even bigger context sizes, though it is not guaranteed so please perform your own benches!

Model Sources

Full Model Architecture

ColBERT(
  (0): Transformer({'max_seq_length': 299, 'do_lower_case': False}) with Transformer model: ModernBertModel
  (1): Dense({'in_features': 768, 'out_features': 128, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
)

Usage

Sentence Transformers

This model can be used with Sentence Transformers as a multi-vector (ColBERT-style late interaction) retriever via the MultiVectorEncoder:

pip install "sentence-transformers>=6.0.0"
from sentence_transformers import MultiVectorEncoder

model = MultiVectorEncoder("lightonai/GTE-ModernColBERT-v1")

query = "Which planet is known as the Red Planet?"
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
    "Jupiter, the largest planet in our solar system, has a prominent red spot.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet.",
]

query_embeddings = model.encode_query(query)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings[0].shape)
# (12, 128) (18, 128)

# MaxSim late-interaction scoring (higher is more relevant)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[11.2577, 11.5113, 11.3457, 11.4518]])

PyLate

First install the PyLate library:

pip install -U pylate

Retrieval

PyLate provides a streamlined interface to index and retrieve documents using ColBERT models. The index leverages the Voyager HNSW index to efficiently handle document embeddings and enable fast retrieval.

Indexing documents

First, load the ColBERT model and initialize the Voyager index, then encode and index your documents:

from pylate import indexes, models, retrieve

# Step 1: Load the ColBERT model
model = models.ColBERT(
    model_name_or_path=pylate_model_id,
)

# Step 2: Initialize the Voyager index
index = indexes.Voyager(
    index_folder="pylate-index",
    index_name="index",
    override=True,  # This overwrites the existing index if any
)

# Step 3: Encode the documents
documents_ids = ["1", "2", "3"]
documents = ["document 1 text", "document 2 text", "document 3 text"]

documents_embeddings = model.encode(
    documents,
    batch_size=32,
    is_query=False,  # Ensure that it is set to False to indicate that these are documents, not queries
    show_progress_bar=True,
)

# Step 4: Add document embeddings to the index by providing embeddings and corresponding ids
index.add_documents(
    documents_ids=documents_ids,
    documents_embeddings=documents_embeddings,
)

Note that you do not have to recreate the index and encode the documents every time. Once you have created an index and added the documents, you can re-use the index later by loading it:

# To load an index, simply instantiate it with the correct folder/name and without overriding it
index = indexes.Voyager(
    index_folder="pylate-index",
    index_name="index",
)
Retrieving top-k documents for queries

Once the documents are indexed, you can retrieve the top-k most relevant documents for a given set of queries. To do so, initialize the ColBERT retriever with the index you want to search in, encode the queries and then retrieve the top-k documents to get the top matches ids and relevance scores:

# Step 1: Initialize the ColBERT retriever
retriever = retrieve.ColBERT(index=index)

# Step 2: Encode the queries
queries_embeddings = model.encode(
    ["query for document 3", "query for document 1"],
    batch_size=32,
    is_query=True,  #  # Ensure that it is set to False to indicate that these are queries
    show_progress_bar=True,
)

# Step 3: Retrieve top-k documents
scores = retriever.retrieve(
    queries_

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

Benchmarks

Reported results

As published on the model card: the maker's own numbers, not measured by AxForge.

TaskDatasetMetricScore
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@10.360
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@30.620
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@50.780
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@100.860
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@10.360
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@30.233
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@50.208
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@100.128
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@10.183
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@30.289
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@50.416
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@100.496
Py Late Information RetrievalNanoClimateFEVERMaxsim Ndcg@100.415
Py Late Information RetrievalNanoClimateFEVERMaxsim Mrr@100.527
Py Late Information RetrievalNanoClimateFEVERMaxsim Map@1000.335
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@10.880
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@30.940
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@50.960
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@100.980
Py Late Information RetrievalNanoDBPediaMaxsim Precision@10.880
Py Late Information RetrievalNanoDBPediaMaxsim Precision@30.713
Py Late Information RetrievalNanoDBPediaMaxsim Precision@50.656
Py Late Information RetrievalNanoDBPediaMaxsim Precision@100.572
Py Late Information RetrievalNanoDBPediaMaxsim Recall@10.118
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms