Model reference · open weights
merged-mpnet is an open-weight embedding model from sentence-transformers. merged-mpnet-base (FP32) weighs 219 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the sentence-transformers/merged-mpnet-base model card, 2026-11-03
What it is
| Released by | sentence-transformers |
|---|---|
| Released | 2026-11-02 |
| Parameters | 109M |
| VRAM | 219 MB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
This is a Sentence Transformer model created by a 50/50 linear merge of all-mpnet-base-v2 and multi-qa-mpnet-base-cos-v1, using the SentenceTransformer.merge method from the sentence-transformers library. It maps sentences and paragraphs to 768-dimensional dense vectors for semantic search, clustering, and semantic similarity.
The merged model scores above the average of its two parents on 10 of the 13 NanoBEIR datasets, including 5 where it beats both. It achieves a mean nDCG@10 of 0.5823, compared with 0.5749 for all-mpnet-base-v2 and 0.5712 for multi-qa-mpnet-base-cos-v1, using the same inference settings for all three models.
On the nine datasets evaluated after candidate selection, the merge scores 0.5517, compared with 0.5422 and 0.5384 for its parents.
See Model Creation for the full generation script.
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'MPNetModel'})
(1): Pooling({'embedding_dimension': 768, 'pooling_mode': 'mean', 'include_prompt': True})
(2): Normalize({'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/merged-mpnet-base")
queries = ['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.',
'Saturn, famous for its rings, is sometimes mistaken for the Red Planet.',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# (1, 768) (3, 768)
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.4703, 0.7748, 0.6875]])
NanoBEIREvaluator on all 13 datasets.The parent models were evaluated with the same prompts and length limits.
| Dataset | merged-mpnet-base | all-mpnet-base-v2 | multi-qa-mpnet-base-cos-v1 |
|---|---|---|---|
| msmarco | 0.609863 | 0.634465 | 0.654148 |
| nq | 0.665488 | 0.671772 | 0.662020 |
| fiqa2018 | 0.588147 | 0.583997 | 0.582674 |
| nfcorpus | 0.333769 | 0.315611 | 0.313411 |
| scidocs | 0.404500 | 0.454587 | 0.338733 |
| arguana | 0.572705 | 0.529703 | 0.557431 |
| dbpedia | 0.537960 | 0.538413 | 0.555685 |
| quoraretrieval | 0.919392 | 0.921402 | 0.908255 |
| touche2020 | 0.483061 | 0.487039 | 0.450271 |
| climatefever | 0.310998 | 0.243224 | 0.333320 |
| fever | 0.764325 | 0.763131 | 0.745699 |
| hotpotqa | 0.638921 | 0.626516 | 0.642700 |
| scifact | 0.741368 | 0.703311 | 0.680758 |
| mean | 0.582346 | 0.574859 | 0.571162 |
The complete MPNet backbone was merged in fp32 with equal weights. Mean pooling and L2 normalization are shared by both parents. The maximum input length is 512 tokens, without any additional training.
This is all it took:
# pip install "sentence-transformers[merge]"
from sentence_transformers import SentenceTransformer
models = [
SentenceTransformer("sentence-transformers/all-mpnet-base-v2"),
SentenceTransformer("sentence-transformers/multi-qa-mpnet-base-cos-v1"),
]
for model in models:
model.max_seq_length = 512
model = SentenceTransformer.merge(models, method="linear", parameters={"weight": [0.5, 0.5]}, dtype="float32")
model.similarity_fn_name = "cosine"
model.save_pretrained("merged-mpnet-base")
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.