NEWVectors or files. Pick a path.Start →
    Infrastructure
    8 min read
    Updated 2026-11-14

    Is Amazon S3 Vectors Good Enough for Production Vector Search?

    Amazon S3 Vectors is good enough for production when queries are occasional or spread across many indexes, writes stay under 2,500 vectors a second per index, and about 90% recall with 100 ms to sub-second latency is acceptable. It falls short for high query rates on one index, single-digit-millisecond latency or heavy write streams. AWS's documented limits, current prices with a worked 10M-vector example, and how to test it on your own data.

    Ethan Steininger
    By , Founder & CEO, Mixpeek
    S3 Vectors
    Vector Databases
    Object Storage
    AWS
    Vector Search
    Cost

    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.

    LimitValueWhat it means in production
    Vectors per indexUp to 2 billionSize is rarely the problem
    Indexes per vector bucket10,000One index per tenant works for most SaaS products
    Dimensions1 to 4,096Fits common text and multimodal embedding models
    Query rateHundreds of queries per second per indexThe ceiling most production apps hit first. Spread load across indexes or cache results
    Write rate1,000 write or delete requests and 2,500 vectors per second per indexA backfill of 100M vectors into one index takes at least 11 hours
    Batch size500 vectors per writeBatch writes, since each write is billed at a minimum of 128 KB
    Results per queryTop-k up to 10,000, 100 per pageEnough for reranking pipelines
    Metadata40 KB per vector, of which 2 KB filterable, 50 keysKeep text chunks as non-filterable metadata
    Filter constraintsUp to 100 per query on an ENHANCED indexA filter over a long ID list needs a grouping key instead
    Fixed at creationDimension, distance metric (cosine or Euclidean) and non-filterable keysChanging the embedding model means a new index
    Recall90%+ average for most datasets, per AWSApproximate search. Measure it on your own data
    ConsistencyWrites are strongly consistentA 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):

    ChargePrice
    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.

  1. Storage: about $2.53 a month.
  2. Loading it once: about $8.44.
  3. Each query processes the whole index, about $0.000083, so 1 million queries a month cost about $83 in data processed plus $2.50 in requests.


  4. 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 workloadFitWhy
    RAG or semantic search over millions of documents, a few queries a secondGoodStorage is cheap and the query rate is well inside the limit
    One index per customer in a multi-tenant appGood10,000 indexes per bucket, and IAM can restrict each tenant to its index
    Archive or cold tier behind a faster storeGoodSub-second cold queries are fine for occasional lookups
    Agent memory and tool resultsGoodStrong consistency means an agent reads what it just wrote
    Consumer search or recommendations at high QPS on one indexPoorHundreds of queries per second per index is the documented ceiling
    Ad serving, fraud checks or anything needing a p99 under 50 msPoorAWS documents 100 ms for warm queries at best
    Streaming ingest above 2,500 vectors a second into one indexPoorThe write limit is per index
    Keyword plus vector (hybrid) search with BM25 scoringCheckThe 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 modelsMixedDimension 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.

  5. turbopuffer is a hosted search engine whose storage is object storage, with caches on its query nodes.
  6. LanceDB is an open-source embedded database built on the Lance file format, which can read and write directly from S3.
  7. Mixpeek MVS is a vector store whose write-ahead log, snapshots and cold tier live in object storage, with hot, warm and cold tiers. It runs dense, sparse and BM25 hybrid search in one query and can keep data in your own S3 or GCS bucket on dedicated and self-hosted deployments. See MVS, pricing and the best vector databases to compare options.


  8. 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.

    Sources



  9. AWS: Working with S3 Vectors and vector buckets
  10. AWS: S3 Vectors limitations and restrictions
  11. AWS: S3 Vectors best practices
  12. AWS: Metadata filtering
  13. AWS: Amazon S3 pricing
  14. Managed Mixpeek

    Put multimodal search to work

    Connect a bucket and Mixpeek runs the whole multimodal search pipeline for you: extraction, indexing, and search over your own objects. No models to wire up, nothing to host.

    Start with Managed
    MVS · bring your own

    Already have vectors?

    Keep your embeddings on your own cloud and run dense, sparse, and BM25 search directly on object storage. From $25/mo.

    Start with MVS

    Run this on your own data

    Point Mixpeek at the storage you already have and search your video, images, audio, and documents the way this guide describes. Build starts at $25/mo for up to 1M vectors.

    Search your own archiveRead Docs

    Related guides

    Infrastructure

    Why Is the First Vector Search Query on S3 Slow? Cold, Warm and Cached Latency, Measured

    The first vector search query on S3 or GCS is slow because the index must be fetched from the bucket before anything can be ranked. Measured on Mixpeek's vector store: a cold query at 1M x 768 had a p50 of 0.697 s, a whole-partition layout read 391 MB where a range-read layout read 3.1 MB, and cached queries ran at a p50 of about 50 ms. What drives cold latency, why recall drops on large indexes, and how to make the first query faster.

    Read guide →
    Infrastructure

    Write-Ahead Logs on Object Storage: How S3 Becomes a Database's Durability Layer

    A write-ahead log acknowledges a write the moment it is durable, before any index work happens. Move that log onto S3 or GCS and the bucket becomes the durability layer: recovery, read replicas and change feeds all become readers of one chain of sequenced objects. Covers what a WAL is, why object storage changes the design, the two coordination problems it creates (writer fencing and garbage collection that could delete the only copy of a write), how conditional writes solve them, and the shipped write path in Mixpeek MVS.

    Read guide →
    Infrastructure

    Compute Pushdown: Why Your Vector Search Over Object Storage Is Slow

    Searching data that lives in S3 usually means downloading it first. Compute pushdown inverts that: send the predicate to the bytes instead of the bytes to the predicate. Covers what can and cannot be pushed down, why the network is the bottleneck rather than the math, the prior art from Parquet and S3 Select to Aurora, and how to tell whether pushdown would actually help your workload.

    Read guide →