Model reference · open weights

modernbert-embed-large

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

modernbert-embed-large is an open-weight embedding model from lightonai. modernbert-embed-large (FP32) weighs 790 MB; the smallest configuration that runs it is RTX 3060 12 GB.

  • ModernBERT-embed-large is a 395M parameter sentence-similarity embedding model developed by lightonai.
  • It supports English text with an 8192 token context length and is licensed under apache-2.0.
  • The model is fine-tuned on Nomic Embed datasets and supports Matryoshka Representation Learning dimensions of 256 to reduce memory usage.

Summary of the lightonai/modernbert-embed-large model card, 2026-10-01

What it is

Released bylightonai
Released2025-01-13
Parameters395M
VRAM790 MB for the weights

What it runs on

Memory and cards for modernbert-embed-large (FP32)

790 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 modernbert-embed-large

Read the model card

ModernBERT-embed-large is an embedding model trained from ModernBERT-large, bringing the new advances of ModernBERT to embeddings!

Indeed, ModernBERT is a base model trained for Masked Language Modeling and can not directly be used to perform tasks such as retrieval without further fine-tuning.

ModernBERT-embed-large is fine-tuned on the Nomic Embed weakly-supervised and supervised datasets and also supports Matryoshka Representation Learning dimensions of 256 to reduce memory with minimal performance loss.

Performance

ModelDimensionsAverage (56)Classification (12)Clustering (11)Pair Classification (3)Reranking (4)Retrieval (15)STS (10)Summarization (1)
nomic-embed-text-v1.576862.2873.5543.9384.6155.7853.0181.9430.4
modernbert-embed-base76862.6274.3144.9883.9656.4252.8981.7831.39
modernbert-embed-large102463,8475.0346.0485.3157.6454.3683.8028.31
nomic-embed-text-v1.525661.0472.143.1684.0955.1850.8181.3430.05
modernbert-embed-base25661.1772.4043.8283.4555.6950.6281.1231.27
modernbert-embed-large25662.4373.6044.5984.8957.0851.7283.4629.03

Usage

You can use these models directly with the latest transformers release and requires installing transformers>=4.48.0:

pip install transformers>=4.48.0

Reminder, this model is trained similarly to Nomic Embed and REQUIRES prefixes to be added to the input. For more information, see the instructions in Nomic Embed.

Most use cases, adding search_query: to the query and search_document: to the documents will be sufficient.

Sentence Transformers

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("lightonai/modernbert-embed-large")

query_embeddings = model.encode([
    "search_query: What is TSNE?",
    "search_query: Who is Laurens van der Maaten?",
])
doc_embeddings = model.encode([
    "search_document: TSNE is a dimensionality reduction algorithm created by Laurens van Der Maaten",
])
print(query_embeddings.shape, doc_embeddings.shape)
# (2, 1024) (1, 1024)

similarities = model.similarity(query_embeddings, doc_embeddings)
print(similarities)
# tensor([[0.6518],
#         [0.4237]])

In Sentence Transformers, you can truncate embeddings to a smaller dimension by using the truncate_dim parameter when loading the SentenceTransformer model.

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("lightonai/modernbert-embed-large", truncate_dim=256)

query_embeddings = model.encode([
    "search_query: What is TSNE?",
    "search_query: Who is Laurens van der Maaten?",
])
doc_embeddings = model.encode([
    "search_document: TSNE is a dimensionality reduction algorithm created by Laurens van Der Maaten",
])
print(query_embeddings.shape, doc_embeddings.shape)
# (2, 256) (1, 256)

similarities = model.similarity(query_embeddings, doc_embeddings)
print(similarities)
# tensor([[0.6835],
#         [0.3982]])

Note the small differences compared to the full 1024-dimensional similarities.

Transformers

import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]
    input_mask_expanded = (
        attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    )
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(
        input_mask_expanded.sum(1), min=1e-9
    )

queries = ["search_query: What is TSNE?", "search_query: Who is Laurens van der Maaten?"]
documents = ["search_document: TSNE is a dimensionality reduction algorithm created by Laurens van Der Maaten"]

tokenizer = AutoTokenizer.from_pretrained("lightonai/modernbert-embed-large")
model = AutoModel.from_pretrained("lightonai/modernbert-embed-large")

encoded_queries = tokenizer(queries, padding=True, truncation=True, return_tensors="pt")
encoded_documents = tokenizer(documents, padding=True, truncation=True, return_tensors="pt")

with torch.no_grad():
    queries_outputs = model(**encoded_queries)
    documents_outputs = model(**encoded_documents)

query_embeddings = mean_pooling(queries_outputs, encoded_queries["attention_mask"])
query_embeddings = F.normalize(query_embeddings, p=2, dim=1)
doc_embeddings = mean_pooling(documents_outputs, encoded_documents["attention_mask"])
doc_embeddings = F.normalize(doc_embeddings, p=2, dim=1)
print(query_embeddings.shape, doc_embeddings.shape)
# torch.Size([2, 1024]) torch.Size([1, 1024])

similarities = query_embeddings @ doc_embeddings.T
print(similarities)
# tensor([[0.6518],
#         [0.4237]])

In transformers, you can truncate embeddings to a smaller dimension by slicing the mean pooled embeddings, prior to normalization.

import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel

def mean_poo

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
ClassificationMTEB AmazonCounterfactualClassification (en)accuracy76.791
ClassificationMTEB AmazonCounterfactualClassification (en)ap39.796
ClassificationMTEB AmazonCounterfactualClassification (en)f170.696
ClassificationMTEB AmazonPolarityClassificationaccuracy94.195
ClassificationMTEB AmazonPolarityClassificationap91.751
ClassificationMTEB AmazonPolarityClassificationf194.192
ClassificationMTEB AmazonReviewsClassification (en)accuracy47.664
ClassificationMTEB AmazonReviewsClassification (en)f146.933
RetrievalMTEB ArguAnamap_at_125.178
RetrievalMTEB ArguAnamap_at_1041.088
RetrievalMTEB ArguAnamap_at_10042.143
RetrievalMTEB ArguAnamap_at_100042.152
RetrievalMTEB ArguAnamap_at_2041.946
RetrievalMTEB ArguAnamap_at_336.048
RetrievalMTEB ArguAnamap_at_538.619
RetrievalMTEB ArguAnamrr_at_125.533
RetrievalMTEB ArguAnamrr_at_1041.238
RetrievalMTEB ArguAnamrr_at_10042.293
RetrievalMTEB ArguAnamrr_at_100042.302
RetrievalMTEB ArguAnamrr_at_2042.096
RetrievalMTEB ArguAnamrr_at_336.261
RetrievalMTEB ArguAnamrr_at_538.797
RetrievalMTEB ArguAnandcg_at_125.178
RetrievalMTEB ArguAnandcg_at_1050.352
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms