
text-embedding-3-small: Complete Guide, Dimensions, Pricing, Use Cases, and API Tutorial
text-embedding-3-small: Complete Guide, Dimensions, Pricing, Use Cases, and API Tutorial#
If you are building search, retrieval, or RAG features in 2026, there is a good chance you have looked up text-embedding-3-small.
It is one of those model names that shows up everywhere in developer tutorials, vector database examples, and semantic search pipelines.
But most pages only answer one tiny part of the story.
They tell you the name, maybe the dimensions, and then stop.
This guide is the fuller version.
You will learn:
- what text-embedding-3-small is
- what text-embedding-3-small dimensions means in practice
- why 1536 dimensions matters for storage and retrieval
- when to use this model for RAG, semantic search, and document matching
- how to test it with a real API call
If your goal is to ship something that works instead of just reading specs, this is the page you want.
What is text-embedding-3-small?#
text-embedding-3-small is an embedding model used to convert text into vectors.
Those vectors are numeric representations of meaning. Instead of storing text only as words, you turn it into a list of numbers that makes semantic similarity possible.
That is what powers:
- semantic search
- document retrieval
- FAQ matching
- recommendation systems
- RAG pipelines
- internal knowledge base search
In a typical workflow:
- you split your documents into chunks
- you convert each chunk into an embedding vector
- you store those vectors in a vector database
- you embed the user query
- you compare the query vector against stored vectors
- you retrieve the closest matches
That is why embedding models matter so much. They are often the hidden engine behind whether retrieval feels smart or dumb.

text-embedding-3-small dimensions: the quick answer#
The standard answer to the most common question is:
text-embedding-3-small dimensions = 1536
That means the output vector has 1536 values.
This was also tested during the drafting of this article through a live embeddings request, which returned a vector length of 1536.
So if you are configuring a vector database, your collection or index usually needs:
dimension = 1536
This is the setup detail that breaks many first-time implementations.
Why do text-embedding-3-small dimensions matter?#
If you are new to embeddings, the number can feel abstract.
In practice, the dimension size affects four very real things.
1. Storage cost#
Each stored vector takes space.
If you have 10,000 chunks, the difference is manageable.
If you have 10 million chunks, dimension count directly affects infrastructure cost.
2. Retrieval performance#
Higher-dimensional vectors can increase compute work, depending on your retrieval stack, database, and indexing method.
3. Schema compatibility#
If your database expects one vector size and your model returns another, inserts fail.
This is one of the most common causes of confusion when developers search text-embedding-3-small dimensions 1536.
4. Migration difficulty#
If you later switch to another embedding model with different vector size or representation, re-indexing may be required.
That can become expensive fast.
What is text-embedding-3-small good for?#
text-embedding-3-small is a practical choice when you want a balance between:
- good semantic quality
- manageable storage requirements
- lower cost
- easy scaling
It is commonly used for:
- semantic search in documentation
- support center search
- product search prototypes
- internal knowledge search
- RAG for blogs, manuals, and FAQs
- lightweight classification and clustering workflows
If your content is mostly general text and your goal is cost-efficient retrieval, this model is often a very reasonable default.
When should you not use text-embedding-3-small?#
You may want to benchmark alternatives if:
- your retrieval task is highly domain-specific
- multilingual quality matters a lot
- you are optimizing for best possible recall rather than cost efficiency
- you already operate a large retrieval system and can justify deeper evaluation
The right choice depends less on hype and more on your actual data.
A smaller, cheaper embedding model that performs well on your own dataset is often better than a “stronger” model that adds cost without meaningful gains.
text-embedding-3-small for RAG#
For many RAG systems, text-embedding-3-small is a strong starting point.
Why?
Because most early-stage RAG stacks need:
- reliable semantic matching
- low friction integration
- affordable indexing
- easy scaling across many chunks
If your RAG system is based on:
- product docs
- blog posts
- onboarding guides
- help center articles
- internal SOPs
then this model is often enough to get a solid baseline.
The bigger mistakes usually come from:
- poor chunking
- bad metadata
- missing reranking
- weak prompt grounding
not from the embedding model alone.
text-embedding-3-small vs larger embedding models#
Here is the simple tradeoff view.
| Model choice | Typical benefit | Typical cost |
|---|---|---|
| Small embedding model | cheaper, smaller vectors, easier scaling | may be less optimal for some specialized tasks |
| Larger embedding model | potentially better retrieval quality in some cases | more expensive, heavier storage, more migration risk |
For many teams, the smart move is:
- start with
text-embedding-3-small - build a clean pipeline
- measure retrieval quality on your own data
- upgrade only if the benchmark says you should
That is a better engineering workflow than starting expensive by default.
Tested API example for text-embedding-3-small#
Here is a simple API request that was validated during drafting.
import requests
url = "https://crazyrouter.com/v1/embeddings"
headers = {
"Authorization": "Bearer your-crazyrouter-key",
"Content-Type": "application/json"
}
payload = {
"model": "text-embedding-3-small",
"input": "What are the text-embedding-3-small dimensions?"
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
obj = response.json()
vector = obj["data"][0]["embedding"]
print("Embedding length:", len(vector))
print("First 5 values:", vector[:5])
Tested result#
STATUS 200
EMBED_LEN 1536
EMBED_HEAD [-0.005594, -0.007061, 0.109711, -0.037068, -0.051217]
This matters because it confirms the exact output size instead of just repeating docs from memory.
How to configure your vector database for text-embedding-3-small#
If you use Pinecone, Weaviate, Qdrant, Milvus, pgvector, or another vector store, the main thing to check is dimension alignment.
For text-embedding-3-small, your index should usually be configured with:
1536 dimensions
Also check:
- distance metric
- chunk size
- metadata filters
- re-index strategy if you change models later
A clean embedding setup is not just about the model name. It is about the entire retrieval pipeline.
How to use text-embedding-3-small in a multi-model stack#
In real products, embeddings are rarely the only model call you make.
A typical system may need:
- embeddings for retrieval
- reranking for search quality
- chat completions for final answers
- image generation for assets
- fallback routing for reliability
That is why many teams prefer a unified API layer instead of wiring each model type separately.
With Crazyrouter, you can keep embeddings, chat models, and other AI workflows under one OpenAI-compatible base URL, which makes experimentation faster and operations cleaner.
That does not replace evaluation, but it does reduce engineering friction.
Common mistakes with text-embedding-3-small#
1. Treating dimensions as a quality score#
A larger vector is not automatically better for your use case.
2. Ignoring database schema setup#
If the index dimension is wrong, the pipeline breaks.
3. Skipping real retrieval tests#
You should test with actual user queries, not only toy examples.
4. Over-optimizing too early#
Many teams would get bigger gains from better chunking and reranking before changing embedding models.
FAQ about text-embedding-3-small#
1. What is text-embedding-3-small?#
It is an embedding model used to turn text into vectors for semantic search, retrieval, and RAG workflows.
2. What are the text-embedding-3-small dimensions?#
The standard output size is 1536 dimensions.
3. Is text-embedding-3-small good for RAG?#
Yes. For many documentation, FAQ, and general retrieval tasks, it is a practical and cost-efficient default.
4. Why do developers search text-embedding-3-small dimensions 1536?#
Because vector database collections often need the correct dimension size to be configured before inserts will work.
5. Can I migrate from text-embedding-3-small to another embedding model later?#
Yes, but you may need to rebuild your index if the vector size or representation changes.
Related reading#
- /blog/text-embedding-3-small-dimensions-guide
- /blog/what-are-tokens-in-ai-complete-guide
- /blog/how-to-use-the-openai-api-beginner-tutorial
- /blog/ai-api-pricing-guide-2026
- /blog/structured-output-json-mode-ai-api-guide-2026

