Embedding model choice quietly determines the ceiling on your RAG system's retrieval quality — no amount of prompt engineering on the generation side fixes a retriever that pulls the wrong chunks. And the choice isn't just "which model scores highest": dimension size, quantization, context window, and closed-vs-open tradeoffs each affect cost and latency in ways that compound at scale.
MTEB scores: a useful prior, not a decision oracle
MTEB (Massive Text Embedding Benchmark) remains the standard reference point, but the field is explicit that it's a useful prior, not a decision oracle (PremAI) — benchmark averages across dozens of unrelated tasks don't necessarily predict performance on your specific domain and document type.
Current top managed models:
| Model | MTEB score | Cost | Context window | Max dimensions |
|---|---|---|---|---|
| Cohere embed-v4 | 65.2 | — | 128,000 tokens | — |
| OpenAI text-embedding-3-large | 64.6 | $0.13/1M tokens | 8,192 tokens | 3,072 |
| Voyage-3-large | Outperforms both on domain-specific eval | — | — | — |
Voyage AI's voyage-3-large outperforms OpenAI's text-embedding-3-large by 10.58% at matched dimensions and Cohere v3 by 20.71% on average across 100 datasets spanning law, finance, code, and multilingual content (PremAI). For quality-first enterprise RAG, voyage-3.5 via the direct Voyage SDK takes the top Pareto point on quality-versus-cost (PremAI).
What actually differentiates the major providers
Benchmark score alone misses the operational differences that matter in practice:
- OpenAI is the most battle-tested managed embedding model in production by usage volume. It's outperformed on raw benchmarks by Voyage, Gemini, and Cohere, but the case for staying is ecosystem integration — if your LLM calls, fine-tuning jobs, and assistant APIs already run through OpenAI, the operational simplicity of one vendor is worth something concrete, not just inertia (PremAI).
- Cohere trains specifically for resilience against real-world document noise — spelling errors, formatting inconsistencies, mixed content types, scanned handwriting — which matters if your source documents are messy internal PDFs rather than clean text. Its 128,000-token context window is the standout feature: it's the only managed embedding model that can embed an entire lengthy contract or research paper as a single chunk without splitting (PremAI).
- Voyage wins on quality for domain-specific enterprise retrieval (legal, financial, code), at the cost of being a smaller, less battle-tested ecosystem than OpenAI's.
Note
Dimension size: the hidden cost multiplier
Embedding dimensionality directly multiplies three separate production costs — storage, retrieval latency, and memory footprint for approximate nearest neighbor (ANN) indices — roughly linearly for storage/memory and slightly sublinearly for retrieval latency (FutureAGI). For most RAG applications, 768 or 1024 dimensions is the practical sweet spot (FutureAGI) — going higher rarely buys enough quality to justify the storage and latency cost at scale.
Matryoshka representation learning: truncation without retraining
Matryoshka Representation Learning (MRL) trains embeddings so dimensions can be truncated while preserving the leading, most-informative dimensions — giving you a single model that can output multiple embedding sizes (128, 256, 768, etc.) without retraining (Supermemory). Creating smaller embeddings from the same model cuts compute and latency directly (Supermemory).
The quality retention curve is favorable enough to make truncation a default consideration, not an edge-case optimization:
| Dimensions | Performance retention | Storage reduction |
|---|---|---|
| 1536 | 99.4% of full performance | 40% |
| 768 | 94.6% of full performance | 70% |
| 512 | 94–98% of full performance | ~4x |
| 256 | Above 88% of full performance | ~8x |
At 512 dimensions, models retain 94-98% of full-dimension performance; even at 256 dimensions, retention stays above 88% — a 4x to 8x reduction in storage and similarity computation cost for under 11% retrieval degradation (FutureAGI).
Quantization: the next lever after dimension truncation
Beyond truncation, quantization is widely used in production to balance retrieval quality against compute and memory (FutureAGI):
- Binary quantization cuts storage 32x, with a 2-to-5 point Recall@10 hit on most corpora (FutureAGI).
- Scalar (int8) quantization cuts storage 4x, with a sub-1 point Recall@10 hit (FutureAGI).
Combining int8 or binary quantization with a float rescoring pass on the top candidates is a common pattern: run cheap quantized search for candidate retrieval, then rescore the top-K with full-precision vectors to recover most of the lost recall at a fraction of the compute cost of full-precision search across the whole index.
# Two-stage retrieval: quantized ANN search + float rescoring
candidates = binary_index.search(query_embedding, top_k=200)
rescored = [
(doc, cosine_sim(float_embeddings[doc.id], query_embedding))
for doc in candidates
]
top_results = sorted(rescored, key=lambda x: -x[1])[:10]
A selection process that actually works
- Start with domain-relevant evaluation, not just MTEB leaderboard rank. Build a small labeled eval set from your actual document corpus and query patterns before comparing models.
- Default to 768–1024 dimensions unless a specific benchmark shows meaningfully better retrieval at higher dimensions for your domain.
- Use Matryoshka-capable models where possible so you can truncate dimensions later without re-embedding your entire corpus.
- Apply quantization + rescoring at scale — binary/int8 quantization for the bulk index, float rescoring on the shortlist, once your corpus grows past the point where full-precision search latency becomes a bottleneck.
- Weight context window against your chunking strategy. If your documents are long and you want to avoid aggressive chunking, Cohere's 128K window is a genuine structural advantage over 8K-token alternatives.
Warning
Actionable takeaway
Treat embedding model selection as a three-variable optimization — retrieval quality on your actual data, dimension/storage cost, and context window fit for your document types — not a single benchmark-score comparison. Start with a domain-relevant eval set, default to 768–1024 dimensions with a Matryoshka-capable model for future flexibility, and layer in quantization with rescoring once index size makes full-precision search a genuine latency bottleneck rather than a premature optimization.
Sources: PremAI: Best Embedding Models for RAG 2026, FutureAGI: Evaluating Embedding Models in 2026, Supermemory: Matryoshka Representation Learning Explained
Get new posts as they publish
No spam — just the next post, straight to your inbox.