
Don't Guess Your Embedding Model: Read the MTEB Leaderboard First
Chris Harper
3 min read
Jul 8, 2026 · 12:04 UTC
TL;DR: MTEB (Massive Text Embedding Benchmark) is the field-standard leaderboard with 5,000+ model submissions across 7 task categories — read the Retrieval tab before picking an embedding model for RAG; benchmark on your own data in 30 lines of Python.
What you'll be able to do after this:
- Read the MTEB leaderboard's task tabs to find the best model for YOUR specific use case (retrieval vs. classification vs. clustering)
- Trade off accuracy, latency, dimension count, and license for your constraints
- Benchmark any candidate embedding model against your own private corpus in under 30 lines of Python
Why the leaderboard exists
Every embedding model claims to be best at "semantic search." MTEB is the field's answer: a standardized suite of 56 tasks across 7 categories and 112 languages, with a public leaderboard that lets you compare models on the same ground. The HuggingFace MTEB leaderboard is step zero before picking an embedding model.
How to read it
1. Open the right tab. The default view shows average across all tasks. For RAG, click Retrieval. For document classification, click Classification. A model that tops the overall leaderboard may rank 15th for retrieval specifically — always filter to your task type.
2. Filter by practical constraints:
- Max tokens — does it handle your chunk size?
all-MiniLMcaps at 256 tokens; larger models go to 8,192+ - Embedding dimensions — 768 is a sweet spot; 1,536+ improves quality but doubles vector store size and memory
- License — Apache 2.0 vs. research-only matters for production deployments
3. Top retrieval picks (July 2026):
| Model | MTEB Retrieval | Context | License |
|---|---|---|---|
| BGE-M3 (BAAI) | ~63 avg | 8,192 tokens | Apache 2.0 |
| text-embedding-3-large (OpenAI) | 64.6 | 8,191 tokens | Commercial |
| Jina v5-text-small | strong | 8,192 tokens | Apache 2.0 |
| Qwen3-Embedding-8B | 70.58 overall | 8,192 tokens | Apache 2.0 |
Benchmark on YOUR data
Generic MTEB scores don't guarantee performance on your domain (legal, medical, code, support tickets all behave differently). Run MTEB's retrieval evaluation against your own corpus:
from mteb import MTEB
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("BAAI/bge-m3")
# Swap NFCorpus for any MTEB task, or plug in your own dataset
evaluation = MTEB(tasks=["NFCorpus"])
results = evaluation.run(model, output_folder="results/bge-m3/")
To compare two candidates side by side:
for model_name in ["BAAI/bge-m3", "sentence-transformers/all-mpnet-base-v2"]:
model = SentenceTransformer(model_name)
MTEB(tasks=["NFCorpus"]).run(model, output_folder=f"results/{model_name}/")
The video below walks through this end-to-end on a real dataset. It's the best 20-minute starting point for calibrating which MTEB score actually predicts performance on your corpus — watch it before committing to a model.
Sources: MTEB Leaderboard (Hugging Face) · Benchmark Embedding Models — MTEB Introduction (YouTube) · MTEB Leaderboard: User Guide & Best Practices (HuggingFace blog) · Top Embedding Models for RAG (Modal)