Compare Models →
2026 VECTOR EMBEDDING BENCHMARK Updated March 2026 | Verified Real-World Pricing & Latency

Executive Verdict: Embedding Pricing & Recall

Embedding costs have diverged between commodity vectorization and domain-specialized retrieval. OpenAI text-embedding-3-small is the default low-cost leader at $0.02/1M tokens, while Voyage AI (voyage-3 at $0.12/1M, voyage-finance-2 and voyage-law-2 at $0.12/1M) commands a premium for higher retrieval recall in enterprise domain RAG pipelines.

OpenAI 3-Small
$0.02 / 1M tokens
1536 dims, MTEB baseline standard
OpenAI 3-Large
$0.13 / 1M tokens
3072 dims, maximum general recall
Voyage-3
$0.12 / 1M tokens
1024 dims, top MTEB retrieval benchmark
Cohere Embed v3
$0.10 / 1M tokens
Native compression to int8/binary
RAG & Vector Retrieval Pricing

Embedding Models & Vector Dimensions Pricing Matrix: Voyage vs OpenAI vs Cohere (2026)

Vector embeddings convert unstructured text into dense numerical floating-point vectors for semantic search, clustering, and retrieval-augmented generation (RAG). While API costs are billed per million tokens processed, your downstream vector database RAM costs scale directly with vector dimensionality (512 vs 1,536 vs 3,072 dims).

Lowest Token Rate
$0.020 / 1M
OpenAI text-embedding-3-small
Highest MTEB Retrieval Score
67.8 MTEB
Voyage AI voyage-3 benchmark leader
Longest Native Context
32,000 Tokens
Voyage-3 & Voyage-Code-3
Matryoshka Dimension Scaling
Up to 75% Savings
Truncation down to 512 dims

RAG Ingestion & Vector DB Storage Simulator

Model monthly token generation bills alongside downstream Pinecone/Qdrant vector RAM hosting costs.

Monthly Ingested Document Tokens: 50,000,000
Target Vector Dimensionality: 1,536 dims (OpenAI Standard)
512 (Shortened) 768 (Gemini) 1536 (OpenAI Small) 3072 (Large)
Monthly Embedding API Spend
$1.00
(At OpenAI small $0.020/M rate)
Vector DB RAM Required
1.2 GB
~$15.00/mo vector pod

Frontier Text Embedding Models Benchmark & Pricing

Evaluating token price, dimensions, MTEB accuracy, and context capacity across industry standard providers.

Model Identifier Provider Price / 1M Tokens Dimensions MTEB Score Max Context Matryoshka
text-embedding-3-small OpenAI $0.020 / 1M 1,536 dims (to 512) 62.3 Avg 8,191 tokens Native
text-embedding-3-large OpenAI $0.130 / 1M 3,072 dims (to 1024) 64.6 Avg 8,191 tokens Native
voyage-3 Voyage AI $0.120 / 1M 1,024 dims 67.8 (Leader) 32,000 tokens Static
voyage-code-3 Voyage AI $0.120 / 1M 1,024 dims 68.2 (Code SOTA) 32,000 tokens Static
text-embedding-004 Google Gemini $0.025 / 1M 768 dims (to 256) 66.3 High-Value 2,048 tokens Native
embed-english-v3.0 Cohere $0.100 / 1M 1,024 dims 64.5 High-Recall 512 tokens int8 / binary
mistral-embed Mistral AI $0.100 / 1M 1,024 dims 63.8 Multilingual 8,192 tokens Static
bge-large-en-v1.5 Open Weights / HuggingFace $0.000 (Self-Host) 1,024 dims 64.1 Open Leader 512 tokens Static

Matryoshka Representation Learning & Downstream RAM Math

Why vector database hosting bills dwarf embedding API generation fees by an order of magnitude.

The Hidden Vector Database RAM Tax

Many developers mistakenly calculate RAG costs solely from the embedding API invoice ($0.02 to $0.12 per million tokens). However, in production, generated vectors must reside inside a vector index (such as HNSW graphs in Pinecone, Qdrant, Milvus, or pgvector).

Each vector float32 dimension consumes 4 bytes of raw memory. Adding HNSW graph edges and metadata adds an additional 30% to 50% indexing overhead. For an enterprise repository with 5,000,000 document chunks:

  • At 3,072 dimensions (OpenAI Large): 5,000,000 × 3,072 × 4 bytes = 61.4 GB raw + 25 GB HNSW index = 86.4 GB RAM required (~$500/month in cloud memory pods).
  • At 1,536 dimensions (OpenAI Small): 5,000,000 × 1,536 × 4 bytes = 30.7 GB raw + 12.5 GB index = 43.2 GB RAM required (~$260/month).
  • At 512 dimensions (Matryoshka Truncated): 5,000,000 × 512 × 4 bytes = 10.2 GB raw + 4.1 GB index = 14.3 GB RAM required (~$85/month).

Real-World RAG Production Scenarios

Financial models across enterprise knowledge bases, e-commerce catalogs, and semantic code search.

Scenario 1: Enterprise Knowledge Base

5M Confluence & PDF Chunks

Ingesting 1.25 billion document tokens using text-embedding-3-small truncated to 512 dims. Total one-time generation: $25.00. Monthly Qdrant cloud hosting: $85.00/mo.

$110.00 initial setup
Saves $415/mo in RAM compared to full 3,072-dim vectors
Scenario 2: Code Repository Search

1,000 GitHub Monorepos

Semantic code retrieval across 200M code tokens using Voyage Code 3 (32,000 context window). Generation cost: $24.00. Sub-30ms AST function retrieval.

$24.00 total run
State-of-the-art code retrieval benchmark accuracy (68.2%)
Scenario 3: E-Commerce Product Catalog

2,000,000 SKU Search

Daily re-indexing of product titles and attributes with Google text-embedding-004 (768 dimensions). 80M tokens monthly: $2.00/mo API + $40/mo vector storage.

$42.00 / month
Full multi-lingual semantic product discovery
Python • Production OpenAI Matryoshka Dimension Truncation dimensions=512
from openai import OpenAI
import numpy as np

client = OpenAI()

def generate_compact_embedding(text: str) -> list[float]:
    # Request text-embedding-3 with explicit Matryoshka dimension reduction
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text,
        dimensions=512  # Automatically truncated & L2-normalized by API
    )
    vector = response.data[0].embedding
    
    # Verify unit length (required for fast cosine dot product in vector DBs)
    norm = np.linalg.norm(vector)
    assert abs(norm - 1.0) < 1e-4, "Vector must be unit normalized"
    return vector

# Process batch of chunks
chunks = ["Authentication handler for OAuth2 refresh tokens...", "Database connection pool timeout config..."]
embeddings = [generate_compact_embedding(c) for c in chunks]
print(f"Generated {len(embeddings)} vectors with {len(embeddings[0])} dimensions.")

Production Gotchas & Operational Traps

Critical architectural issues to avoid when scaling RAG pipelines.

⚠️ Un-Normalized Manual Truncation
If you manually slice a 1,536-dim vector to 512 dimensions instead of using the API's native dimensions parameter, the resulting vector loses its L2 unit norm, breaking cosine similarity calculations. Always re-normalize before indexing!
⚠️ The 32K Context Trap
While Voyage supports 32,000 tokens, embedding a full 50-page document into a single vector causes severe semantic loss. Information density dilutes rapidly past 1,000 tokens; keep chunk sizes between 256 and 512 tokens.
⚠️ Dimension Mismatch Re-Indexing Tax
Once a vector index is created (e.g. Pinecone 1,536 dimensions), you cannot insert 768 or 512 dimension vectors. Changing embedding models requires dropping and fully re-indexing your entire database from scratch.
⚠️ Float32 vs Scalar Quantization
Storing vectors as raw Float32 consumes 4 bytes per dimension. Enabling INT8 scalar quantization in Qdrant or Milvus reduces RAM consumption by 75% (1 byte per dim) with negligible loss in retrieval recall.

Related Vector Databases & Cost Calculators

Explore downstream indexing tools and provider pricing breakdowns.

Frequently Asked Developer Questions

How does embedding dimensionality impact vector database storage bills?

A 3,072-dimension vector requires 4x the RAM and storage of a 768-dimension vector. In memory-indexed vector databases like Pinecone or Qdrant, RAM costs often exceed model embedding generation costs by 10x. Using Matryoshka representation learning to shorten vectors down to 512 or 768 dimensions cuts cloud RAM infrastructure bills by 60% to 75% with under 2% retrieval accuracy loss.

Why is Voyage AI ranked higher than OpenAI on the MTEB benchmark?

Voyage AI specializes exclusively in retrieval embeddings with custom tokenizers and domain-adapted models (voyage-3, voyage-code-3, voyage-law-2). On MTEB and Long-Context retrieval benchmarks, Voyage achieves 67.8% average recall versus OpenAI's 64.6%, with superior dense paragraph discrimination.

What is Matryoshka Representation Learning (MRL)?

MRL trains embedding models so that the highest-priority semantic features are packed into the earliest vector dimensions. This allows developers to truncate a 3,072-dimension vector (like text-embedding-3-large) down to 512 or 256 dimensions simply by slicing the array, saving massive storage without retraining.

When should an enterprise self-host embedding models like BGE or Nomic?

Self-hosting BGE-large or Nomic-embed-text on a dedicated GPU instance (e.g. NVIDIA L4 or RTX 4090 at $120-$200/mo) becomes financially superior when ingesting over 500 million tokens per month or when strict HIPAA/GDPR data residency forbids transmitting raw text to third-party APIs.

Does chunk size affect embedding API costs?

Yes. Smaller chunks (e.g. 128 tokens with 32-token overlap) require 3x more embedding API calls and generate 3x more vector rows than 512-token chunks. However, smaller chunks provide sharper retrieval specificity for LLM prompts. A 256 to 512 token chunk with 10% overlap offers the optimal balance between token expenditure and retrieval recall.

How does Gemini text-embedding-004 compare to OpenAI text-embedding-3-small?

Google's text-embedding-004 ($0.025/M tokens, 768 dims) offers an outstanding 66.3 MTEB score at half the dimension size of OpenAI text-embedding-3-small (1,536 dims, 62.3 MTEB, $0.020/M). This halves your downstream vector database RAM memory requirements while delivering slightly superior retrieval precision.

4.8 out of 5
★★★★★
Developer Community Benchmark Rating
Verified across 178 community production token & cost audits
Rate this benchmark: