# Embedding models compared in 2026: OpenAI, Gemini, Voyage, Cohere

URL: https://infro.io/blog/embedding-models-compared-2026
Author: INFRO Editorial (https://infro.io/blog/editorial)
Publisher: INFRO
Published: 2026-10-20
Last modified: 2026-10-20
Last reviewed: 2026-10-20 (next review due 2026-11-19)
Topic: Evaluation and models
Format: Comparison

> In October 2026, OpenAI's text-embedding-3-small costs $0.02 per million tokens and text-embedding-3-large $0.13, both normalised, 8,192-token inputs, shortenable dimensions. Google's Gemini Embedding 2 costs $0.20 per million text tokens ($0.10 on Batch) and also embeds images, audio and video. Voyage 4 costs $0.02 to $0.12 with 200 million free tokens, and Cohere's Embed v5 and v4 take 128K-token mixed inputs. Choose by retrieval quality on your own queries, then by dimensions and storage, because changing models means re-embedding everything.

Key takeaways:
- OpenAI text-embedding-3-small is $0.02 per 1M tokens and -large $0.13; both take 8,192-token inputs and can be shortened with the dimensions parameter.
- Gemini Embedding 2 is $0.20 per 1M text tokens ($0.10 Batch) and embeds images, audio and video too.
- Voyage 4 runs from $0.02 (lite) to $0.12 (large) with 200M free tokens; Cohere Embed v5 and v4 take 128K-token mixed inputs.
- Vectors from different models are not comparable: a model change means re-embedding the whole corpus.
- Choose by recall on your own queries first, then by dimensions, because storage and search cost scale with them.

**Which embedding model should you use in 2026?** Shortlist by constraints, then decide on your own data. On price and simplicity, **OpenAI's text-embedding-3-small** ($0.02 per million tokens) and **-large** ($0.13) remain the reference points[1]. For images, audio and video in the same space, **Gemini Embedding 2** ($0.20 per million text tokens, $0.10 on Batch)[2]. For a range of sizes and domain models with a large free allowance, **Voyage 4**[3]. For very long and mixed inputs, **Cohere Embed v5 and v4**, with 128K-token inputs including images and PDFs[4]. Then measure recall on real queries, because the model you choose is the hardest one in your stack to change.

## The current options

| Model | Rate per 1M tokens | Default dimensions | Max input | Modalities |
| --- | --- | --- | --- | --- |
| OpenAI text-embedding-3-small | $0.02 | 1,536 (shortenable) | 8,192 tokens | Text |
| OpenAI text-embedding-3-large | $0.13 | 3,072 (shortenable) | 8,192 tokens | Text |
| Gemini Embedding 2 | $0.20 text ($0.10 Batch) | See Google's docs | See Google's docs | Text, image, audio, video |
| Voyage 4 lite / 4 / 4 large | $0.02 / $0.06 / $0.12 | See Voyage's docs | See Voyage's docs | Text |
| Voyage code 4, context 4 | $0.12 | See Voyage's docs | See Voyage's docs | Text and code |
| Cohere Embed v5 pro / fast | Not published on the pricing page opened | 2,048 (256–1,536 options) | 128K tokens | Text, images, mixed |
| Cohere Embed v4 | Not published on the pricing page opened | 1,536 (256–1,024 options) | 128K tokens | Text, images, mixed |
| Mistral Embed, Codestral Embed | See Mistral's pricing | See Mistral's docs | See Mistral's docs | Text, code |

Table: From each vendor's own pages on 2026-10-20. Where a page did not state a figure, the table says so rather than guessing.

Notes from those pages:

- **OpenAI** vectors are normalised to length 1, so a dot product gives cosine similarity, and the `dimensions` parameter trims a vector "without fully losing" its meaning[5].
- **Gemini Embedding 2** also prices image input at $0.00012 per image, audio at $0.00016 per second and video at $0.00079 per frame on its standard tier, with half those rates on Batch, and has a free tier for text[2].
- **Voyage** gives 200 million free tokens on its version-4 models and lists separate law, finance and code models at $0.12 with 50 million free tokens; its multimodal models charge per text token plus per pixel[3].
- **Cohere's** Embed v5 comes in pro and fast variants with dimension options from 256 to 2,048; its English and multilingual v3 models still take 512-token inputs[4]. Its pricing page lists dedicated-instance rates rather than per-token rates.
- **Mistral** lists Mistral Embed and Codestral Embed, the latter for code[6].

## The cost that matters: the whole corpus, twice

Embedding rates look negligible per request. They are not negligible per corpus, and you pay for the corpus more than once.

> **Example: Re-embedding ten million chunks**
> A corpus of 10 million chunks of about 500 tokens is 5 billion tokens.
> 
> - text-embedding-3-small: 5,000 × $0.02 = $100
> - Voyage 4: 5,000 × $0.06 = $300
> - text-embedding-3-large: 5,000 × $0.13 = $650
> - Gemini Embedding 2: 5,000 × $0.20 = $1,000, or $500 on Batch
> 
> That is the cost of every full re-embed: a model change, a chunking change, or a new field you decide to include.

Query embeddings are a second, ongoing cost: every search embeds the query. At high query volumes a small model's per-query cost and latency matter more than its per-corpus cost. [Where the tokens go in a RAG pipeline](https://infro.io/blog/rag-token-accounting) breaks this down.

## Dimensions decide storage and search cost

Vector databases store and compare every dimension. Float32 vectors take 4 bytes per dimension:

| Dimensions | 10M vectors (float32) |
| --- | --- |
| 512 | about 20 GB |
| 1,024 | about 41 GB |
| 1,536 | about 61 GB |
| 3,072 | about 123 GB |

Memory-resident indexes multiply that cost again. Models that can shorten vectors (OpenAI's `dimensions` parameter, Cohere's dimension options) let you test 512 or 1,024 dimensions against the full size on your own queries. If recall barely moves, the smaller vectors are a lasting saving on every query.

## How to choose on your own data

1. **Build a query set.** 100 to 300 real queries with the documents that should answer them, from search logs or support tickets.
2. **Embed a sample corpus** with each shortlisted model, at its default and one reduced dimension.
3. **Measure recall@k** (is the right document in the top 5 or 10?) and, if you rerank, the final answer quality.
4. **Check languages and domains you serve.** A model that is strong in English can be weaker in your second language; domain models (code, law, finance) can beat general ones on their domain.
5. **Price the winner** on corpus size, re-embed frequency, query volume and storage, not on the rate per token alone.

[Evaluating LLMs on real workloads](https://infro.io/blog/evaluate-llms-real-workloads) covers building the query set.

## Rules that save a migration

- **Never mix models in one index.** Vectors from different models are not comparable; a query embedded with model B against documents embedded with model A returns noise without an error.
- **Record the model and dimensions with every vector,** so a migration knows exactly what it is replacing.
- **Migrate with a parallel index.** Embed the corpus with the new model into a new index, compare results on the query set, switch reads, then delete the old index.
- **Failover means the same model.** If the primary embedding provider fails, the only safe fallback is the same model on another account or platform; a different model would write vectors your index cannot use.
- **Rerank instead of re-embedding** when the problem is ordering rather than recall. A reranker on the top 50 results is often a smaller change than a new embedding model.

## Embeddings through INFRO

INFRO serves `POST /v1/embeddings` in OpenAI's shape on your own provider connection, so OpenAI's SDKs, LangChain and LlamaIndex work with only the base URL and key changed. It serves OpenAI's and Mistral's embedding models, Azure OpenAI deployments and models on your own OpenAI-compatible server. Each request carries an estimated provider cost and is attributed by project, key and workflow, so corpus jobs and query traffic can be budgeted separately. An embeddings request may only fail over to the same model, so a fallback never writes vectors from a different space into your index. INFRO stores no documents and no vectors and runs no retrieval; your vector database stays yours.

## Summary

Shortlist embedding models by modality, input length and budget; choose by recall on your own queries; size dimensions by measured quality, because storage and search scale with them; and treat a model change as a migration, because every vector has to be recomputed.

## Questions

### What is the best embedding model in 2026?

There is no single best one; it depends on your language, domain and query style. Shortlist two or three — for example OpenAI text-embedding-3-large, Voyage 4 and Gemini Embedding 2 — embed a sample of your corpus with each, and measure recall on a set of real queries with known answers.

### How much does text-embedding-3-small cost?

$0.02 per million tokens on OpenAI's pricing page in October 2026; text-embedding-3-large is $0.13. Embedding ten million 500-token chunks with 3-small costs about $100 at that rate.

### Can I switch embedding models without re-embedding?

No. Vectors from different models live in different spaces and cannot be compared. Switching models means re-embedding every document and every query, so plan the switch as a migration with a parallel index.

### How many dimensions should embeddings have?

As few as keep your retrieval quality. Storage and search cost grow with dimensions: ten million 1,536-dimension float vectors take about 61 GB, and at 512 dimensions about 20 GB. Models that support shortened dimensions let you test the trade-off on your own data.

## Sources

1. Pricing — OpenAI. https://developers.openai.com/api/docs/pricing (accessed 2026-10-20)
2. Gemini Developer API pricing — Google. https://ai.google.dev/gemini-api/docs/pricing (accessed 2026-10-20)
3. Pricing — Voyage AI. https://docs.voyageai.com/docs/pricing (accessed 2026-10-20)
4. Cohere's Embed models — Cohere. https://docs.cohere.com/docs/cohere-embed (accessed 2026-10-20)
5. Vector embeddings — OpenAI. https://developers.openai.com/api/docs/guides/embeddings (accessed 2026-10-20)
6. Models overview — Mistral AI. https://docs.mistral.ai/getting-started/models/models_overview/ (accessed 2026-10-20)
