Best Embedding Models in 2026
We benchmarked the top embedding models on retrieval accuracy, latency, and dimensional efficiency using MTEB and custom evaluation sets. This guide covers the text embedding models worth running in production, from hosted APIs to open weights you can self-host.
Searching images, video or audio? See Best Multimodal Embedding Models
Picked a model? Store and search its vectors with MVS: agent-native dense, sparse, and BM25 search on your own object storage. Build starts at $25/mo for up to 1M vectors.
Try MVS: up to 1M vectors from $25/moKey Takeaways
- Mixpeek ranks first, best for teams needing managed embedding generation as part of multimodal search pipelines. Manages the full lifecycle from content ingestion through embedding generation to indexed vector search, eliminating the need to operate separate embedding and vector database infrastructure.
- Google Gemini Embedding is second, best for multimodal retrieval where you need text, images, and video in the same embedding space. The first production-grade embedding model that natively handles text, images, video, audio, and PDFs in a single shared 3072-dimensional vector space with task-type optimization.
- The highest-ranked free option is NVIDIA Nemotron 3 Embed (8B and 1B) at #3. Free open weights (OpenMDW-1.1); GPU hosting costs apply.
- We ranked 15 options on retrieval quality (30%), latency & throughput (25%), dimensional efficiency (25%) and multimodal support (20%). Prices and claims were checked against each vendor's public pages in June 2026.
Skip the comparison? Mixpeek runs embedding on your own data: extraction, indexing, and search in one platform.
How We Evaluated
Evaluated by the Mixpeek engineering team, who build and operate multimodal retrieval infrastructure in production. Last tested June 2026; rankings re-checked when the market shifts, with pricing and claims verified against each vendor's public documentation.
Retrieval Quality
NDCG@10 and recall scores on MTEB v1/v2 benchmark tasks and domain-specific evaluation sets.
Latency & Throughput
Embedding generation speed per document and batch throughput for large-scale indexing.
Dimensional Efficiency
Quality of embeddings relative to vector dimensionality, considering storage and search costs.
Multimodal Support
Ability to embed multiple data types (text, image, video, audio) into a shared vector space.
Quick answer
The short version, before the detail:
- Mixpeekbest for teams needing managed embedding generation as part of multimodal search pipelinesManages the full lifecycle from content ingestion through embedding generation to indexed vector search, eliminating the need to operate separate embedding and vector database infrastructure.
- Google Gemini Embeddingbest for multimodal retrieval where you need text, images, and video in the same embedding spaceThe first production-grade embedding model that natively handles text, images, video, audio, and PDFs in a single shared 3072-dimensional vector space with task-type optimization.
- NVIDIA Nemotron 3 Embed (8B and 1B)best for teams that want top-tier multilingual text retrieval on their own infrastructureThe highest RTEB score reported by any model in this list, with open weights you can host yourself.
- Cohere embed-v4best for search over long documents and pdfs where text and page images should share one indexText, images and mixed PDFs share one embedding space, with a 128K-token context and binary output, from a single API.
- Voyage AI Voyage 4 (voyage-4-large, voyage-4, voyage-4-lite)best for text rag where you want to trade cost against accuracy per side, for example a small query model against a large document modelA shared embedding space across the whole Voyage 4 family, so query and document models can be chosen separately for cost and latency.
- OpenAI text-embedding-3best for teams prioritizing ecosystem maturity and integration simplicity over benchmark scoresUnmatched ecosystem support with first-class integrations in every major AI framework, plus Matryoshka dimension flexibility for cost-quality tradeoffs.
- Jina AI jina-embeddings-v5best for self-hosting teams wanting top-tier quality in a small, open-weight modelAchieves the best MTEB v2 score relative to model size, making it the most practical open-weight model for self-hosted production deployments on a single GPU.
- BAAI BGE-M3best for teams building hybrid retrieval systems who want one model for dense, sparse, and late interactionThe only model that produces dense, sparse, and ColBERT representations simultaneously, enabling three retrieval strategies from a single model forward pass.
Overview
Best Embedding Models: comparison at a glance
| # | Tool | Best for | Pricing | Key differentiator | Main limit |
|---|---|---|---|---|---|
| 1 | Mixpeek | Teams needing managed embedding generation as part of multimodal search pipelines | Usage-based from $0.01/document; self-hosted licensing available | Manages the full lifecycle from content ingestion through embedding generation to indexed vector search, eliminating the need to operate separate embedding and vector database infrastructure. | Managed embedding is part of the pipeline: use MVS standalone for BYO embeddings |
| 2 | Google Gemini Embedding | Multimodal retrieval where you need text, images, and video in the same embedding space | Free tier available; production pricing from $0.00025/1K characters | The first production-grade embedding model that natively handles text, images, video, audio, and PDFs in a single shared 3072-dimensional vector space with task-type optimization. | Requires Google Cloud account for production usage |
| 3 | NVIDIA Nemotron 3 Embed (8B and 1B) | Teams that want top-tier multilingual text retrieval on their own infrastructure | Free open weights (OpenMDW-1.1); GPU hosting costs apply | The highest RTEB score reported by any model in this list, with open weights you can host yourself. | Text-only: no image or video embeddings |
| 4 | Cohere embed-v4 | Search over long documents and PDFs where text and page images should share one index | API usage billed per token; dedicated Model Vault instances for Embed 4 from $4.00/hour (Small) per cohere.com/pricing | Text, images and mixed PDFs share one embedding space, with a 128K-token context and binary output, from a single API. | Dense-only: hybrid search still needs a separate keyword index |
| 5 | Voyage AI Voyage 4 (voyage-4-large, voyage-4, voyage-4-lite) | Text RAG where you want to trade cost against accuracy per side, for example a small query model against a large document model | voyage-4-large $0.12, voyage-4 $0.06, voyage-4-lite $0.02 per 1M tokens after 200M free (docs.voyageai.com/docs/pricing) | A shared embedding space across the whole Voyage 4 family, so query and document models can be chosen separately for cost and latency. | The Voyage 4 text models are text-only; images and video need voyage-multimodal-3.5 |
| 6 | OpenAI text-embedding-3 | Teams prioritizing ecosystem maturity and integration simplicity over benchmark scores | text-embedding-3-small at $0.02/1M tokens; large at $0.13/1M tokens | Unmatched ecosystem support with first-class integrations in every major AI framework, plus Matryoshka dimension flexibility for cost-quality tradeoffs. | No longer top-ranked on MTEB benchmarks |
| 7 | Jina AI jina-embeddings-v5 | Self-hosting teams wanting top-tier quality in a small, open-weight model | Free tier with 1M tokens/month; API from $0.02/1M tokens | Achieves the best MTEB v2 score relative to model size, making it the most practical open-weight model for self-hosted production deployments on a single GPU. | Smaller community and fewer integrations than OpenAI |
| 8 | BAAI BGE-M3 | Teams building hybrid retrieval systems who want one model for dense, sparse, and late interaction | Free and open-source; hosting costs vary by infrastructure | The only model that produces dense, sparse, and ColBERT representations simultaneously, enabling three retrieval strategies from a single model forward pass. | Larger model footprint than single-representation alternatives |
| 9 | Alibaba Qwen3-Embedding | Multilingual applications and long-document retrieval where non-English quality is critical | Free and open-weight; self-hosting GPU costs apply | Top-ranked multilingual embedding model with 32K context, delivering the best non-English retrieval quality available in an open-weight package. | 8B parameters requires significant GPU resources to self-host |
| 10 | Nomic Embed v2 | Budget-conscious teams and hobby projects needing decent embeddings without GPU costs | Free and open-source; Nomic Atlas API available for hosted usage | The smallest high-quality embedding model at 137M parameters, enabling CPU-only deployments and edge use cases that are impractical with larger models. | Lower absolute quality than larger models on MTEB |
| 11 | Snowflake Arctic Embed | Enterprise RAG pipelines where retrieval quality per compute dollar matters most | Free and open-source; self-hosting costs vary | Purpose-built for retrieval with the best retrieval-accuracy-per-parameter ratio, and native Snowflake Cortex integration for teams already on the Snowflake platform. | Weaker on non-retrieval tasks like classification and clustering |
| 12 | Mistral Embed | Teams already using Mistral LLMs who want a single-vendor AI stack | From $0.10/1M tokens | The natural embedding choice for teams already on the Mistral platform, offering a unified billing and API experience alongside Mistral's LLM models. | Retrieval quality below Voyage AI and Jina v5 on MTEB benchmarks |
| 13 | Amazon Titan Embeddings V2 | AWS-native RAG applications using Bedrock Knowledge Bases | From $0.02/1M tokens via Bedrock on-demand pricing | The only embedding model that runs natively within Bedrock with zero data egress, making it the default choice for AWS-native RAG architectures using Knowledge Bases. | Lower MTEB scores than Voyage, Jina, and Cohere |
| 14 | Mixedbread mxbai-embed-large | Self-hosting teams wanting a compact, high-quality embedding model with quantization support | Free and open-source; managed API in beta | Combines Matryoshka dimension support with binary quantization in a compact 335M model, enabling flexible quality-cost tradeoffs for self-hosted deployments. | Smaller community than Jina or Nomic |
| 15 | Together AI Embeddings | Teams wanting managed open-source embedding inference without self-hosting infrastructure | From $0.008/1M tokens for smaller models; $0.02/1M for larger variants | Managed hosting for top open-source embedding models with OpenAI-compatible endpoints, giving you the quality of open-source models without the infrastructure burden. | No proprietary model: quality depends on underlying open-source model |
The Mental Model That Makes Multimodal Search Click
Jump to
Multimodal AI platform offering configurable embedding models including E5, ArcFace, SigLIP, and Gemini multimodal embeddings. Manages the full pipeline from content to embeddings to indexed vectors with support for ColBERT and SPLADE hybrid retrieval.
Manages the full lifecycle from content ingestion through embedding generation to indexed vector search, eliminating the need to operate separate embedding and vector database infrastructure.
The embedding model is only half the stack: the other half is where the vectors live. If you generate embeddings with Gemini, Cohere, Voyage, Jina, or BGE-M3, MVS, the Mixpeek Vector Store, lets you bring your own vectors and run dense, sparse, and BM25 search directly on object storage (S3/GCS/B2), from $25/mo (up to 1M vectors) and an MCP server so an agent can call it as a tool. If you would rather not run embedding generation yourself, Mixpeek Managed does extraction, indexing, and search over your objects end to end.
Strengths
- +Multiple embedding models configurable per pipeline
- +ColBERT, ColPaLI, and SPLADE for advanced hybrid retrieval
- +Unified embedding space across text, image, video, and audio
- +Handles embedding generation and indexing end-to-end
Limitations
- -Managed embedding is part of the pipeline: use MVS standalone for BYO embeddings
- -Embedding model selection tied to pipeline configuration
- -Requires understanding of retrieval pipeline concepts
Real-World Use Cases
- •E-commerce platforms embedding product images, descriptions, and videos into a unified search index for cross-modal product discovery
- •Digital asset management systems indexing thousands of media files with automatic embedding generation and retrieval pipeline configuration
- •Content recommendation engines combining ColBERT late interaction with dense embeddings for high-precision multimodal matching
- •Enterprise search applications unifying documents, presentations, images, and video into a single searchable embedding space
Choose This When
When you need managed embedding generation across multiple modalities as part of a complete search pipeline, and want to avoid stitching together separate embedding APIs, vector databases, and retrieval logic.
Skip This If
When you only need a standalone embedding API for generating vectors without a full search pipeline, or when you want direct control over your vector database operations.
Integration Example
from mixpeek import Mixpeek
client = Mixpeek(api_key="YOUR_API_KEY")
# Embeddings are generated automatically as part of collection pipelines
collection = client.collections.create(
namespace="my-namespace",
collection_name="products",
feature_extractors=[{
"embedding_model": "gemini-embedding-001",
"input_types": ["text", "image"]
}]
)Google Gemini Embedding
Google's Gemini Embedding model leads the MTEB v2 English leaderboard with a score of 68.32. It's the first truly multimodal embedding model that puts text, images, video, audio, and PDFs into a shared 3072-dimensional vector space. Uses a task-type parameter to optimize embeddings for retrieval, classification, or clustering.
The first production-grade embedding model that natively handles text, images, video, audio, and PDFs in a single shared 3072-dimensional vector space with task-type optimization.
Strengths
- +Highest MTEB v2 English score among API models (68.32)
- +True multimodal: text, image, video, audio, and PDF in one space
- +Task-type parameter optimizes for retrieval vs classification
- +Competitive pricing and generous free tier
Limitations
- -Requires Google Cloud account for production usage
- -No self-hosted option: API only
- -Relatively new, smaller community than OpenAI embeddings
Real-World Use Cases
- •Video platforms embedding video frames, audio tracks, and metadata into a shared space for cross-modal search
- •Research repositories embedding PDFs, figures, and supplementary data for semantic paper discovery
- •Multimodal RAG systems where users query with text and retrieve matching images, documents, and video clips
- •Content moderation pipelines embedding diverse media types for similarity-based duplicate and near-duplicate detection
Choose This When
When you need to embed multiple content types into the same vector space for cross-modal retrieval, or when MTEB v2 benchmark performance matters and you want the top-scoring API model.
Skip This If
When you need self-hosted deployment for data sovereignty, or when your workload is text-only and a cheaper text-specific model would suffice.
Integration Example
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
result = genai.embed_content(
model="models/gemini-embedding-exp-03-07",
content="Your text to embed",
task_type="RETRIEVAL_DOCUMENT"
)
print(f"Dimensions: {len(result['embedding'])}")
# 3072-dimensional vectorNVIDIA Nemotron 3 Embed (8B and 1B)
NVIDIA released Nemotron-3-Embed on 16 July 2026 in two sizes, 8B and 1B, as open weights under the OpenMDW-1.1 license. It is a multilingual text embedding model built for retrieval and RAG, with a 32,768-token input limit and a 4096-dimension output that can be sliced to 2048 or 1024 and re-normalised. NVIDIA's model card reports an average NDCG@10 of 78.46 (8B) and 72.38 (1B) on 16 public RTEB tasks, and says the 8B model was state of the art on the multilingual RTEB leaderboard as of 16 July 2026.
The highest RTEB score reported by any model in this list, with open weights you can host yourself.
Strengths
- +Open weights under OpenMDW-1.1: run it on your own GPUs
- +Top self-reported RTEB score in this list (78.46 NDCG@10, 8B)
- +32,768-token input and sliceable 4096-dimension output
- +A 1B sibling for when 8B does not fit the budget
Limitations
- -Text-only: no image or video embeddings
- -8B parameters needs a data-centre GPU; the card lists A100 and H100
- -4096 dimensions is large to store unless you slice it
Real-World Use Cases
- •Self-hosted multilingual RAG where data cannot leave your cloud
- •High-recall retrieval over long documents using the 32K-token input
- •A second-stage embedder behind a cheaper first-pass model
- •Comparing an open-weight model against API embedders on your own queries
Choose This When
When you want the strongest reported text retrieval and can run an 8B model (or the 1B) on your own GPUs.
Skip This If
When you need images or video in the same space, when you have no GPU capacity, or when a managed API is simpler for your team.
Integration Example
import torch
from sentence_transformers import SentenceTransformer
# As on NVIDIA's model card: bf16 on a CUDA GPU.
model = SentenceTransformer(
"nvidia/Nemotron-3-Embed-8B-BF16",
device="cuda",
model_kwargs={"dtype": torch.bfloat16},
processor_kwargs={"padding_side": "left"},
)
model.max_seq_length = 32768
docs = model.encode_document(["Your document text here"], convert_to_tensor=True)
query = model.encode_query(["your question"], convert_to_tensor=True)
print(model.similarity(query, docs)) # 4096-d; slice to 2048 or 1024 and re-normalise to save storageCohere embed-v4
Cohere's embed-v4.0 embeds text, images and mixed documents such as PDFs into one vector space, with a 128K-token context and a choice of 256, 512, 1024 or 1536 (default) dimensions. It can return float, int8 or binary embeddings from the same call, so storage can be cut sharply without a second model. Available through Cohere's API and as dedicated Model Vault instances.
Text, images and mixed PDFs share one embedding space, with a 128K-token context and binary output, from a single API.
Strengths
- +Text, images and mixed-content PDFs in one embedding space
- +128K-token context window for long documents
- +Selectable dimensions (256 to 1536) and binary or int8 output for cheaper storage
- +Dedicated Model Vault instances for teams that need isolation
Limitations
- -Dense-only: hybrid search still needs a separate keyword index
- -Open weights are not available; self-managed means a Cohere private deployment
- -Dedicated capacity is priced per instance-hour rather than per token
Real-World Use Cases
- •Enterprise document search where PDFs mix text, tables and figures
- •Long-document retrieval using the 128K-token context instead of aggressive chunking
- •Large indexes stored as binary embeddings to cut vector storage
- •Teams that need a dedicated, isolated embedding endpoint
Choose This When
When your documents mix text and images (PDFs, slides, scanned pages) and you want one managed model for both, or when long inputs make chunking painful.
Skip This If
When you need open weights you can run anywhere, or when your workload is text-only and a cheaper text model or an open-weight model fits the budget.
Integration Example
import cohere
co = cohere.ClientV2("YOUR_API_KEY")
response = co.embed(
texts=["Your document text here"],
model="embed-v4.0",
input_type="search_document",
embedding_types=["float", "binary"],
)
dense = response.embeddings.float_[0]
print(f"Dense dims: {len(dense)}")Voyage AI Voyage 4 (voyage-4-large, voyage-4, voyage-4-lite)
Voyage's fourth generation, released January 2026, is a family whose models all share one embedding space: you can embed documents with voyage-4-large and queries with voyage-4-lite, and the vectors stay comparable. voyage-4-large is a mixture-of-experts model that Voyage says serves at about 40% lower cost than comparable dense models. Every model has a 32K-token context and 256 to 2048 dimensions, and voyage-4-nano is released with open weights. Voyage also offers voyage-code-4, finance and law models, and voyage-multimodal-3.5 for images and video. Voyage AI is part of MongoDB.
A shared embedding space across the whole Voyage 4 family, so query and document models can be chosen separately for cost and latency.
Strengths
- +Shared embedding space across the family: mix models for queries and documents
- +32K-token context and 256 to 2048 dimensions on every Voyage 4 model
- +First 200M tokens free per account on the Voyage 4 models
- +Open-weight voyage-4-nano, plus domain models for code, finance and law
Limitations
- -The Voyage 4 text models are text-only; images and video need voyage-multimodal-3.5
- -The large, standard and lite models are API-only
- -The retrieval advantage is the vendor's own claim; test on your own queries
Real-World Use Cases
- •RAG where documents are embedded once with voyage-4-large and queries with voyage-4-lite for latency
- •Code search and coding agents with voyage-code-4
- •Finance and legal retrieval with the domain models
- •Prototyping on the free 200M-token allowance before committing
Choose This When
When text retrieval quality matters and you want to pay for the large model only on the side where it counts, or when you need code, finance or legal domain models.
Skip This If
When you need text and images in one model (use voyage-multimodal-3.5 or another multimodal model), or when every model must be self-hosted.
Integration Example
import voyageai vo = voyageai.Client(api_key="YOUR_API_KEY") docs = vo.embed(["Your document text here"], model="voyage-4-large", input_type="document") query = vo.embed(["your question"], model="voyage-4-lite", input_type="query") # The 4 series shares one space, so a voyage-4-lite query searches voyage-4-large documents. print(len(docs.embeddings[0]), len(query.embeddings[0]))
OpenAI text-embedding-3
OpenAI's third-generation embedding models remain the most widely adopted embedding API. The large variant (3072 dims) uses Matryoshka representations, letting you truncate dimensions to trade quality for cost. Solid mid-pack MTEB v2 scores (~64.6) but unmatched ecosystem support.
Unmatched ecosystem support with first-class integrations in every major AI framework, plus Matryoshka dimension flexibility for cost-quality tradeoffs.
Strengths
- +Largest developer ecosystem and tooling support
- +Matryoshka dimensions: truncate from 3072 to 256 as needed
- +Simple, well-documented API with fast inference
- +Strong baseline quality for most text retrieval tasks
Limitations
- -No longer top-ranked on MTEB benchmarks
- -Text-only, no multimodal capabilities
- -No self-hosted option for data sovereignty
Real-World Use Cases
- •Startup MVPs and prototypes leveraging the most documented and widely integrated embedding API for fast time-to-market
- •LangChain and LlamaIndex pipelines where OpenAI embeddings are the default and switching costs outweigh marginal quality gains
- •Cost-optimized search using Matryoshka dimension truncation to reduce storage from 3072 to 256 dims for large indices
- •Multi-tenant SaaS platforms where ecosystem compatibility and library support matter more than benchmark rankings
Choose This When
When integration speed and ecosystem compatibility matter more than peak retrieval accuracy, or when you want the flexibility to truncate dimensions across different use cases.
Skip This If
When retrieval precision is critical and you cannot afford the 5-10% quality gap versus Voyage AI or Jina v5, or when you need multimodal or self-hosted embeddings.
Integration Example
from openai import OpenAI
client = OpenAI()
response = client.embeddings.create(
model="text-embedding-3-large",
input="Your text to embed",
dimensions=1024 # Matryoshka: truncate to save storage
)
embedding = response.data[0].embedding
print(f"Dimensions: {len(embedding)}")Jina AI jina-embeddings-v5
Jina's v5-text-small achieves an MTEB v2 score of 71.7 with only 677M parameters: the best quality-to-size ratio of any embedding model. Apache 2.0 licensed and practical to self-host on a single GPU. Also offers CLIP variants for text-image embeddings.
Achieves the best MTEB v2 score relative to model size, making it the most practical open-weight model for self-hosted production deployments on a single GPU.
Strengths
- +Best quality-to-size ratio (71.7 MTEB v2 at 677M params)
- +Apache 2.0 license: fully open for commercial self-hosting
- +Text-image multimodal via jina-clip-v2
- +Free API tier with 1M tokens/month
Limitations
- -Smaller community and fewer integrations than OpenAI
- -CLIP variants less mature than text-only models
- -Self-hosting still requires GPU infrastructure
Real-World Use Cases
- •Self-hosted RAG systems running on a single GPU with quality rivaling commercial API models at zero per-token cost
- •E-commerce search combining text and image embeddings via jina-clip-v2 for visual product discovery
- •Privacy-sensitive applications (healthcare, finance) requiring on-premises embedding generation with no external API calls
- •Research labs needing a high-quality open-weight baseline for embedding model benchmarking and fine-tuning experiments
Choose This When
When you want to self-host embeddings with commercial-grade quality and an Apache 2.0 license, or when you need text-image multimodal via CLIP variants.
Skip This If
When you need the broadest ecosystem integration (OpenAI wins), when you want a fully managed service without any infrastructure, or when your CLIP use case demands the maturity of Gemini multimodal.
Integration Example
import requests
response = requests.post(
"https://api.jina.ai/v1/embeddings",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "jina-embeddings-v3",
"input": ["Your text to embed"],
"task": "retrieval.passage"
}
)
embedding = response.json()["data"][0]["embedding"]
print(f"Dimensions: {len(embedding)}")BAAI BGE-M3
BGE-M3 is unique in producing dense, sparse, and ColBERT representations simultaneously from a single model. This makes it the go-to open-source option for hybrid retrieval without running multiple models. Supports 100+ languages and 8192 token context.
The only model that produces dense, sparse, and ColBERT representations simultaneously, enabling three retrieval strategies from a single model forward pass.
Strengths
- +Dense + sparse + ColBERT in one model: native hybrid search
- +Strong multilingual support across 100+ languages
- +Open-source (MIT license) and self-hostable
- +8192 token context window
Limitations
- -Larger model footprint than single-representation alternatives
- -MTEB v2 score (~63.0) behind newer commercial models
- -No managed API: requires self-hosting infrastructure
Real-World Use Cases
- •Multilingual enterprise search combining dense semantic matching with sparse keyword matching in a single model forward pass
- •Academic search engines using ColBERT late interaction for fine-grained passage-level matching across research papers
- •Self-hosted hybrid retrieval systems that cannot justify running separate dense and BM25 indices for cost or complexity reasons
- •Multilingual RAG pipelines supporting 100+ languages without needing per-language model selection or routing
Choose This When
When you want hybrid retrieval (dense + sparse + ColBERT) without the operational complexity of running multiple models, especially in multilingual settings.
Skip This If
When you need the highest absolute retrieval quality (newer commercial models score higher on MTEB), when you want a managed API, or when the larger model footprint is a problem for your infrastructure.
Integration Example
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel("BAAI/bge-m3", use_fp16=True)
output = model.encode(
["Your document text here"],
return_dense=True,
return_sparse=True,
return_colbert_vecs=True
)
print(f"Dense: {output['dense_vecs'].shape}")
print(f"Sparse keys: {len(output['lexical_weights'][0])}")
print(f"ColBERT: {output['colbert_vecs'][0].shape}")Alibaba Qwen3-Embedding
Qwen3-Embedding-8B holds the #1 spot on the MTEB multilingual leaderboard (score 70.58). An 8B parameter open-weight model with 32K context, it excels at non-English retrieval tasks and long-document embedding where smaller models degrade.
Top-ranked multilingual embedding model with 32K context, delivering the best non-English retrieval quality available in an open-weight package.
Strengths
- +#1 on MTEB multilingual leaderboard (70.58)
- +32K token context for long-document embedding
- +Open-weight with permissive license
- +Strong performance across 50+ languages
Limitations
- -8B parameters requires significant GPU resources to self-host
- -No managed API from Alibaba for Western markets
- -English-only performance behind Gemini and Voyage
Real-World Use Cases
- •Cross-lingual search systems where users query in one language and retrieve documents in another without translation
- •Long-document embedding for legal contracts, technical manuals, and books that exceed 8K token limits of smaller models
- •Multilingual knowledge bases serving users in Asian, European, and Middle Eastern languages from a single model
- •Government and international organization search systems requiring high-quality retrieval across 50+ official languages
Choose This When
When your retrieval workload is primarily multilingual or non-English, when you need to embed very long documents (up to 32K tokens), or when you have the GPU resources to host an 8B model.
Skip This If
When English-only performance is your primary metric (Gemini and Voyage score higher), when you lack GPU infrastructure for an 8B model, or when you need a managed API.
Integration Example
from transformers import AutoModel, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-Embedding-8B")
model = AutoModel.from_pretrained("Qwen/Qwen3-Embedding-8B",
torch_dtype=torch.float16)
inputs = tokenizer("Your text here", return_tensors="pt",
max_length=32768, truncation=True)
with torch.no_grad():
outputs = model(**inputs)
embedding = outputs.last_hidden_state.mean(dim=1)
print(f"Shape: {embedding.shape}")Nomic Embed v2
Nomic Embed is a fully open-source (Apache 2.0) embedding model with Matryoshka dimension support, letting you adjust from 768 down to 64 dimensions. At 137M parameters, it's small enough to run on CPU for low-volume workloads. Strong community adoption in the open-source RAG ecosystem.
The smallest high-quality embedding model at 137M parameters, enabling CPU-only deployments and edge use cases that are impractical with larger models.
Strengths
- +Tiny model (137M params): runs on CPU for small workloads
- +Matryoshka dimensions for flexible quality/cost tradeoff
- +Fully open-source with Apache 2.0 license
- +Active integration with LangChain, LlamaIndex, and Ollama
Limitations
- -Lower absolute quality than larger models on MTEB
- -Text-only, no multimodal support
- -Not competitive with 1B+ models on complex retrieval tasks
Real-World Use Cases
- •Hobby RAG projects and personal knowledge bases running entirely on CPU without any API costs
- •Edge deployments and embedded devices where a 137M parameter model fits in limited memory
- •Prototyping and experimentation where fast iteration matters more than peak retrieval accuracy
- •Offline-capable applications generating embeddings locally without internet connectivity
Choose This When
When you need embeddings on CPU without GPU costs, for edge/offline deployments, or for rapid prototyping where embedding quality is good enough and operational simplicity is paramount.
Skip This If
When retrieval accuracy is critical (larger models score 10-15% higher on MTEB), when you need multimodal support, or when your workload involves complex multi-hop retrieval tasks.
Integration Example
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(
"nomic-ai/nomic-embed-text-v2-moe",
trust_remote_code=True
)
embeddings = model.encode(
["search_document: Your text here"],
show_progress_bar=False
)
print(f"Shape: {embeddings.shape}")
# Truncate for cost savings: embeddings[:, :256]Snowflake Arctic Embed
Snowflake's Arctic Embed family is specifically optimized for retrieval rather than general-purpose embedding. The L variant (335M params) achieves strong retrieval scores while remaining efficient to host. Open-source and increasingly popular in enterprise RAG pipelines.
Purpose-built for retrieval with the best retrieval-accuracy-per-parameter ratio, and native Snowflake Cortex integration for teams already on the Snowflake platform.
Strengths
- +Optimized specifically for retrieval/RAG use cases
- +Efficient model sizes (S/M/L from 22M to 335M params)
- +Open-source with Apache 2.0 license
- +Strong retrieval benchmarks relative to model size
Limitations
- -Weaker on non-retrieval tasks like classification and clustering
- -No managed API: self-hosting required
- -Limited multilingual support compared to BGE-M3 or Cohere
Real-World Use Cases
- •Enterprise RAG systems on Snowflake Cortex embedding documents directly within the data warehouse for in-platform semantic search
- •Cost-optimized retrieval pipelines using the 22M param small variant for high-throughput, low-latency embedding at scale
- •Internal knowledge base search where retrieval accuracy per compute dollar is the primary optimization target
- •Snowflake-native AI applications leveraging tight integration with Snowpark and Cortex for end-to-end ML pipelines
Choose This When
When your workload is purely retrieval/RAG, when you want efficient self-hosted embeddings with a range of model sizes, or when you are building on Snowflake and want native Cortex integration.
Skip This If
When you need embeddings for non-retrieval tasks (classification, clustering, STS), when multilingual support is important, or when you want a managed API without self-hosting.
Integration Example
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(
"Snowflake/snowflake-arctic-embed-l-v2.0"
)
queries = model.encode(
["search_query: What is vector search?"],
prompt_name="query"
)
docs = model.encode(["Vector search finds similar items..."])
similarity = queries @ docs.T
print(f"Similarity: {similarity[0][0]:.4f}")Mistral Embed
Mistral AI's embedding model offers 1024-dimensional vectors optimized for retrieval tasks. Integrated into the Mistral platform alongside their LLM offerings, it provides a convenient option for teams already using Mistral for generation. Supports English and European languages with competitive retrieval scores.
The natural embedding choice for teams already on the Mistral platform, offering a unified billing and API experience alongside Mistral's LLM models.
Strengths
- +Tight integration with Mistral LLM platform for unified AI stack
- +Compact 1024-dimensional vectors balancing quality and storage cost
- +Good European language support beyond English
- +Simple API consistent with Mistral's generation endpoints
Limitations
- -Retrieval quality below Voyage AI and Jina v5 on MTEB benchmarks
- -No multimodal support: text only
- -Fewer ecosystem integrations than OpenAI embeddings
- -No self-hosted option for the embedding model specifically
Real-World Use Cases
- •Mistral-powered RAG applications keeping embedding and generation on the same platform for simplified billing and ops
- •European-language search applications leveraging Mistral's strong French, German, Spanish, and Italian support
- •Enterprise environments preferring a European AI provider for data residency and regulatory alignment
Choose This When
When you are already using Mistral for generation and want to consolidate your AI stack under one vendor, or when European language support and data residency matter.
Skip This If
When retrieval accuracy is your top priority (Voyage and Jina score higher), when you need multimodal embeddings, or when you need extensive ecosystem integrations.
Integration Example
from mistralai import Mistral
client = Mistral(api_key="YOUR_API_KEY")
response = client.embeddings.create(
model="mistral-embed",
inputs=["Your document text here"]
)
embedding = response.data[0].embedding
print(f"Dimensions: {len(embedding)}") # 1024Amazon Titan Embeddings V2
AWS Bedrock's native embedding model supporting text with configurable output dimensions (256, 512, or 1024). Designed for tight integration with the Bedrock ecosystem including Knowledge Bases for RAG. No data leaves AWS infrastructure.
The only embedding model that runs natively within Bedrock with zero data egress, making it the default choice for AWS-native RAG architectures using Knowledge Bases.
Strengths
- +Native Bedrock integration with Knowledge Bases and agents
- +Configurable dimensions (256/512/1024) for cost-quality tradeoff
- +Data stays within AWS: no external API calls
- +Supports 25+ languages
Limitations
- -Lower MTEB scores than Voyage, Jina, and Cohere
- -Only available through Bedrock: no standalone API or self-hosting
- -Maximum 8192 tokens: shorter context than competitors
- -No multimodal support: text and image are separate models
Real-World Use Cases
- •Bedrock Knowledge Base RAG pipelines where embedding generation is automatically managed by the platform
- •Regulated industries requiring embeddings to be generated within AWS boundaries without external API calls
- •AWS-native applications using configurable dimensions to optimize storage costs across different retrieval tiers
Choose This When
When you are building RAG on Bedrock Knowledge Bases, when data sovereignty requires embeddings to stay within AWS, or when you want the simplest possible integration with the AWS AI stack.
Skip This If
When retrieval quality is paramount (third-party models score significantly higher), when you need multimodal embeddings, or when you are not committed to the AWS ecosystem.
Integration Example
import boto3, json
bedrock = boto3.client("bedrock-runtime")
response = bedrock.invoke_model(
modelId="amazon.titan-embed-text-v2:0",
body=json.dumps({
"inputText": "Your text to embed",
"dimensions": 1024,
"normalize": True
})
)
result = json.loads(response["body"].read())
print(f"Dimensions: {len(result['embedding'])}")Mixedbread mxbai-embed-large
German AI startup Mixedbread has produced surprisingly strong open-weight embedding models. Their mxbai-embed-large-v1 (335M params) achieves competitive MTEB scores with Matryoshka dimension support and binary quantization. Apache 2.0 licensed with a focus on efficient self-hosting.
Combines Matryoshka dimension support with binary quantization in a compact 335M model, enabling flexible quality-cost tradeoffs for self-hosted deployments.
Strengths
- +Strong MTEB scores for a 335M parameter model
- +Matryoshka dimensions and binary quantization support
- +Apache 2.0 license for commercial self-hosting
- +Active development with rapid model iteration
Limitations
- -Smaller community than Jina or Nomic
- -No managed API with production SLAs
- -Text-only, no multimodal variants
- -Less documentation and fewer tutorials than established alternatives
Real-World Use Cases
- •Self-hosted search systems needing Matryoshka dimension flexibility for different retrieval-accuracy tiers within the same index
- •Resource-constrained deployments using binary quantization to serve embeddings from CPU or minimal GPU
- •European-headquartered teams preferring an EU-based open-source model for GDPR compliance in self-hosted setups
Choose This When
When you want a self-hosted model with both Matryoshka dimensions and binary quantization for maximum deployment flexibility, especially in European-hosted infrastructure.
Skip This If
When you need a managed API with SLAs, when multimodal support is required, or when community size and ecosystem integrations are important decision factors.
Integration Example
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("mixedbread-ai/mxbai-embed-large-v1")
docs = model.encode(
["Represent this document for retrieval: Your text here"]
)
# Matryoshka: truncate to desired dimensions
truncated = docs[:, :512]
print(f"Full: {docs.shape}, Truncated: {truncated.shape}")Together AI Embeddings
Together AI offers hosted inference for popular open-source embedding models including BGE, UAE, and M2-BERT at competitive API pricing. Rather than training their own model, they provide managed hosting for the best open-source options with OpenAI-compatible endpoints.
Managed hosting for top open-source embedding models with OpenAI-compatible endpoints, giving you the quality of open-source models without the infrastructure burden.
Strengths
- +Access to multiple top open-source models via one API
- +OpenAI-compatible API for easy migration
- +Competitive pricing for hosted open-source model inference
- +No infrastructure management for self-hostable models
Limitations
- -No proprietary model: quality depends on underlying open-source model
- -Fewer model options than running your own inference
- -API reliability and latency subject to shared infrastructure
- -Less differentiated than vendors with custom models
Real-World Use Cases
- •Startups using BGE or UAE embeddings without the DevOps overhead of self-hosting GPU inference
- •Teams evaluating multiple open-source embedding models side-by-side through a single API before committing
- •Cost-sensitive applications leveraging the cheapest per-token pricing for embedding generation at scale
Choose This When
When you want to use open-source embedding models but do not want to manage GPU infrastructure, or when you are comparing multiple open-source models and want a single API to test them.
Skip This If
When you need the latest custom models from vendors like Cohere or Voyage, when you want guaranteed model freshness, or when self-hosting gives you better economics at your scale.
Integration Example
from openai import OpenAI
client = OpenAI(
api_key="YOUR_TOGETHER_KEY",
base_url="https://api.together.xyz/v1"
)
response = client.embeddings.create(
model="BAAI/bge-large-en-v1.5",
input="Your text to embed"
)
print(f"Dims: {len(response.data[0].embedding)}")Which one fits your use case?
Find your situation in the first column. The last column says when the pick is the wrong call.
| Choose it when | Pick | Look elsewhere when |
|---|---|---|
| You need managed embedding generation across multiple modalities as part of a complete search pipeline, and want to avoid stitching together separate embedding APIs, vector databases, and retrieval logic. | Mixpeek | You only need a standalone embedding API for generating vectors without a full search pipeline, or when you want direct control over your vector database operations. |
| You need to embed multiple content types into the same vector space for cross-modal retrieval, or when MTEB v2 benchmark performance matters and you want the top-scoring API model. | Google Gemini Embedding | You need self-hosted deployment for data sovereignty, or when your workload is text-only and a cheaper text-specific model would suffice. |
| You want the strongest reported text retrieval and can run an 8B model (or the 1B) on your own GPUs. | NVIDIA Nemotron 3 Embed (8B and 1B) | You need images or video in the same space, when you have no GPU capacity, or when a managed API is simpler for your team. |
| Your documents mix text and images (PDFs, slides, scanned pages) and you want one managed model for both, or when long inputs make chunking painful. | Cohere embed-v4 | You need open weights you can run anywhere, or when your workload is text-only and a cheaper text model or an open-weight model fits the budget. |
| Text retrieval quality matters and you want to pay for the large model only on the side where it counts, or when you need code, finance or legal domain models. | Voyage AI Voyage 4 (voyage-4-large, voyage-4, voyage-4-lite) | You need text and images in one model (use voyage-multimodal-3.5 or another multimodal model), or when every model must be self-hosted. |
| Integration speed and ecosystem compatibility matter more than peak retrieval accuracy, or when you want the flexibility to truncate dimensions across different use cases. | OpenAI text-embedding-3 | Retrieval precision is critical and you cannot afford the 5-10% quality gap versus Voyage AI or Jina v5, or when you need multimodal or self-hosted embeddings. |
| You want to self-host embeddings with commercial-grade quality and an Apache 2.0 license, or when you need text-image multimodal via CLIP variants. | Jina AI jina-embeddings-v5 | You need the broadest ecosystem integration (OpenAI wins), when you want a fully managed service without any infrastructure, or when your CLIP use case demands the maturity of Gemini multimodal. |
| You want hybrid retrieval (dense + sparse + ColBERT) without the operational complexity of running multiple models, especially in multilingual settings. | BAAI BGE-M3 | You need the highest absolute retrieval quality (newer commercial models score higher on MTEB), when you want a managed API, or when the larger model footprint is a problem for your infrastructure. |
Put embedding to work
Connect a bucket and Mixpeek runs the whole embedding pipeline for you: extraction, indexing, and search over your own objects. No models to wire up, nothing to host.
Start with ManagedAlready have vectors?
Keep your embeddings on your own cloud and run dense, sparse, and BM25 search directly on object storage. From $25/mo.
Start with MVSFrequently Asked Questions
What are embedding models and why do they matter for search?
Embedding models convert text, images, or other content into dense numerical vectors that capture semantic meaning. Similar content produces similar vectors, enabling semantic search where queries match by meaning rather than keywords. The quality of your embeddings directly determines your search relevance.
How do I choose between text-only and multimodal embedding models?
Use text-only models when your content and queries are purely textual, as they typically offer higher text retrieval quality. Choose multimodal models when you need to search across content types, such as finding images with text queries or matching video frames to text descriptions. Platforms like Mixpeek let you use different models for different use cases.
Does embedding dimension size matter?
Higher dimensions generally capture more semantic nuance but increase storage costs and search latency. For most applications, 768-1024 dimensions provide an excellent quality-to-cost ratio. Models with Matryoshka representations let you truncate dimensions to find your optimal trade-off.
What is hybrid retrieval and do I need it?
Hybrid retrieval combines dense vector search (semantic matching) with sparse keyword search (exact term matching) to get the best of both worlds. It is particularly valuable when your queries mix natural language with specific terms like product codes, legal citations, or technical identifiers. BGE-M3 produces both dense and sparse representations in one call, which simplifies hybrid search; with a dense-only model such as Cohere embed-v4 you pair it with a BM25 index.
Should I use an API embedding service or self-host?
API services like OpenAI, Cohere, and Voyage offer zero operational overhead and are ideal for prototyping and moderate-scale production. Self-hosting with models like Jina v5, BGE-M3, or Nomic Embed makes sense when you need data sovereignty, have high enough volume for the GPU cost to be cheaper than API pricing, or need to customize models via fine-tuning. The break-even point typically falls around 10-50M embeddings per month.
Where should I store and search the vectors my embedding model produces?
An embedding model only outputs vectors: you still need a vector store to index and query them. The cheapest path at scale is to keep vectors on object storage you already pay for rather than a RAM-resident database. Mixpeek Vector Store (MVS) is agent-native vector search on object storage: you bring vectors from any model (Gemini, Cohere, Voyage, Jina, or BGE-M3) and run dense, sparse, and BM25 search directly on S3, GCS, or B2. Build starts at $25/mo for up to 1M vectors, and an MCP server lets an AI agent query the index as a tool.
Do I have to use a specific embedding model with Mixpeek?
No. There are two paths. With Mixpeek Vector Store (MVS) you are model-agnostic: you generate embeddings with whatever model wins your benchmark and store and search them on your own object storage, so you are never locked into one provider's embeddings. With Mixpeek Managed, Mixpeek runs indexing and search over your objects (video, image, audio, PDF) end to end and selects appropriate models for you. Pick MVS when you already own the embedding step; pick Managed when you want the whole pipeline handled.
See how Mixpeek handles this
Purpose-built for embedding models, not bolted on.
Embedding Models
Mixpeek's dedicated page for this capability: architecture, benchmarks, and how it works.
Talk to a Mixpeek engineer: free
30 minutes. Bring your use case and we'll tell you exactly what would work and what wouldn't.
Explore Other Curated Lists
Best Embedding Visualization Tools
How do you actually look at millions of embeddings? We compared the leading tools for visualizing and exploring embedding spaces on scale, interactivity, projection quality (UMAP/t-SNE/PCA), and how well they connect points back to the underlying content.
Best RAG Frameworks & Platforms
A practical comparison of frameworks and platforms for building Retrieval-Augmented Generation applications. We tested each on multi-document QA, citation accuracy, and multimodal RAG scenarios.
Best Open Source ML Pipeline Frameworks
A comparison of open-source frameworks for building, orchestrating, and deploying machine learning pipelines. Evaluated on flexibility, scalability, and production readiness for real-world ML workflows.