The landscape, May 2026:
| Model | Dim | Multilingual | Open weights | Notes |
|---|---|---|---|---|
OpenAI text-embedding-3-small | 1536 (truncatable) | Yes (decent) | No | Cheapest from OpenAI, matryoshka |
OpenAI text-embedding-3-large | 3072 (truncatable) | Yes (good) | No | Strongest OpenAI quality |
Cohere embed-multilingual-v3.0 | 1024 | Excellent — best for Arabic | No | Built explicitly for cross-lingual, supports 100+ languages |
Google text-embedding-004 | 768 | Good | No | Strong on Vertex / Gemini stack |
Voyage voyage-3 | 1024 | Good | No | Often tops MTEB English; pricier |
| BGE-M3 | 1024 | Excellent (100+ langs incl. Arabic) | Yes (MIT) | Multi-functional: dense + sparse + multi-vector in one model |
| E5-mistral-7b-instruct | 4096 | Good | Yes | Strongest open dense embedder, slower |
| GTE-large / GTE-Qwen2 | 1024 / 1536 | English / Multi | Yes | Strong open alternative |
Decision framework
Pick proprietary (OpenAI, Cohere, Voyage, Google) when:
- You need shipping speed, not infra ownership.
- Your scale is below ~10M docs (the cost crossover).
- You don't need data residency / on-prem.
Pick open-source (BGE-M3, E5-mistral) when:
- Data privacy / compliance forbids sending to a vendor (banking, healthcare, regulated industries — IBM watsonx territory).
- Cost-at-scale matters: $0.01/1M tokens × 1B docs = $10K vs. self-hosted ~$0.
- You want to fine-tune on domain pairs.
- Air-gapped deployments.
Arabic / multilingual reality check
Multilingual ≠ good at Arabic. Test these on your corpus:
- Cohere embed-v3 multilingual — built with Arabic explicitly in scope, strong cross-lingual EN↔AR.
- BGE-M3 — open, very strong Arabic, free.
- OpenAI
text-embedding-3-large— decent but lags Cohere on EN↔AR cross-lingual retrieval.
For Arabic specifically, also test:
- Stemming / lemmatization preprocessing for sparse fallback (Arabic has heavy morphology).
- Diacritic normalization at ingest (many docs include diacritics inconsistently).
Benchmarks to actually trust
- MTEB (HuggingFace) — broad, English-heavy. Use as a first filter.
- MIRACL — multilingual retrieval. Use for non-English serious eval.
- BEIR — zero-shot retrieval across 18 datasets. Closer to real-world generalization.
- Your domain eval set — the only one that decides production.