Model reference · open weights

mxbai-edge-colbert

Available as managed deployment Embeddings mixedbread-ai Embeddings 2 variants 3k dl/mo

mxbai-edge-colbert is an open-weight embedding model from mixedbread-ai. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Makermixedbread-ai
TypeEmbedding models
TaskEmbeddings
Parameters (lead)32M
Context7999 tokens
Runs withPyLate
Released2025-10-13
Popularity3k downloads / month
LicenceOpen weights

About

What mxbai-edge-colbert is

This model is a lightweight, 32 million parameter ColBERT with a projection dimension of 64. It is built on top of Ettin-32M, meaning it benefits from all of ModernBERT's architectural efficiencies. Despite this extreme efficiency, it is the best-performer "edge-sized" retriever, outperforming ColBERTv2 and many models with over 10 times more parameters. It can create multi-vector representations for documents of up to 32,000 tokens and is fully compatible with the PyLate library.

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("mixedbread-ai/mxbai-edge-colbert-v0-32m")

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, 64) (18, 64)

# MaxSim late-interaction scoring (higher is more relevant)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[11.2081, 11.5308, 11.4104, 11.4756]])

PyLate

To use this model, you first need to install PyLate:

via uv

# uv
uv add pylate
# uv + pip
uv pip install pylate

or pip

# pip
pip install -U pylate

Once installed, the model is immediately ready to use to generate representations and index documents:

from pylate import indexes, models, retrieve

# Step 1: Load the model
model = models.ColBERT(
    model_name_or_path="mixedbread-ai/mxbai-edge-colbert-v0-32m",
)

# Step 2: Initialize an index (here, PLAID, for larger document collections)
index = indexes.PLAID(
    index_folder="pylate-index",
    index_name="index",
    override=True,  # This overwrites the existing index if any
)

# Step 3: Encode your 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,
)

That's all you need to do to encode a full collection! Your documents are indexed and ready to be queried:

# Step 5.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_embeddings=queries_embeddings,
    k=10,  # Retrieve the top 10 matches for each query
)

Reranking

Thanks to its extreme parameter efficiency, this model is particularly well-suited to being used as a re-ranker following an even more lightweight first stage retrieval, such as static embeding models. Re-ranking is just as straigthforward:

from pylate import rank, models

# Load the model
model = models.ColBERT(
    model_name_or_path="mixedbread-ai/mxbai-edge-colbert-v0-32m",
)

# Define queries and documents
queries = [
    "query A",
    "query B",
]

documents = [
    ["document A", "document B"],
    ["document 1", "document C", "document B"],
]
documents_ids = [
    [1, 2],
    [1, 3, 2],
]

# Embed them
queries_embeddings = model.encode(
    queries,
    is_query=True,
)

documents_embeddings = model.encode(
    documents,
    is_query=False,
)

# Perform reranking
reranked_documents = rank.rerank(
    documents_ids=documents_ids,
    queries_embeddings=queries_embeddings,
    documents_embeddings=documents_embeddings,
)

Evaluation

Results on BEIR

ModelAVGMS MARCOSciFactToucheFiQATREC-COVIDNQDBPedia
Large Models (>100M)
GTE-ModernColBERT-v10.5470.4530.7630.3120.4530.8360.6180.480
ColBERTv20.4880.4560.6930.2630.3560.7330.5620.446
Medium Models (<35M)
mxbai-edge-colbert-v0-32m0.5210.4500.7400.3130.3900.7750.6000.455
answerai-colbert-small-v10.5340.4340.7400.2500.4100.8310.5940.464
bge-small-en-v1.50.5170.4080.7130.2600.4030.7590.5020.400
snowflake-s0.5190.4020.7220.2350.4070.8010.5090.410
Small Models (<25M)

From the published model card. Full card on the HuggingFace links in the sidebar.

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.280
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@30.400
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@50.520
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@100.760
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@10.280
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@30.153
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@50.132
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@100.114
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@10.132
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@30.196
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@50.269
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@100.432
Py Late Information RetrievalNanoClimateFEVERMaxsim Ndcg@100.321
Py Late Information RetrievalNanoClimateFEVERMaxsim Mrr@100.387
Py Late Information RetrievalNanoClimateFEVERMaxsim Map@1000.244
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@10.780
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@30.920
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@50.940
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@100.980
Py Late Information RetrievalNanoDBPediaMaxsim Precision@10.780
Py Late Information RetrievalNanoDBPediaMaxsim Precision@30.647
Py Late Information RetrievalNanoDBPediaMaxsim Precision@50.600
Py Late Information RetrievalNanoDBPediaMaxsim Precision@100.530
Py Late Information RetrievalNanoDBPediaMaxsim Recall@10.112

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys mxbai-edge-colbert for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (mxbai-edge-colbert below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/embeddings \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"mxbai-edge-colbert","input":"text to embed"}'

Create an account — your API key is available in the console. 5M tokens/month currently included with every new account at launch.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms