Two managed embedding APIs. Price and ecosystem simplicity on one side, multilingual and multimodal depth on the other.
| OpenAI text-embedding-3 | Cohere Embed | |
|---|---|---|
| Current models | text-embedding-3-small and -large | Embed 4 (embed-v3 still offered) |
| Price per 1M text tokens | $0.02 small, $0.13 large | $0.12 (Embed 4) |
| Image and PDF input | Not supported, text only | Yes; images $0.47 per 1M image tokens |
| Dimensions | 1536 or 3072, shortenable via API parameter | 1536 default; 256, 512, 1024 options (v4) |
| Context length | 8,192 tokens | 128k tokens (v4); 512 for embed-v3 |
| Multilingual | Solid across major languages | Built for 100+ languages |
| Published MTEB (English) | 62.3 small, 64.6 large | No single comparable published number |
| Compressed embeddings | Dimension shortening only | int8 and binary output types |
| Reranker pairing | None native, bring your own | Native Cohere Rerank |
| Where it runs | OpenAI API, Azure OpenAI | Cohere API, AWS Bedrock, Azure, SageMaker |
OpenAI charges $0.02 per 1M tokens for text-embedding-3-small and $0.13 for text-embedding-3-large. The older ada-002 still exists at $0.10, but I see no reason to use it: small is cheaper and scores better on OpenAI's own benchmarks. Cohere's Embed 4 is $0.12 per 1M text tokens, with image inputs billed at $0.47 per 1M image tokens.
Some quick math to make that concrete. Embedding 10,000 documents at roughly 1,000 tokens each is 10M tokens: about $0.20 with OpenAI small, $1.30 with OpenAI large, and $1.20 with Cohere Embed 4. At typical corpus sizes, the embedding API bill is noise. The costs that actually matter are storing and querying the vectors, which is where dimensions come in.
One caveat when comparing per-token prices across vendors: each uses its own tokenizer, so a million OpenAI tokens and a million Cohere tokens do not cover exactly the same amount of text. Treat the prices as close, not identical.
Pick OpenAI when your corpus is mostly English and you want the least friction. Small at $0.02 per 1M tokens is the sleeper pick: it scores 62.3 on MTEB against large's 64.6, which is most of the quality at about 15 percent of the price. I default to small and only move up when an eval on my own data shows a real gap.
The ecosystem argument is legitimate too. Every vector database tutorial, framework default, and code sample assumes these models, and if you are already paying OpenAI or Azure OpenAI for generation, embeddings ride on the same account, keys, and compliance review.
Both models also accept a dimensions parameter that shortens embeddings below their 1536 or 3072 defaults, which lets you trade a little quality for a much smaller index without switching models.
Pick Cohere when retrieval crosses languages. The Embed models are built for 100+ languages, and they handle the harder case where the query and the document are in different languages. If your users search in Spanish against English documents, that is the exact scenario Cohere optimizes for and the place I have found the clearest wins.
Embed 4 also changes the shape of the pipeline. A 128k token context window means you can embed whole documents or large sections instead of aggressively chunking, and text, images, and PDFs share one embedding space. The int8 and binary output types cut vector storage substantially, which matters more than API price at scale.
Finally, if you already plan a two-stage pipeline with a reranker, Cohere is the only one of the two with a native rerank model, and it also ships through AWS Bedrock, Azure, and SageMaker for teams that cannot send data to a startup's API directly.
Most comparison pages, including the older version of this one, still benchmark against embed-v3. Cohere's current generation is Embed 4, and the deltas are not minor: context went from 512 tokens to 128k, the model became multimodal, and dimensions became configurable. Judging Cohere on v3 numbers understates it.
The second thing that goes unmentioned is lock-in. Embeddings from different models are not interchangeable, so switching later means re-embedding the entire corpus and rebuilding the index. That is cheap in API dollars but disruptive in practice. Run a small evaluation on your own documents before committing; 20 to 50 real queries with labeled answers tells you more than any leaderboard, because public benchmark gaps often disappear on a specific corpus.
I default to text-embedding-3-small for English-first projects. At $0.02 per 1M tokens it is the best price-to-quality ratio either vendor offers, and I step up to large only when my own eval shows the gap is real. I reach for Cohere first in three cases: the corpus is meaningfully multilingual, the documents include images or PDFs worth embedding directly, or the pipeline already includes Cohere Rerank. Whichever way you lean, decide with a small eval on your own data, because re-embedding a corpus later is the switching cost nobody budgets for.