Is Amazon S3 Vectors good enough for production?
Yes, for workloads that query occasionally, hold a lot of vectors, and care more about cost than speed: RAG over a large document set, search over an archive, one index per tenant, agent memory. AWS documents sub-second latency for cold queries, as low as 100 ms for warm ones, 90%+ average recall for most datasets, and "hundreds" of queries per second per index (AWS). If your product needs thousands of queries a second on one index, answers in under 50 ms, or more than 2,500 vector writes a second per index, it is the wrong fit, and a vector database that keeps the index in memory or on local disk is the safer choice.
S3 Vectors is a vector index built into Amazon S3. You create a vector bucket, add vector indexes to it, write embeddings with metadata, and query by similarity with metadata filters. There are no servers to provision, and you pay for storage, writes and queries (AWS).
The limits that decide it
These come from AWS's limitations page and best practices, checked on 2026-11-14.
| Limit | Value | What it means in production |
|---|---|---|
| Vectors per index | Up to 2 billion | Size is rarely the problem |
| Indexes per vector bucket | 10,000 | One index per tenant works for most SaaS products |
| Dimensions | 1 to 4,096 | Fits common text and multimodal embedding models |
| Query rate | Hundreds of queries per second per index | The ceiling most production apps hit first. Spread load across indexes or cache results |
| Write rate | 1,000 write or delete requests and 2,500 vectors per second per index | A backfill of 100M vectors into one index takes at least 11 hours |
| Batch size | 500 vectors per write | Batch writes, since each write is billed at a minimum of 128 KB |
| Results per query | Top-k up to 10,000, 100 per page | Enough for reranking pipelines |
| Metadata | 40 KB per vector, of which 2 KB filterable, 50 keys | Keep text chunks as non-filterable metadata |
| Filter constraints | Up to 100 per query on an ENHANCED index | A filter over a long ID list needs a grouping key instead |
| Fixed at creation | Dimension, distance metric (cosine or Euclidean) and non-filterable keys | Changing the embedding model means a new index |
| Recall | 90%+ average for most datasets, per AWS | Approximate search. Measure it on your own data |
| Consistency | Writes are strongly consistent | A vector is queryable as soon as the write returns |
Exceeding the request rates returns a 429 TooManyRequestsException, so production clients need retries with backoff.
Filtered queries and the index mode
Indexes have a mode, ENHANCED or CLASSIC. An ENHANCED index applies the metadata filter before the vector search, which keeps recall high even when the filter matches a small share of the index, and supports the
$startsWith operator. Vector buckets created on or after September 30, 2026 create ENHANCED indexes, and an older index can be switched (AWS). If your filtered queries return fewer results than expected, check the index mode first. Filter latency grows with the size of the index, the share it matches and the number of constraints, so prefer one selective key over long $in lists.What does S3 Vectors cost?
Prices in US East (N. Virginia), from the AWS price list published 2026-11-09 (S3 pricing):
| Charge | Price |
|---|---|
| Storage | $0.06 per GB-month of vector data, keys and metadata |
| Writes (PutVectors) | $0.20 per GB uploaded, minimum 128 KB per request |
| Query requests | $0.0025 per 1,000 |
| Data processed per query | $0.004 per TB for the first 100,000 vectors in the index, $0.002 per TB from 100,000 to 10 million, $0.0004 per TB above 10 million |
| Data returned | $0.01 per GB, with the first 512 KB per query free |
| Other requests (get, list, delete) | $0.055 per 1,000 |
The data processed charge is the one to model. Every query is billed on the size of the whole index it searches (vector data, key and filterable metadata), whatever the filter matches. Non-filterable metadata is left out of it.
A worked example. 10 million vectors of 1,024 dimensions (4 KB each as float32), each with a 36-byte key and 400 bytes of filterable metadata, come to about 42 GB.
So at this size, query volume drives the bill. Splitting the same vectors into many smaller indexes, one per tenant for example, cuts the data processed per query, because each query only reads the index it targets.
When S3 Vectors fits, and when it doesn't
| Your workload | Fit | Why |
|---|---|---|
| RAG or semantic search over millions of documents, a few queries a second | Good | Storage is cheap and the query rate is well inside the limit |
| One index per customer in a multi-tenant app | Good | 10,000 indexes per bucket, and IAM can restrict each tenant to its index |
| Archive or cold tier behind a faster store | Good | Sub-second cold queries are fine for occasional lookups |
| Agent memory and tool results | Good | Strong consistency means an agent reads what it just wrote |
| Consumer search or recommendations at high QPS on one index | Poor | Hundreds of queries per second per index is the documented ceiling |
| Ad serving, fraud checks or anything needing a p99 under 50 ms | Poor | AWS documents 100 ms for warm queries at best |
| Streaming ingest above 2,500 vectors a second into one index | Poor | The write limit is per index |
| Keyword plus vector (hybrid) search with BM25 scoring | Check | The user guide describes similarity queries with metadata filters. The S3 pricing page now also lists charges for full-text and hybrid queries, so confirm what your Region supports before relying on it |
| Re-embedding often or trying several models | Mixed | Dimension and metric are fixed per index, so each model needs a new index and a full reload |
How to test S3 Vectors before you commit
1. Take a real sample. Load 1 to 5 million of your own vectors with the metadata you will filter on, in batches of 500. 2. Measure recall. For a few hundred real queries, compute the exact top 10 with a brute-force search in NumPy or FAISS, then compare it with what S3 Vectors returns. AWS's 90% figure is an average across datasets, so yours can differ. 3. Measure filtered recall. Repeat with your most selective filters, on an ENHANCED index. 4. Measure latency cold and warm. Time the first query after an idle period and then repeated queries. Report p50 and p99, since the average hides the cold start. 5. Load-test the query rate. Ramp concurrent queries on one index until you see 429s, and note where it happens. 6. Price it. Multiply your index size by your monthly query count using the data processed rates above.
Other ways to run vector search on object storage
S3 Vectors is one of several systems that keep vectors in object storage and add caches for speed. Can you run a vector database on S3? explains the architecture they share, and vector storage tiering covers using S3 Vectors as a cold tier behind a faster database.
Frequently Asked Questions
Is Amazon S3 Vectors good enough for production vector search?
For low to moderate query rates, yes. AWS documents sub-second cold queries, warm queries as low as 100 ms, 90%+ average recall for most datasets and hundreds of queries per second per index. It suits RAG, archives, per-tenant indexes and agent memory. It is a poor fit for high-QPS search on one index, latency under 50 ms, or writes above 2,500 vectors a second per index.
How fast is Amazon S3 Vectors?
AWS documents sub-second response times for cold queries and as low as 100 ms for warm, repeated queries. Filtered queries take longer as the index grows, as the filter matches more of it, and as the filter adds constraints. Measure p50 and p99 on your own data, cold and warm.
How much does Amazon S3 Vectors cost?
In US East (N. Virginia): $0.06 per GB-month of storage, $0.20 per GB written, $0.0025 per 1,000 queries, plus a data processed charge on the size of the index each query searches ($0.004 per TB for the first 100,000 vectors, $0.002 per TB up to 10 million, $0.0004 per TB beyond). 10 million 1,024-dimension vectors cost about $2.53 a month to store and about $85 per million queries.
What is the maximum number of vectors in S3 Vectors?
Up to 2 billion vectors per vector index, 10,000 indexes per vector bucket, and 10,000 vector buckets per Region in an account. Each vector can have 1 to 4,096 dimensions.
What is the recall of Amazon S3 Vectors?
AWS says S3 Vectors delivers 90%+ average recall for most datasets, meaning results contain about 90% of the true nearest neighbours. On filtered queries recall also depends on the filter's selectivity and the index mode; ENHANCED indexes filter before searching to keep recall high. AWS recommends testing on your own data.
Can S3 Vectors replace Pinecone or another vector database?
For occasional queries over large or many small indexes, it can, at a lower storage cost. For sustained high query rates on one index or latency under 100 ms, keep a dedicated vector database, or use S3 Vectors as the cold tier behind it.