The shortlist
The 2026 landscape collapses to four practical buckets. Pick from the bucket that matches your privacy, latency, and budget constraints — never pick by leaderboard score alone.
1. Hosted, top-tier (closed)
- OpenAI text-embedding-3-large — 3072 dim, strong on English and code, good multilingual
- Voyage AI voyage-3-large — 1024 dim default, frequently the best on niche-domain MTEB tasks
- Cohere embed-english-v3 / embed-multilingual-v3 — 1024 dim, supports input-type hint (query vs document)
2. Local, top-quality
- BGE-M3 — 1024 dim, multilingual, supports dense + sparse + multi-vector outputs in one model. cwkPippa runs this via Ollama.
- BGE-large-en-v1.5 — 1024 dim, English-only, very strong
- Nomic Embed Text v2 — 768 dim, Apache-licensed, runs on CPU
3. Local, small/fast
- BGE-small-en-v1.5 — 384 dim, ~30 MB, edge-friendly
- all-MiniLM-L6-v2 — 384 dim, the classic sentence-transformer baseline
4. Specialized
- jina-embeddings-v3 — long-context (8K tokens) for document-level embedding
- VoyageCode-2 / Jina-code-v2 — fine-tuned on code
Decision rules that beat MTEB scores
- Privacy or air-gapped → local only. No API call, no decision needed.
- Multilingual users → BGE-M3 or Voyage multilingual. English-only models drop hard on Korean / Japanese / Arabic.
- Long documents (over 1k tokens) → Jina v3 or chunking strategy. Otherwise the front of the document dominates.
- Code search → use a code-fine-tuned model. General-purpose models miss API-shaped queries.