Embedding costs are the per-token price an embedding model charges to turn documents and search queries into vectors, and they are only one of four cost parts of retrieval over your own documents: the corpus is embedded, the vectors are stored, the index is queried on every search, and every model request pays for the retrieved passages as input tokens. The last part grows with every request and costs many times more per token: gpt-6.1-sol and Gemini 3.1 Pro Preview charge ten to a hundred times the rate of their provider's embedding models for an input token.

How it works

Indexing splits documents into chunks, embeds each one and stores it as a vector with metadata; each request embeds the question, and the index returns the closest chunks for the prompt. Each step has its own unit:

Cost partWhen it is paidUnitWhat sets the quantity
Embedding the corpusat indexing and on every rebuildembedding model input tokenscorpus size, chunk overlap, rate of change
Storing vectorscontinuouslyGB per month or day, or capacity per hourvectors × dimensions × bytes per dimension, plus metadata
Querying the indexper searchper call, per data processed, or within the capacitysearches per second, index size
Passages in the prompton every model requestlanguage model input tokensnumber of results × chunk length

Prices in this section are list prices in USD, read on 2026-10-16.

Embedding models. OpenAI charges USD 0.02 per million input tokens for text-embedding-3-small and USD 0.13 for text-embedding-3-large; their vectors have 1,536 and 3,072 dimensions by default and can be shortened with the dimensions parameter. Google charges USD 0.20 per million text tokens for gemini-embedding-2 on the paid tier, half that through the Batch API; it returns 3,072 dimensions by default and recommends 768, 1,536 or 3,072. Anthropic offers no embedding model of its own and refers to a third-party provider. Vectors from different models cannot be compared: at Google, switching from gemini-embedding-001 to gemini-embedding-2 means embedding the whole corpus again.

Vector stores. They bill in three patterns:

  • Provisioned capacity. Azure AI Search on the Dedicated model bills search units, replicas times partitions, at an hourly rate per tier. The vector quota is set per partition by memory, since HNSW indexes stay in memory, so more vectors need more partitions or a larger tier. Vector Search in Google's Gemini Enterprise Agent Platform bills every node serving a deployed index per hour, plus USD 3.00 per GiB processed whenever an index is built or updated.
  • Consumption. Amazon OpenSearch Serverless bills OpenSearch Compute Units (OCUs) per hour, separately for indexing and search, and storage per GB-month. NextGen collections scale to zero OCUs after ten minutes without activity; for Classic collections AWS bills at least two OCUs for an account's first collection, and vector search collections get OCUs of their own. Amazon S3 Vectors bills logical storage per GB-month, uploads per GB, and queries per call plus a charge for data processed that grows with the size of the index. Azure AI Search Serverless (preview) has billed compute units per hour and storage per GB-month since 2026-09-13.
  • Managed retrieval tools. OpenAI's file search bills vector storage beyond the first free GB at USD 0.10 per GB per day, measured on the parsed chunks with their embeddings, and each tool call on top. In the Gemini API's file search, embeddings cost only when files are indexed; storing them and embedding queries are free. Amazon Bedrock Knowledge Bases bills its managed variant per GB of raw data per month and per 1,000 retrieval calls, parsing and embeddings included; the customer-managed variant runs on a vector store and embedding model you pay for at their own prices.

Passages in the prompt. Whatever the index returns is billed at the language model's input rate as part of the context, as tokens, requests and context explains; Google states it for file search too. OpenAI splits files in a vector store into 800-token chunks with a 400-token overlap by default, and a search returns up to 10 results by default, 50 at most. In the file search tool, a lower max_num_results saves tokens and latency, though OpenAI warns that answers can suffer.

What it means for your cost

Embedding scales with the corpus and its rate of change, storage with vector count and dimensions, passages with the number of model requests. For a feature with real traffic, results and chunk length decide the cost, not the embedding price. Three settings each act on one factor:

  • Results and chunk length set the extra input tokens per request: results times chunk length, on every request.
  • Dimensions and data type set storage. Google and AWS both count 4 bytes per dimension, so 768 dimensions instead of 3,072 take a quarter of the space; Azure AI Search names narrower data types and quantisation to cut vector quota use.
  • Overlap multiplies what is embedded and stored. With chunk length c and overlap o, each token sits in c / (c − o) chunks on average, so twice with OpenAI's default of 800 and 400, the largest overlap it allows.

For the vector store, the traffic pattern decides: provisioned capacity costs the same with no queries, while models that scale to zero cost only storage when idle. An index behind a rarely used feature belongs on the list of idle and orphaned resources. The services many indexes run on are covered in managed databases and block, object and file storage, model rates in AI model pricing and rate cards, and cheaper repeated context in LLM caching, batching and routing.

Where it goes wrong

  • An unused index keeps billing. The invoice shows search service hours with no queries. The cause: provisioned and minimum capacity (search units, nodes of a deployed index, Classic collections) runs regardless of load.
  • More results than the answer needs. Input tokens per request far exceed the question. The cause: defaults such as ten results stay while the answer uses one or two.
  • Unchanged documents are embedded again. Embedding cost appears for the whole corpus on every run. The cause: a full rebuild instead of an incremental update. In Vector Search, streaming updates also trigger a compaction billed like a rebuild.
  • More dimensions than the task needs. Storage and capacity grow with no better results. The cause: the 3,072-dimension default stays although OpenAI and Google both offer shorter vectors.

Example

List prices in USD, read on 2026-10-16: text-embedding-3-small and gpt-6.1-sol on the OpenAI API, standard processing, input up to 272,000 tokens; Vector Search index building, the same in all regions according to Google.

CalculationResult
embedding 1,000 tokens once, text-embedding-3-small at USD 0.02 per millionUSD 0.00002
the same 1,000 tokens as a passage in one request, gpt-6.1-sol at USD 2.00 per million input tokensUSD 0.002 per request
OpenAI vector store default: 10 results × 800 tokensup to 8,000 input tokens, up to USD 0.016 per request on gpt-6.1-sol
per million vectors at 3,072 dimensions × 4 bytes11.44 GiB, one build USD 34.33
per million vectors at 768 dimensions × 4 bytes2.86 GiB, one build USD 8.58

A token costs a hundred times more as a passage than to embed, and it is paid on every request rather than once per document version.

Sources

Read on 2026-10-16. OpenAI pricing, embeddings, retrieval and vector stores and file search; Google Gemini API pricing, embeddings, file search and Gemini Enterprise Agent Platform pricing; Anthropic embeddings; AWS Amazon OpenSearch Service pricing, Amazon S3 Vectors, Amazon Bedrock Knowledge Bases, build a knowledge base with vector stores and Amazon Bedrock pricing; Microsoft Azure AI Search pricing, choose a pricing model and tier and vector index size.