Claude Has No Embedding Model: What to Use Instead

Anthropic does not offer an embedding model and says so in its own docs. Voyage AI is the official pick, but not the only one. Prices and how to choose.

Claude embeddings RAG Voyage AI vectors API Anthropic

You are building a RAG pipeline on Claude, you go looking for claude-embedding-v1 in the API reference, and you come up empty. You are not searching wrong.

The short answer

Anthropic does not ship an embedding model. Not in 2026, not before. The Claude API generates text, it does not vectorize it. If you need to turn documents into vectors for semantic search, you need a third-party provider.

Anthropic's official recommendation is Voyage AI. But it is not the only viable option, and depending on your corpus it may not even be the best one.

What the official docs actually say

No need to speculate. Anthropic's embeddings documentation is unambiguous:

Anthropic does not offer its own embedding model. One embeddings provider that has a wide variety of options and capabilities encompassing all of the preceding considerations is Voyage AI.

And immediately after, a sentence most articles that rehash this page quietly skip:

The rest of this guide is for Voyage AI, but you should assess a variety of embeddings vendors to find the best fit for your specific use case.

Anthropic is telling you to shop around. That is a recommendation, not an exclusive.

Why Anthropic stays out of embeddings

My read: it is a different business, and the market is already crowded with models that are both excellent and nearly free.

Generative models and embedding models share architectural pieces but optimize for opposite constraints. Generation optimizes reasoning quality, costs real money per token, and sells on the value it produces. Embedding optimizes throughput and latency, sells for cents per million tokens, and gets commoditized every six months by the next open-weights release.

Anthropic sells reasoning at a premium. Walking into a $0.02-per-million market where your main competitor gives the weights away under Apache 2.0 makes no strategic sense. Delegating and documenting it properly is the right call.

Voyage AI, the official recommendation

Voyage AI builds embedding models and rerankers, including domain-specialized variants. The current generation is Voyage 4, released on January 15, 2026.

ModelContextDimensionsPrice / million tokens
voyage-4-large32,0001024, 256, 512, 2048$0.12
voyage-432,0001024, 256, 512, 2048$0.06
voyage-4-lite32,0001024, 256, 512, 2048$0.02
voyage-4-nano32,0001024, 256, 512, 2048open weights, Apache 2.0
voyage-context-4120,0001024, 256, 512, 2048$0.12
rerank-2.532,000reranker$0.05
rerank-2.5-lite32,000reranker$0.02

Prices from Voyage's official pricing page. One detail that matters when you are prototyping: the first 200 million tokens are free on every account, for embedding models and rerankers alike. For an internal documentation corpus, that usually means your entire indexing phase costs nothing.

Two models deserve a callout.

voyage-context-4 produces chunk-level embeddings that carry full document context, without you hand-rolling metadata augmentation. With a 120,000 token window you can feed a long document in one pass. It is called with contextualized_embed() rather than embed(), which is the classic trip-up.

voyage-multimodal-3.5 embeds text, images and video into a shared space. If your corpus is screenshots, slides or content-rich PDFs, start there.

The part nobody mentions: Voyage belongs to MongoDB

Here is the thing worth verifying, and the thing every article that paraphrases the Anthropic doc misses.

Voyage AI is not an independent startup anymore. MongoDB acquired Voyage AI in February 2025 for roughly $220 million in cash and stock.

Does that invalidate the recommendation? No. The API is still available directly through voyageai.com, as well as on AWS Marketplace and Azure Marketplace, with no MongoDB dependency. You do not need a MongoDB cluster to call Voyage.

But it belongs in your vendor risk assessment. Picking an embedding model is not a decision you can reverse over an afternoon: switching models means reindexing your entire corpus. Knowing your provider is now a component in a database vendor's product strategy changes how you read that commitment. It cuts both ways, incidentally: MongoDB's backing is also a durability guarantee that a standalone startup cannot offer.

The alternatives worth considering

Anthropic told you to compare. Here is the comparison.

ProviderModelPrice / million tokensNotable
Voyage AIvoyage-4-lite$0.02Anthropic's pick, 200M free tokens
OpenAItext-embedding-3-small$0.02best-documented ecosystem
OpenAItext-embedding-3-large$0.133072 dimensions
Cohereembed-v4$0.12multimodal, text and images
Googlegemini-embedding-001$0.153072 dimensions

Pricing sources: OpenAI, Cohere, Google.

On quality rankings, I am not going to hand you a frozen leaderboard. Embedding benchmarks shift monthly and any MTEB table in a blog post is stale before you read it. Go to the MTEB leaderboard on Hugging Face, which updates continuously, and filter by your language and task type. If your content is not English, the headline average score is close to meaningless for you.

If you want to dig into Google's multimodal side, I walked through the full pipeline in my piece on multimodal RAG with Gemini Embedding and Claude Code.

Choosing without burning three days

  • Prototyping: voyage-4-lite or text-embedding-3-small. At $0.02 per million, cost is not a decision criterion yet. Pick whichever SDK annoys you less.
  • Production, multilingual: voyage-4-large. This is where the quality gap is real and worth paying for.
  • Your corpus is code: voyage-code-3, trained for code retrieval. General-purpose models underperform badly on identifiers and syntax.
  • Legal or financial corpus: voyage-law-2 or voyage-finance-2. Domain models genuinely win on specialized vocabulary.
  • PDFs, slides, screenshots: voyage-multimodal-3.5 or Cohere's embed-v4.
  • Data cannot leave your infrastructure: voyage-4-nano, Apache 2.0 weights on Hugging Face. Self-host it.

Working code

A real Claude RAG stack has two providers: one to vectorize, one to reason.

import os
import voyageai
import numpy as np
from anthropic import Anthropic

vo = voyageai.Client()                        # reads VOYAGE_API_KEY
claude = Anthropic()                          # reads ANTHROPIC_API_KEY

documents = [
    "Refunds are available within 30 days of purchase.",
    "Our offices are closed on French public holidays.",
    "The manufacturer warranty covers 24 months, parts and labor.",
]

# 1. Indexing: input_type="document"
doc_embds = vo.embed(
    documents, model="voyage-4", input_type="document"
).embeddings

# 2. Query: input_type="query", this is not cosmetic
question = "How long does the warranty last?"
q_embd = vo.embed(
    [question], model="voyage-4", input_type="query"
).embeddings[0]

# 3. Retrieval: Voyage vectors are normalized,
#    so a dot product is enough
best = documents[int(np.argmax(np.dot(doc_embds, q_embd)))]

# 4. Claude reasons over the retrieved context
answer = claude.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{
        "role": "user",
        "content": f"Context: {best}\n\nQuestion: {question}",
    }],
)
print(answer.content[0].text)

Three expensive mistakes

Skipping input_type. The most common failure, and the quietest. Voyage prepends a different instruction depending on whether you are embedding a document or a query. The docs are blunt about it: do not omit the parameter and do not set it to None. Without it your vectors are measurably worse for retrieval, and you will never see an error, just mediocre results.

Switching models without reindexing. Two different models produce incompatible vector spaces, even at identical dimensions. Index with voyage-4 and query with text-embedding-3-small and you do not get an exception, you get noise. Migrating an embedding model means a full corpus reindex. Make the decision once, properly.

Paying full price for storage. Voyage supports quantization through the output_dtype parameter: int8 cuts storage 4x, binary cuts it 32x. On a corpus of several million chunks, your vector database bill usually dwarfs your embedding bill. Truncatable dimensions (256 instead of 1024) push in the same direction, via Matryoshka representations.

The takeaway

Looking for an Anthropic embedding model means looking for something that does not exist and probably never will. That is not a product gap, it is a deliberate and documented scope decision.

Your Claude RAG will always have two providers. Voyage AI is the sensible default, especially with 200 million free tokens to get started. But read the second sentence in Anthropic's docs, the one everyone skips: compare before you commit, because backing out means reindexing everything.

Pierre Rondeau

Pierre Rondeau

Developer and indie builder. I build products and automations with AI. Creator of Claude Hub.

LinkedIn