Skip to content
RAG Explained Better

How to Choose an Embedding Model for RAG

Benchmark rank is not selection criteria. Dimension, domain, cost and latency compared on a retrieval task.

The short answer

There is no single best embedding model for RAG. Public leaderboards such as MTEB shortlist candidates; they do not pick the model for your corpus. Match language, domain vocabulary, modality, dimension budget and latency to a candidate, then score it on a labelled sample of your retrieval queries. The one question that decides it is below. (As of July 2026.)

What is the best embedding model for RAG?

There is none that wins every corpus. Zilliz’s 2026 embedding-model comparison (Cheney Zhang, March 2026) states the result of their four production-style scenarios outright: no single model won everything. Weaviate’s guide to choosing an embedding model treats the Massive Text Embedding Benchmark (MTEB) as a landscape overview — useful, but self-reported, possibly inflated by training on public benchmark data, and not guaranteed to match your documents. Qdrant (Kacper Łukawski, July 2025) frames the same problem as multi-objective: the model that tops a public retrieval score can still be unusable on latency, memory, or budget.

Candidate families you will see on the top-ranking results for best embedding model for rag include general API embedders (OpenAI text-embedding-3-*, Cohere Embed, Voyage, Gemini Embedding), strong open retrieval models (BAAI BGE-M3, Snowflake Arctic Embed, Jina embeddings, Qwen3-Embedding), and small local baselines such as all-MiniLM-L6-v2. This page does not invent current MTEB ranks — leaderboards move monthly; open the Retrieval task tab on the date you decide, then validate on your set. What an embedding is, and why it caps retrieval, lives on embeddings in RAG; model-family properties live on embedding models for retrieval.

How do you choose an embedding model for RAG?

Every “top five models” roundup buries the decision under a ranked list. It usually reduces to one question: does this candidate match your retrieval distribution better than it ranks on a public leaderboard?

  • Distribution match → keep testing that family. Same language(s) as the corpus, vocabulary that covers your domain terms, modality that matches what you index (text only vs images or PDFs as images), and a max-token limit that fits your chunk size. Weaviate’s step 1 is exactly this: name modality, subject domain, and deployment mode before you open MTEB.
  • Leaderboard-only pick → expect silent miss. A model that tops English academic retrieval can still mangle medical acronyms, drop non-English queries, or refuse your image bytes. Domain failure after a fair dense baseline is domain adaptation; language coverage is multilingual RAG.

Ask that first. Most of the time it answers before you reach the factor table.

What factors matter when choosing an embedding model for RAG?

When the deciding question lands in the middle, weight the factors that actually change the index. This is a directional comparison, not a benchmark — the ratings say which constraint usually dominates, and why. No invented MTEB ranks or latency races.

Embedding-model selection factors for RAG — the row that usually decides it is marked
FactorWeight whenWhy
Domain / vocabulary fitDeciderIf the embedder cannot represent your jargon, no leaderboard score recovers the miss (Azure RAG guidance on OOV splits; Galileo on encoder impact).
Language coverageHigh if non-English or cross-lingualEnglish-only models (e.g. classic MiniLM demos) mis-embed other languages; Qdrant stresses tokenizer support before model size.
Dimensions vs storageHigh at corpus scaleGalileo: storage cost scales with dimension; ANN compare-time grows with width. Shrink only when measured recall loss is acceptable — see dimensions and Matryoshka.
Max tokens vs chunk sizeMediumWeaviate: typical RAG paragraph chunks often fit models with ~512 max tokens; larger windows matter when you embed longer units on purpose.
Open-source vs APIHigh for privacy / offline / opsAPI = no host ops, text leaves the box; self-host = control and recurring GPU/CPU cost (Galileo private-vs-public; ZenML open-vs-proprietary).
Latency and $ per embedHigh in real-time pathsQdrant: a ~1% quality gain can be worthless at ~10× resource cost. Site baseline: OpenAI lists text-embedding-3-small at 1536 dims and $0.02 / 1M tokens — verify before you budget (pipeline build; pipeline cost).

Read the first row. If your problem lives there — domain vocabulary the general model never learned — swapping to the next MTEB name rarely fixes it.

How should you evaluate an embedding model on your own data?

Build a small labelled retrieval set and score candidates with ranking metrics — not with leaderboard position. Weaviate recommends on the order of 50–100 hand-labelled objects to start, and shows that two models can tie on average precision/recall while returning different rankings (their pastry walkthrough with text-embedding-3-small vs text-embedding-3-large). Qdrant (2025) is blunter: even dozens of well-curated query→relevant-document pairs beat having none; a few hundred is a solid production start; score with precision@k, MRR, or NDCG (libraries such as ranx). MongoDB’s embedding-model tutorial (Apoorva Joshi, November 2024) adds embedding latency beside retrieval quality, and treats LLM-as-judge as needing on the order of 50+ serious test questions — not three demo prompts.

Hold the chunker, retriever, and top-k fixed when you swap only the embedder. Public-vs-private benchmark literacy is on RAG benchmarks; the wider evaluation spine is evaluation.

When is the MTEB leaderboard useful for RAG?

MTEB is useful to shortlist retrieval-task candidates and to compare published model size, dimensions, and max tokens — not as the final purchase score. Weaviate tells you to open the Retrieval task tab (not a generic “all tasks” average) and to stay skeptical of self-reported numbers. Zilliz (March 2026) argues MTEB is largely single-language and text-centric: it does not tell you how a model behaves on cross-modal retrieval, hard cross-lingual search, long-document needle finding, or quality after dimension compression. MongoDB’s later tutorial points at RTEB (Retrieval Text Embedding Benchmark) as a fairness-minded shortlist that mixes open and private datasets — still a shortlist, still requiring your own eval. Leaderboards move monthly; as of July 2026, re-check the live board on the day you decide.

Should you use an open-source or API embedding model for RAG?

Use an API embedder when text may leave your environment and you want zero model-hosting ops; use an open-source embedder when privacy, offline operation, cost at scale, or fine-tune control dominate. Galileo’s private-vs-public framing: hosted APIs buy availability and painless model upgrades, at the price of rate limits and data leaving your network. ZenML (October 2025) calls the same split a strategic trade-off between managed convenience and operational flexibility. Qdrant’s resource warning still applies: the “best” model you cannot afford to run is not a choice.

Concrete baselines already used elsewhere on this site: hosted text-embedding-3-small (1536 dims, OpenAI listed $0.02 / 1M tokens) when you want it working today; local all-MiniLM-L6-v2 (384 dims, $0 plus your CPU/GPU time) when cost or privacy wins — see building a RAG pipeline. Vector stores that hold either class of vector include Weaviate, Pinecone, Qdrant and Milvus; store choice is not this page’s job.

When should you shrink dimensions or fine-tune embeddings for your domain?

Shrink dimensions when storage and compare-cost dominate and a measured recall drop is still acceptable; fine-tune or domain-adapt when a fair general model still fails your jargon. Depth for truncation and Matryoshka Representation Learning is embedding dimensions. Depth for recovering domain vocabulary is fine-tuning embeddings for your domain. Weaviate treats fine-tuning as an optional last squeeze after an off-the-shelf model is close. Qdrant notes that quantization, Matryoshka truncation, hybrid search, or a reranker often beat jumping to a larger embedder — see hybrid search and reranking.

Changing the embedding model (or its preprocessing contract) means re-embedding the whole corpus — do not mix generations in one index. That migration cost is embedding drift.

What is the best embedding model for RAG?

There is no single best model for every corpus. MTEB and sibling leaderboards are useful to shortlist retrieval-task candidates; they are not a purchase decision. Pick models that match your languages, domain vocabulary, modality, and dimension budget, then score them on a labelled sample of your own queries. Leaderboards move monthly — check the live Retrieval tab as of your decision date.

How do you choose an embedding model for RAG?

Ask whether the candidate matches your retrieval distribution better than it ranks on a public leaderboard. Distribution means languages, domain terms, modality (text vs images), and whether max tokens fit your chunk size. Weaviate’s selection guide starts with use case (modality, domain, deployment) before MTEB; Qdrant treats the choice as multi-objective across quality, latency, memory, and cost.

Is the MTEB leaderboard enough to pick an embedding model?

No. Use MTEB (Retrieval task) to shortlist and to compare published size, dimensions, and max tokens. Do not treat rank as the final score: Weaviate notes results are self-reported and may not match your data; Zilliz (2026) argues MTEB misses cross-modal, hard cross-lingual, long-document needle, and dimension-compression behaviour. Always validate on your labelled set.

Should I use an open-source or API embedding model?

Use an API when text may leave your box and you want zero hosting ops. Use open-source when privacy, offline use, cost at scale, or fine-tune control matter more. Galileo frames hosted APIs as availability without model-ops; ZenML calls it convenience versus control. A model that is slightly better on a benchmark but roughly 10× costlier to run is often the wrong production choice (Qdrant, 2025).

How many labelled examples do I need to evaluate an embedding model?

Start small and serious. Weaviate suggests on the order of 50–100 hand-labelled objects to begin; Qdrant says even dozens beat nothing and a few hundred well-curated query–document pairs is a solid start. Score with precision@k, recall, MRR, or NDCG while holding chunking and top-k fixed. MongoDB’s tutorial treats LLM-as-judge evaluations as needing roughly 50+ real test questions, not a handful of demos.