Model reference · open weights
mxbai-embed-xsmall is an open-weight embedding model from mixedbread-ai. mxbai-embed-xsmall-v1 (FP16) weighs 52 MB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the mixedbread-ai/mxbai-embed-xsmall-v1 model card, 2026-10-01
What it is
| Released by | mixedbread-ai |
|---|---|
| Released | 2024-09-13 |
| Parameters | 24M |
| VRAM | 52 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 model is an open-source English embedding model developed by Mixedbread. It's built upon sentence-transformers/all-MiniLM-L6-v2 and trained with the AnglE loss and Espresso. Read more details in our blog post.
In a bread loaf:
Our model supports both binary quantization and Matryoshka Representation Learning (MRL), allowing for significant efficiency gains:
These optimizations can lead to substantial reductions in infrastructure costs for cloud computing and vector databases. Read more here.
Here are several ways to produce German sentence embeddings using our model.
pip install -U angle-emb
from angle_emb import AnglE
from angle_emb.utils import cosine_similarity
# 1. Specify preferred dimensions
dimensions = 384
# 2. Load model and set pooling strategy to avg
model = AnglE.from_pretrained(
"mixedbread-ai/mxbai-embed-xsmall-v1",
pooling_strategy='avg').cuda()
query = 'A man is eating a piece of bread'
docs = [
query,
"A man is eating food.",
"A man is eating pasta.",
"The girl is carrying a baby.",
"A man is riding a horse.",
]
# 3. Encode
embeddings = model.encode(docs, embedding_size=dimensions)
for doc, emb in zip(docs[1:], embeddings[1:]):
print(f'{query} ||| {doc}', cosine_similarity(embeddings[0], emb))
python -m pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
# 1. Specify preferred dimensions
dimensions = 384
# 2. Load model
model = SentenceTransformer("mixedbread-ai/mxbai-embed-xsmall-v1", truncate_dim=dimensions)
query = 'A man is eating a piece of bread'
docs = [
query,
"A man is eating food.",
"A man is eating pasta.",
"The girl is carrying a baby.",
"A man is riding a horse.",
]
# 3. Encode
embeddings = model.encode(docs)
similarities = cos_sim(embeddings[0], embeddings[1:])
print('similarities:', similarities)
pip install -U transformers
from typing import Dict
import torch
import numpy as np
from transformers import AutoModel, AutoTokenizer
from sentence_transformers.util import cos_sim
def pooling(outputs: torch.Tensor, inputs: Dict) -> np.ndarray:
outputs = torch.sum(
outputs * inputs["attention_mask"][:, :, None], dim=1) / torch.sum(inputs["attention_mask"])
return outputs.detach().cpu().numpy()
# 1. Load model
model_id = 'mixedbread-ai/mxbai-embed-xsmall-v1'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id).cuda()
query = 'A man is eating a piece of bread'
docs = [
query,
"A man is eating food.",
"A man is eating pasta.",
"The girl is carrying a baby.",
"A man is riding a horse.",
]
# 2. Encode
inputs = tokenizer(docs, padding=True, return_tensors='pt')
for k, v in inputs.items():
inputs[k] = v.cuda()
outputs = model(**inputs).last_hidden_state
embeddings = pooling(outputs, inputs)
# 3. Compute similarity scores
similarities = cos_sim(embeddings[0], embeddings[1:])
print('similarities:', similarities)
python -m pip install batched
import uvicorn
import batched
from fastapi import FastAPI
from fastapi.responses import ORJSONResponse
from sentence_transformers import SentenceTransformer
from pydantic import BaseModel
app = FastAPI()
model = SentenceTransformer('mixedbread-ai/mxbai-embed-xsmall-v1')
model.encode = batched.aio.dynamically(model.encode)
class EmbeddingsRequest(BaseModel):
input: str | list[str]
@app.post("/embeddings")
async def embeddings(request: EmbeddingsRequest):
return ORJSONResponse({"embeddings": await model.encode(request.input)})
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
Apache 2.0
@online{xsmall2024mxbai,
title={Every Byte Matters: Introducing mxbai-embed-xsmall-v1},
author={Sean Lee and Julius Lipp and Rui Huang and Darius Koenig},
year={2024},
url={https://www.mixedbread.ai/blog/mxbai-embed-xsmall-v1},
}
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Retrieval | MTEB ArguAna | ndcg_at_1 | 25.180 |
| Retrieval | MTEB ArguAna | ndcg_at_3 | 39.220 |
| Retrieval | MTEB ArguAna | ndcg_at_5 | 43.930 |
| Retrieval | MTEB ArguAna | ndcg_at_10 | 49.580 |
| Retrieval | MTEB ArguAna | ndcg_at_30 | 53.410 |
| Retrieval | MTEB ArguAna | ndcg_at_100 | 54.110 |
| Retrieval | MTEB ArguAna | map_at_1 | 25.180 |
| Retrieval | MTEB ArguAna | map_at_3 | 35.660 |
| Retrieval | MTEB ArguAna | map_at_5 | 38.250 |
| Retrieval | MTEB ArguAna | map_at_10 | 40.580 |
| Retrieval | MTEB ArguAna | map_at_30 | 41.600 |
| Retrieval | MTEB ArguAna | map_at_100 | 41.690 |
| Retrieval | MTEB ArguAna | recall_at_1 | 25.180 |
| Retrieval | MTEB ArguAna | recall_at_3 | 49.570 |
| Retrieval | MTEB ArguAna | recall_at_5 | 61.090 |
| Retrieval | MTEB ArguAna | recall_at_10 | 78.590 |
| Retrieval | MTEB ArguAna | recall_at_30 | 94.030 |
| Retrieval | MTEB ArguAna | recall_at_100 | 97.940 |
| Retrieval | MTEB ArguAna | precision_at_1 | 25.180 |
| Retrieval | MTEB ArguAna | precision_at_3 | 16.520 |
| Retrieval | MTEB ArguAna | precision_at_5 | 12.220 |
| Retrieval | MTEB ArguAna | precision_at_10 | 7.860 |
| Retrieval | MTEB ArguAna | precision_at_30 | 3.130 |
| Retrieval | MTEB ArguAna | precision_at_100 | 0.980 |