Benchmarks Fresh 🌱
MTEB benchmark scores and performance characteristics across different dimension settings.
MTEB Scores by Dimension
Detailed Scores
| Dimensions | MTEB Score | Delta from Max | Recommended |
|---|---|---|---|
| 3072 | Top (default) | Baseline | Yes - highest quality |
| 2048 | 68.16 | -0.01 | No - use 1536 instead |
| 1536 | 68.17 | 0.00 | Yes - best efficiency |
| 768 | 67.99 | -0.18 | Yes - cost-effective |
| 512 | 67.55 | -0.62 | Only for very large datasets |
| 256 | 66.19 | -1.98 | Budget / prototype only |
| 128 | 63.31 | -4.86 | Minimal / experimental |
Recommended Dimensions
Google recommends 3072, 1536, and 768 for highest quality. The jump from 768 to 1536 is only +0.18, while the jump from 256 to 768 is +1.80 — making 768 the sweet spot for most use cases.
Dimension Selection Guide
Key Observations
1536 matches 3072 in MTEB score (68.17) while using half the storage — a clear winner for most production systems.
768 loses only 0.18 points compared to the maximum, making it the best choice when storage or latency matters.
Steep drop below 512 — the quality drops significantly from 512 (67.55) to 256 (66.19) and even more to 128 (63.31).
2048 is suboptimal — it scores 68.16, slightly below 1536 at 68.17. There is no reason to use 2048 over 1536.
Matryoshka Representation Learning (MRL)
Gemini Embedding 2 uses MRL to enable flexible dimensions. This technique "nests" information hierarchically:
- The first 128 dimensions capture the most important features
- Each additional block of dimensions adds finer-grained detail
- Truncating to lower dimensions preserves the most significant information
Normalization Required
When using dimensions below 3072, normalize your vectors before computing cosine similarity. The MRL truncation preserves semantic meaning but may change vector magnitudes.
Storage and Performance Tradeoffs
| Dimensions | Storage/1M | Index Build Time | Query Latency | Quality |
|---|---|---|---|---|
| 3072 | ~12 GB | Longest | Highest | Best |
| 1536 | ~6 GB | Medium | Medium | Near-best |
| 768 | ~3 GB | Fast | Low | Very good |
| 256 | ~1 GB | Fastest | Lowest | Acceptable |
Practical Recommendations
| Use Case | Recommended Dim | Why |
|---|---|---|
| Production RAG | 768 or 1536 | Best quality/cost balance |
| Semantic search | 1536 | Near-maximum quality |
| Real-time applications | 768 | Low latency |
| Large-scale clustering | 256-512 | Storage efficiency |
| Maximum accuracy | 3072 | Full quality, no tradeoffs |
| Prototyping | 768 | Fast iteration |
See Also
- API Reference —
output_dimensionalityparameter - Pricing — Dimension impact on storage costs
- Text Embeddings — Setting dimensions in code
- Migration — Choosing dimensions when upgrading