vector databases on AWS · the 2026 decision guide

Choosing a vector database on AWS: the RAG-infrastructure decision, on real cost, latency, and ops burden.

A neutral, numbers-first walkthrough of the six real options — OpenSearch Serverless, Aurora PostgreSQL with pgvector, Pinecone, Redis / MemoryDB, Neptune Analytics, and S3 Vectors — scored on cost (including the OpenSearch Serverless OCU-minimum trap), latency, scale, metadata filtering, operational burden, and how each plugs into Bedrock Knowledge Bases. Ends in a decision table by corpus size and query volume.

options compared
6
cheapest at rest
S3 Vectors
decision inputs
2
TL;DR
  • There is no single best vector database on AWS — the right choice is a function of two numbers: how many vectors you store (corpus size) and how many queries per second you serve (query volume), filtered by how much operational work you are willing to own. Pick on those axes, not on benchmarks.
  • The most important cost fact: Amazon OpenSearch Serverless bills per OpenSearch Compute Unit (OCU) hour. Classic collections keep a minimum number of OCUs running even for a tiny index, which surprises teams with a small RAG proof of concept. AWS now lets collection groups set a minimum of 0 OCUs, so check how capacity is configured. For small corpora, Aurora pgvector or S3 Vectors are often cheaper.
  • For most teams building RAG, the honest default is the cheapest store that meets your latency and filtering needs and integrates with Bedrock Knowledge Bases: Aurora PostgreSQL pgvector if your data already lives in Postgres or your corpus is small-to-mid; OpenSearch Serverless once you need scale and hybrid (keyword + vector) search and the spend is justified; S3 Vectors for huge, cost-sensitive, latency-tolerant corpora; Pinecone when you want zero database ops and will pay for it; Redis/MemoryDB only when single-digit-millisecond latency is the hard requirement.
first principles

IWhat a vector database actually does — and why the choice is a cost/latency tradeoff, not a feature contest

Before comparing six products, fix the mental model. A vector database does one core job, and once you understand that job, the differences between the options stop looking like a feature checklist and start looking like what they really are: different points on a cost, latency, and operational-burden curve.

A vector database stores embeddings — high-dimensional numeric arrays (commonly 256 to 1,536 dimensions, depending on the embedding model) that represent the meaning of a chunk of text, an image, or other content. Its core job is approximate nearest-neighbor (ANN) search: given a query vector, return the k most similar stored vectors, fast, without comparing against every vector in the corpus by brute force. Almost every implementation does this with a graph index called HNSW (Hierarchical Navigable Small World) or an IVF (inverted-file) variant. The algorithm is largely commoditized; what differs is how each product packages, prices, and operates it.

In a retrieval-augmented generation (RAG) system, the vector database is the retrieval half. You embed your documents once (offline), store the vectors, and at query time you embed the user question, ask the vector store for the most similar chunks, and pass those chunks to the model as grounding context. The vector store never talks to the language model directly — it is plumbing that decides which of your documents the model gets to read. That makes it both load-bearing (bad retrieval is the number-one cause of bad RAG answers) and, in cost terms, a line item that runs 24/7 whether or not anyone is querying.

Two properties beyond raw similarity search separate a toy from a production store. First, metadata filtering: the ability to constrain a search to vectors matching structured attributes — tenant ID, document type, date range, access-control labels — ideally as a pre-filter (narrow the candidate set before the ANN search) rather than a post-filter (search first, then throw away results), because post-filtering can return too few results or none. Multi-tenant SaaS, permissioned document search, and any "search only my org's data" requirement live or die on filtering quality. Second, hybrid search: combining dense vector similarity with sparse keyword (BM25) matching, which materially improves recall on queries with exact terms, product codes, names, or acronyms that pure semantic search fumbles.

Hold those two properties — filtering and hybrid search — alongside three cost-and-ops realities, and you have the entire decision. The realities: a vector index is memory-hungry (HNSW graphs largely live in RAM, so cost scales with corpus size whether you query or not); it usually runs continuously (idle cost is real); and someone has to operate it (provisioning, scaling, patching, backups) unless you pay a managed service to do that for you. Every option below is a different bargain across those three. The rest of this guide prices each bargain.

the landscape

IIThe six real options on AWS in 2026

These are the vector stores a team building on AWS actually chooses between in 2026. Each gets an honest profile: what it is, where it shines, where it hurts, and the cost mechanic that matters. Read this section for the shape of each option; the next sections price and rank them.

A note on scope: this guide covers the stores that integrate cleanly into an AWS-native RAG stack and that Amazon Bedrock Knowledge Bases can use as a backend (with one deliberate exception, Redis, noted below). Self-hosting a dedicated vector engine like Milvus, Weaviate, Qdrant, or Chroma on EC2/EKS is a viable seventh path, but it trades managed simplicity for full operational ownership and is justified by the same narrow conditions as any self-host decision — extreme scale economics or a specific feature need — so it is mentioned but not the focus.

Amazon OpenSearch Serverless (vector engine)

What it is: the serverless tier of Amazon OpenSearch Service, with a vector engine that does ANN (HNSW/FAISS) plus full-text (BM25) search in one system — so it natively supports hybrid search and rich metadata filtering. It is the default vector store Bedrock Knowledge Bases provisions if you let it pick.

Where it shines: scale and hybrid search. When your corpus is large (millions of vectors), you need keyword + vector retrieval together, you want sophisticated filtering and aggregations, and you would rather not run a cluster, OpenSearch Serverless is the strong choice. It autoscales capacity for you.

Where it hurts: the OCU minimum. It bills per OpenSearch Compute Unit (OCU) hour. A classic collection keeps a minimum number of OCUs for indexing and search running around the clock, even if your index holds a thousand vectors. AWS now offers collection groups whose minimum can be set to 0 OCUs, so no OCUs run when idle (AWS docs). Check which model you are on and the current OCU price before you size a small workload on it.

Aurora PostgreSQL with pgvector

What it is: Amazon Aurora PostgreSQL (or Amazon RDS for PostgreSQL) with the open-source pgvector extension, which adds a vector column type and HNSW/IVFFlat indexes to ordinary Postgres. Your embeddings live in a table next to your relational data, and metadata filtering is just a SQL WHERE clause.

Where it shines: teams that already run Postgres, small-to-mid corpora, and anyone who wants vectors and transactional/relational data in one system with one set of operational tools. Filtering is first-class SQL, joins to your existing tables are trivial, and there is no new datastore to learn. Aurora Serverless v2 scales capacity (in ACUs) with load and can scale down when idle, which keeps small-workload cost low. Bedrock Knowledge Bases supports Aurora as a backend.

Where it hurts: at very large scale (tens of millions of vectors and high QPS) a general-purpose relational engine is not as specialized as OpenSearch or a dedicated vector DB — index build times grow, memory pressure rises, and you may tune and shard harder than you would like. pgvector is excellent up to the low millions; beyond that, evaluate whether you have outgrown it.

Pinecone (AWS Marketplace / managed SaaS)

What it is: a fully managed, purpose-built vector database delivered as SaaS, available through AWS Marketplace and deployable in AWS regions. It is the "I never want to think about vector-database operations" option, and Bedrock Knowledge Bases supports it as a backend.

Where it shines: developer experience and zero ops. Its serverless tier separates storage from compute and can scale to very large corpora with usage-based pricing, so you are not paying for idle capacity the way a fixed OCU floor charges you. For teams that value speed-to-ship and have no appetite for database administration, it is compelling.

Where it hurts: it is a third-party vendor, not an AWS-native service, so it sits outside your AWS bill, your consolidated AWS commitments and credits, your IAM model, and (depending on configuration) your VPC boundary — which can matter for procurement, data-residency, and security reviews. You are also subject to its pricing model rather than AWS's. The convenience is real; so is the dependency.

Redis / Amazon MemoryDB (vector search)

What it is: vector similarity search inside an in-memory data store. Amazon MemoryDB is a Redis-compatible, durable, in-memory database with native vector search; Amazon ElastiCache (Redis OSS) also supports vector search. Everything lives in RAM.

Where it shines: latency. When you need single-digit-millisecond retrieval — real-time recommendations, semantic caching, low-latency personalization in a hot request path — an in-memory store is hard to beat. If you already run Redis/MemoryDB for caching or session state, adding vector search reuses infrastructure you operate.

Where it hurts: cost per vector. RAM is the most expensive place to store data, so holding a large corpus entirely in memory is expensive, and it scales with corpus size regardless of query rate. It is a precision instrument for latency-critical, often smaller or hot-subset workloads — not the economical home for a large general RAG corpus. Note: it is not a first-class Bedrock Knowledge Bases backend the way OpenSearch, Aurora, Pinecone, and Neptune Analytics are, so RAG-on-Knowledge-Bases teams typically choose it only for custom retrieval paths.

Amazon Neptune Analytics

What it is: the analytics engine of Amazon Neptune (AWS's graph database) with built-in vector search, so you can combine graph traversal with vector similarity in one query. Bedrock Knowledge Bases supports it, and it is the backbone of GraphRAG patterns.

Where it shines: when relationships matter as much as similarity. GraphRAG — retrieving not just semantically similar chunks but the entities and relationships connected to them — improves answer quality on highly interconnected knowledge (org structures, regulations, supply chains, knowledge graphs). If your data is genuinely a graph and you want retrieval that exploits that, Neptune Analytics is the specialized fit.

Where it hurts: it is a specialized, heavier-weight engine, not a general-purpose vector store, and it carries graph-database cost and complexity. For plain "find similar chunks" RAG with no relationship structure, it is overkill — you are paying for a graph engine you are not using.

Amazon S3 Vectors

What it is: the newest entrant — native vector storage and similarity search built directly into Amazon S3 via "vector buckets," with sub-second query latency at object-storage prices. It brings ANN search to the cheapest durable storage AWS offers, and integrates with Bedrock Knowledge Bases and OpenSearch.

Where it shines: cost at scale for latency-tolerant workloads. Because vectors sit in S3 rather than in RAM or a running cluster, the at-rest cost is dramatically lower and there is effectively no idle-compute floor — you pay for storage and queries. For very large corpora, archival or infrequently queried embeddings, or cost-sensitive RAG where sub-second (not single-digit-millisecond) latency is acceptable, it changes the economics. A common pattern: keep hot vectors in OpenSearch and tier cold vectors to S3 Vectors.

Where it hurts: it trades latency and feature richness for price. It targets sub-second, not in-memory-grade, latency, and it is younger than the alternatives, so the most demanding real-time and advanced-hybrid-search workloads still point to OpenSearch or Redis. Validate its filtering and latency against your specific workload before standardizing on it.

the one-line version

OpenSearch Serverless for scale + hybrid search (mind the minimum OCUs on classic collections). Aurora pgvector for Postgres shops and small-to-mid corpora. S3 Vectors for huge, cost-sensitive, latency-tolerant corpora. Pinecone to buy your way out of database ops. Redis/MemoryDB when single-digit-ms latency is non-negotiable. Neptune Analytics when relationships matter as much as similarity (GraphRAG).

the money

IIICost — the dimension that decides most choices (and the OCU trap in detail)

Cost is where vector-database choices go wrong most often, because the pricing models are not comparable apples-to-apples: one bills fixed compute units, one bills database capacity that scales with load, one bills storage plus queries, one bills as a SaaS subscription. Translate them all into "what does this cost for my corpus and my traffic" and the decision usually makes itself.

The structural divide is between floor-based and usage-based pricing. A floor-based store (a classic OpenSearch Serverless collection, with its OCU minimum) costs roughly the same whether you store a thousand vectors or a million low-volume ones; the floor dominates small workloads. A usage-based store (S3 Vectors; Aurora Serverless v2 scaling down; Pinecone serverless) lets cost track actual storage and queries, so small workloads stay cheap and you pay more only as you grow. The single biggest cost mistake in AWS RAG is putting a small or early-stage workload on a floor-based store.

The OpenSearch Serverless OCU minimum, spelled out

OpenSearch Serverless bills in OpenSearch Compute Units (OCUs) per hour, plus storage. On a classic collection, a minimum number of OCUs for indexing and search runs continuously, whatever your data volume or query count, and turning on redundancy adds more. AWS has since added collection groups, where you set minimum and maximum OCUs yourself and the minimum can be 0 (AWS capacity docs, checked 10 October 2026). Price the minimum you will actually run with the current OCU rate for your Region.

Why this ambushes teams: a developer wires up Bedrock Knowledge Bases, accepts the default vector store (OpenSearch Serverless), ships a small RAG proof-of-concept with a few thousand chunks, and is then surprised by a monthly bill for a workload that has barely any data or traffic. The store is excellent at the scale it was designed for. For a POC or a small production corpus on a classic collection, that minimum is mostly waste.

The honest guidance: do not default to a classic OpenSearch Serverless collection for small or early workloads. Use Aurora pgvector (scales down with Serverless v2), S3 Vectors (storage and query pricing, no compute minimum) or a collection group with a minimum of 0 OCUs while small. Move to larger OpenSearch capacity when your corpus, your QPS and your need for hybrid search at scale justify it.

How the others price

Aurora PostgreSQL pgvector: you pay for Aurora — compute (provisioned instances, or Serverless v2 in ACUs that scale with load and down toward a small floor when idle), storage, and I/O. For a small RAG corpus this can be a fraction of the OpenSearch floor, especially on Serverless v2; for a large one, a sized Aurora cluster is a predictable, well-understood cost. You are paying for a database you may already run.

S3 Vectors: storage at S3-class prices plus per-query/request charges, with no continuously running compute floor. This is the cheapest at-rest option for large or cold corpora by a wide margin — its whole reason for existing is to drop the cost of storing vectors at scale when you can tolerate sub-second rather than in-memory latency.

Pinecone: a SaaS subscription with usage-based (serverless) pricing that scales with stored vectors and operations, billed by the vendor (payable via AWS Marketplace). You are buying away operational work; price it against the engineering time you would otherwise spend operating a store, not just against AWS line items.

Redis / MemoryDB: you pay for in-memory nodes sized to hold the whole index in RAM, so cost scales with corpus size and is the highest per stored vector. Justified only when its latency is the requirement, or when you already run it.

Neptune Analytics: graph-engine pricing (memory-based capacity for the analytics engine plus storage). It carries the cost of a specialized engine; justified by GraphRAG value, not by plain similarity search.

the cost heuristic

Small corpus or early-stage (under ~1M vectors, modest QPS): Aurora pgvector or S3 Vectors, and avoid the OpenSearch OCU minimum. Large corpus needing hybrid search at scale: OpenSearch Serverless earns its OCUs. Huge, cold, or cost-sensitive: S3 Vectors. Willing to pay to skip ops: Pinecone. The floor-vs-usage distinction explains most "why is this so expensive?" surprises.

performance & capability

IVLatency, scale, and filtering — matching the store to the workload

Cost narrows the field; latency, scale, and filtering finish the decision. These are workload requirements, not vendor virtues — the question is never "which is fastest?" but "which clears the bar my workload actually sets?" Over-buying performance you do not need is just a more expensive way to be wrong.

Set your real targets before you shop. Most RAG question-answering is comfortable with retrieval in the tens-to-low-hundreds of milliseconds, because the language-model generation step that follows takes far longer anyway — shaving 10ms off retrieval is invisible next to a multi-second completion. Real-time recommendation, semantic caching, and personalization in a hot path are different: there, single-digit-millisecond retrieval can be the requirement. Know which world you are in, because it is the difference between "any of these work" and "you need an in-memory store."

Latency

Single-digit milliseconds: Redis / MemoryDB (in-memory) is the clear leader and usually the only option that guarantees it at scale.

Tens of milliseconds: OpenSearch Serverless, Aurora pgvector (well-indexed and sized), and Pinecone all land here comfortably — more than fast enough for RAG question-answering, where generation dominates total latency.

Sub-second: S3 Vectors targets this band by design — excellent for batch, archival, and cost-sensitive interactive use where sub-second is acceptable, not for hot real-time paths.

Scale

To the low millions of vectors: Aurora pgvector is comfortable and often the simplest, cheapest fit.

Millions to hundreds of millions: OpenSearch Serverless (autoscaling OCUs), Pinecone (serverless), and S3 Vectors (object-storage economics) are built for this band.

Billions / cost-dominated: S3 Vectors changes the economics by storing vectors at S3 prices; a tiered design — hot vectors in OpenSearch, cold in S3 Vectors — is an increasingly common large-scale pattern.

Filtering and hybrid search

Richest filtering + native hybrid search: OpenSearch Serverless — it is a search engine first, so BM25 + vector fusion and complex metadata filtering/aggregations are first-class. This is its strongest differentiator and the reason to accept its cost at scale.

Filtering as plain SQL: Aurora pgvector — any WHERE clause filters your vector search, and you can join to relational tables, which is powerful for multi-tenant isolation and permissioned retrieval. Hybrid search is achievable (Postgres full-text + pgvector) but is more do-it-yourself than OpenSearch.

Metadata filtering, vendor-managed: Pinecone supports metadata filtering well within its managed model. S3 Vectors and Redis support filtering; validate the exact filtering semantics (pre- vs post-filter behavior) against your workload, since this is where stores differ most in practice and where multi-tenant correctness is won or lost.

operations & integration

VOperational burden and Bedrock Knowledge Bases integration

The store you choose is something your team operates for years, and on AWS most teams are not building a custom retrieval engine — they are pointing Amazon Bedrock Knowledge Bases at a backend and letting it manage chunking, embedding, and retrieval. So two practical questions decide a lot: how much will this cost me in operational time, and does it drop cleanly into Knowledge Bases?

On operational burden, the spectrum runs from "fully managed, near-zero ops" to "you own it." Pinecone (SaaS) and S3 Vectors (it is just S3) sit at the low-ops end. OpenSearch Serverless removes cluster management and autoscales, so it is low-ops despite being powerful — the cost is financial (the OCU floor), not operational. Aurora pgvector is moderate: it is a managed database, but you still own schema, indexing strategy, sizing, and tuning — though if you already run Postgres, that burden is one you have already accepted. Redis/MemoryDB and Neptune Analytics are specialized engines that carry more operational and design weight, justified by their specific strengths.

The Bedrock Knowledge Bases angle is decisive for RAG teams. Knowledge Bases is AWS's managed RAG service: point it at an S3 data source and a supported vector store, and it handles ingestion (chunking + embedding) and retrieval for you. Its supported vector-store backends include Amazon OpenSearch Serverless (the default it will create for you), Amazon Aurora PostgreSQL (pgvector), Pinecone, Amazon Neptune Analytics (for GraphRAG), and increasingly Amazon S3 Vectors. If you want Knowledge Bases to manage your pipeline, choosing from that supported set keeps the integration first-class.

A crucial, money-saving subtlety: when you let Bedrock Knowledge Bases set everything up with defaults, it provisions OpenSearch Serverless, and you can inherit an OCU minimum. That is the right call for a large production knowledge base and the wrong call for a small POC. For small or early Knowledge Bases workloads, explicitly select Aurora pgvector or S3 Vectors as the backend instead of accepting the default. This one configuration choice is the difference between a small RAG POC costing a few dollars a month and costing several hundred.

Redis/MemoryDB is the deliberate exception to the Knowledge Bases path. It is not a first-class Knowledge Bases backend, so teams reach for it when they are building a custom retrieval layer (often for latency-critical or semantic-cache use cases) rather than using managed Knowledge Bases. If your plan is "Knowledge Bases manages my RAG," Redis is usually not the answer; if your plan is "I am hand-building a low-latency retrieval path," it may be exactly the answer.

the integration default to override

Bedrock Knowledge Bases defaults to creating OpenSearch Serverless, which can mean a minimum OCU charge on your bill even for a tiny index. For small or POC knowledge bases, explicitly choose Aurora pgvector or S3 Vectors as the backend. Graduate to the OpenSearch default when scale and hybrid-search needs justify it.

failure modes

VIThe five most common (and expensive) mistakes

Most regret in vector-database selection traces to a handful of repeatable errors. Naming them is the cheapest insurance available — each one is easy to avoid once you know it exists, and each one routinely costs teams either real money or weeks of rework.

  • Defaulting to OpenSearch Serverless for a small workload: By far the most common and most expensive error. Accepting the Bedrock Knowledge Bases default can put a minimum OCU charge on a POC that has almost no data or traffic. Fix: use Aurora pgvector or S3 Vectors while small; move to OpenSearch when scale and hybrid search justify the floor.
  • Choosing on benchmarks instead of your two numbers: Public ANN benchmarks measure raw query speed on synthetic data and rarely reflect your corpus size, query volume, filtering needs, or cost. The decision is driven by your corpus size and QPS (and your ops appetite), not by who wins a leaderboard at a workload that is not yours.
  • Ignoring metadata filtering until multi-tenancy breaks it: A store that nails similarity search can still mishandle filtered search — especially post-filtering, which can silently return too few results or leak across tenants. Test filtered, multi-tenant queries (pre-filter behavior, correctness, recall) before committing, not after a customer sees another tenant's data.
  • Over-buying latency you do not need: Paying for in-memory single-digit-millisecond retrieval when your RAG generation step takes multiple seconds is spending money to optimize an invisible part of the pipeline. Match latency to the actual requirement; for most RAG, tens of milliseconds is plenty.
  • Treating the store as permanent and un-portable: Embeddings are portable — they are just arrays — and Bedrock Knowledge Bases abstracts the backend. You can start on the cheap, correct store for today and migrate when you outgrow it by re-indexing. Do not let fear of lock-in push you into an oversized, overpriced store on day one; pick for now, and keep the embedding pipeline reproducible so re-indexing later is routine.
putting it together

VIIA reference RAG retrieval stack — and how the store fits

The vector database does not live alone. Seeing where it sits in a complete RAG retrieval flow clarifies which decisions are the store's job and which belong to the layers around it — and prevents the common error of blaming the store for problems that are really upstream.

A production RAG retrieval pipeline has the same shape regardless of which store you pick. Ingestion (offline): source documents in S3 are chunked, each chunk is embedded by an embeddings model (such as Amazon Titan Text Embeddings or Cohere Embed on Bedrock), and the vectors plus their metadata are written to the vector store. Query (online): the user question is embedded with the same model, the vector store returns the top-k most similar chunks (optionally filtered by metadata and fused with keyword results in hybrid search), an optional re-ranking step reorders the candidates for relevance, and the surviving chunks are passed to the language model as grounding context.

The vector store owns exactly two steps in that flow: storing the vectors and returning the nearest neighbors (with filtering/hybrid logic). Everything else — chunking strategy, choice of embedding model, re-ranking, prompt assembly — sits in the layers around it, and most RAG quality problems live in those layers, not in the store. A useful discipline: when retrieval quality is poor, check chunking and embeddings and re-ranking before concluding you chose the wrong database. The store is responsible for being fast, correctly filtered, and affordable; it is not responsible for whether you chunked your documents sensibly.

This is also why store choice is lower-risk than it feels. Because Bedrock Knowledge Bases (or a thin retrieval interface in custom code) sits between your application and the store, swapping backends is a re-indexing job, not a rewrite — the same property called out in the mistakes section. Pick the store that fits your corpus size, QPS, latency, filtering, and budget today; keep the ingestion pipeline reproducible; and treat the store as a component you can upgrade, not a one-way door.

the decision, by the numbers

VIIIDecision table — pick by corpus size and query volume

The whole guide collapses into this: find your row by corpus size and column by query volume, and read the recommended store. These are starting points for the common cases, not absolute laws — adjust for a hard latency requirement (push toward Redis/MemoryDB), heavy hybrid-search needs (push toward OpenSearch), or a graph-shaped corpus (Neptune Analytics).

vector store on AWS by corpus size × query volume · 2026 starting points
Corpus sizeLow QPS (POC / internal)Medium QPS (production app)High QPS / real-time
Small (< ~1M vectors)Aurora pgvector (cheapest); avoid the OpenSearch OCU minimumAurora pgvector, or OpenSearch if hybrid search neededRedis / MemoryDB if single-digit-ms required
Mid (~1M–10M)Aurora pgvector or S3 VectorsOpenSearch Serverless (hybrid + scale) or Aurora pgvectorOpenSearch Serverless; Redis for hot subset
Large (10M–100M+)S3 Vectors (cost) or OpenSearchOpenSearch Serverless, or Pinecone to skip opsOpenSearch + Redis hot tier
Huge / cost-dominatedS3 VectorsS3 Vectors hot/cold tier with OpenSearchOpenSearch hot tier + S3 Vectors cold tier
Graph-shaped (any size)Neptune Analytics (GraphRAG)Neptune Analytics (GraphRAG)Neptune Analytics + caching
Cross-cutting overrides: choose Pinecone in any cell where buying away all database ops is worth more than AWS-native consolidation; choose Redis/MemoryDB in any cell where single-digit-millisecond latency is a hard requirement; for managed RAG, prefer a Bedrock Knowledge Bases-supported backend (OpenSearch, Aurora, Pinecone, Neptune Analytics, S3 Vectors) and explicitly override the OpenSearch default when small.
the six options, side by side

OpenSearch vs Aurora pgvector vs Pinecone vs Redis vs Neptune Analytics vs S3 Vectors

The full field on one screen. Read it against your two numbers (corpus size, QPS) plus your latency, filtering, and ops constraints. No row is a verdict on its own — the right pick is the option whose profile matches your workload at the lowest justified cost.

DimensionOpenSearch ServerlessAurora pgvectorPineconeRedis / MemoryDBNeptune AnalyticsS3 Vectors
Cost shapeOCU-hours plus storage (classic collections keep a minimum; collection groups can go to 0)Aurora compute+storage (scales down)SaaS usage-basedIn-memory nodes (highest/vector)Graph-engine capacityStorage + query (lowest at rest)
Best corpus sizeMillions → 100M+Up to low millionsMillions → very largeSmaller / hot subsetGraph-shaped, any sizeLarge → huge
Latency bandTens of msTens of msTens of msSingle-digit msTens of ms (graph)Sub-second
Hybrid (BM25+vector)Native, first-classDIY (PG full-text)ManagedLimitedGraph + vectorLimited (validate)
Metadata filteringRich, first-classPlain SQL WHEREGood, managedSupportedGraph-awareSupported (validate)
Ops burdenLow (autoscaling)Moderate (you own schema)Near-zero (SaaS)Moderate–highHigher (specialized)Near-zero (it is S3)
Bedrock KB backendYes (the default)YesYesNot first-classYes (GraphRAG)Yes
Reach for it whenScale + hybrid searchPostgres shop / small-midBuy away opsSingle-digit-ms latencyRelationships matterCheap at huge scale
The most consequential single fact in this table is the OpenSearch Serverless cost shape: the OCU minimum on a classic collection makes it the wrong default for small workloads and a strong choice once scale and hybrid search justify it. For self-hosting Milvus/Weaviate/Qdrant/Chroma on EC2/EKS, expect full operational ownership in exchange for control, justified by the same narrow conditions as any self-host decision.
want the store chosen and the RAG stack built for you?
Get matched with a vetted AWS partner who designs RAG retrieval on AWS
Get matched free with a vetted AWS partner who can file it
how a match works

How a match works (example)

  1. You tell us about the work

    You fill in a short form: what you run today, what you want to move, test or build, your stage and your region.

  2. We pick one partner

    We read your answers and pick one vetted AWS consulting partner that fits the work, the stack and the region. We reply within 24 hours; your matched partner reaches out within 5 business days.

  3. The partner checks POC funding

    Your matched partner scopes the test with you. Then it checks whether the test qualifies for POC (proof of concept) funding. A POC can fit whether or not you run on AWS today.

  4. The partner files, AWS decides

    If the work qualifies, the partner files the funding request with AWS. AWS reviews it and decides. The amount depends on the workload.

  5. You pay nothing

    CloudRoute is free for startups. Partners pay CloudRoute a monthly membership plus 10% of AWS-approved funding.

AWS Activate credits are separate, and you apply for them yourself. Use Activate Founders if no investor backs you. Use Activate Portfolio with the Org ID or invite from your VC, accelerator, incubator or angel group if it is an Activate Provider. A consulting partner cannot apply for Activate on your behalf.

faq

Common questions

What is the best vector database on AWS for RAG?
There is no single best one — it depends on your corpus size and query volume, filtered by how much operational work you want to own. As a practical default: use Aurora PostgreSQL with pgvector for small-to-mid corpora or if your data already lives in Postgres; move to Amazon OpenSearch Serverless when you need scale plus hybrid (keyword + vector) search and the cost is justified; use Amazon S3 Vectors for huge, cost-sensitive, latency-tolerant corpora; choose Pinecone to buy away all database operations; and reach for Redis/MemoryDB only when single-digit-millisecond latency is a hard requirement. All except Redis are first-class Bedrock Knowledge Bases backends.
Why is Amazon OpenSearch Serverless so expensive for a small RAG project?
Because it bills per OpenSearch Compute Unit (OCU) hour, and a classic collection keeps a minimum number of OCUs running whatever your data or traffic. Redundancy adds more. AWS now offers collection groups where the minimum can be set to 0 OCUs, so check which model you use and the current OCU price for your Region. For small workloads, Aurora pgvector or S3 Vectors are often cheaper.
Should I use OpenSearch or pgvector for vector search on AWS?
Use Aurora PostgreSQL with pgvector when your corpus is small-to-mid (up to the low millions of vectors), your data already lives in Postgres, or you want vectors and relational data in one system with SQL-based metadata filtering — it scales down cheaply on Aurora Serverless v2 and avoids the OpenSearch cost floor. Use OpenSearch Serverless when you need large scale (millions to hundreds of millions of vectors), native hybrid search (BM25 keyword fused with vector similarity), rich filtering and aggregations, and the spend is justified. A common path is to start on pgvector and migrate to OpenSearch by re-indexing once you outgrow it.
What is Amazon S3 Vectors and when should I use it?
Amazon S3 Vectors brings native vector storage and similarity search to Amazon S3 via vector buckets, offering sub-second query latency at object-storage prices. Use it for very large, cost-sensitive, or infrequently queried corpora where you can tolerate sub-second (rather than single-digit-millisecond) latency — it has the lowest at-rest cost of any option because vectors live in S3 rather than in RAM or a running cluster, and there is no continuous compute floor. A popular pattern is tiering: keep hot, frequently queried vectors in OpenSearch and cold vectors in S3 Vectors. It integrates with Bedrock Knowledge Bases and OpenSearch. Validate its filtering semantics and latency against your specific workload first.
Is Pinecone worth it over AWS-native vector stores?
Pinecone is worth it when buying away all database operations is more valuable to you than AWS-native consolidation. It is a fully managed, purpose-built vector database (available via AWS Marketplace and supported by Bedrock Knowledge Bases) with strong developer experience and serverless usage-based pricing that avoids paying for idle capacity. The tradeoff: it is a third-party vendor sitting outside your AWS bill, your AWS credits and commitments, your IAM model, and potentially your VPC boundary, which can complicate procurement, security reviews, and data residency. Price it against the engineering time you would otherwise spend operating a store — for some teams that is a clear win; for others, AWS-native (Aurora pgvector or OpenSearch) is the better fit.
When should I use Redis or MemoryDB for vector search?
Use Redis or Amazon MemoryDB for vector search only when single-digit-millisecond retrieval latency is a hard requirement — real-time recommendations, semantic caching, or low-latency personalization in a hot request path — or when you already run Redis/MemoryDB and want to reuse it. Because everything lives in RAM, it is the lowest-latency option but also the most expensive per stored vector, so it is a poor home for a large general RAG corpus. It is also not a first-class Bedrock Knowledge Bases backend, so teams typically use it for custom retrieval paths rather than managed RAG. For most RAG question-answering, where the language-model generation step dominates latency, an in-memory store is over-buying speed you will not notice.
What is Neptune Analytics and when does GraphRAG make sense?
Amazon Neptune Analytics is the analytics engine of Amazon Neptune (AWS's graph database) with built-in vector search, letting you combine graph traversal with vector similarity in one query — the foundation of GraphRAG. It makes sense when relationships matter as much as similarity: retrieving not just semantically similar chunks but the entities and relationships connected to them, which improves answers on highly interconnected knowledge such as org structures, regulations, supply chains, or knowledge graphs. It is supported by Bedrock Knowledge Bases. For plain "find similar chunks" RAG with no relationship structure, it is overkill — you would be paying for a graph engine you are not using, so reserve it for genuinely graph-shaped data.
Does Amazon Bedrock Knowledge Bases lock me into one vector database?
No. Bedrock Knowledge Bases supports multiple vector-store backends: Amazon OpenSearch Serverless (the default it provisions), Amazon Aurora PostgreSQL with pgvector, Pinecone, Amazon Neptune Analytics for GraphRAG, and Amazon S3 Vectors. It abstracts ingestion and retrieval so the backend is swappable. The key caution: if you accept the defaults, Knowledge Bases creates OpenSearch Serverless and you can inherit a minimum OCU charge, which is wrong for a small POC. Explicitly choose Aurora pgvector or S3 Vectors for small workloads. Because embeddings are portable and the pipeline is reproducible, migrating between backends later is a re-indexing job, not a rewrite.
How do I estimate the cost of a vector database on AWS?
Translate every option into "cost for my corpus and my traffic," because the pricing models are not directly comparable. OpenSearch Serverless bills OCU-hours plus storage; classic collections keep a minimum OCU charge whatever the size, so it dominates small workloads unless you use a collection group with a minimum of 0. Aurora pgvector is Aurora compute + storage, which scales down on Serverless v2 for small workloads and is predictable when sized for large ones. S3 Vectors is storage at S3 prices plus per-query charges with no compute floor, the cheapest at rest. Pinecone is SaaS usage-based pricing billed by the vendor. Redis/MemoryDB scales with in-memory node size, the highest per vector. Estimate by your vector count, dimensions, and QPS, and remember to price the floor-vs-usage distinction; it explains most surprises.

Want the right vector store chosen and the RAG stack built?

We pick one vetted AWS partner who chooses the vector database for your corpus and traffic and builds the retrieval pipeline on Bedrock. If it is a test, or new AI work on AWS, the partner can check POC or IW funding for it: $50K to $150K for startups. Depends on the workload; AWS approves. We reply within 24 hours; your matched partner reaches out within 5 business days.

we reply within24 hours
CloudRoute fee for startups$0