# DynamoDB Vector Search vs S3 Vectors vs OpenSearch / MemoryDB / Bedrock KB

Verified against AWS DynamoDB Vector Search docs, [DynamoDB pricing](https://aws.amazon.com/dynamodb/pricing/), and the [Aug 5, 2026 GA announcement](https://aws.amazon.com/about-aws/whats-new/2026/08/amazon-dynamodb-vector-search/) as of **2026-08-06**.

Use after reading the [DynamoDB vector search GA guide](https://www.factualminds.com/blog/amazon-dynamodb-vector-search-ga-2026/). Score each row **0–2**. Sum ≥ 14 → pilot DynamoDB vector search on an on-demand table this sprint. Sum 8–13 → keep ops in DynamoDB but evaluate S3 Vectors or OpenSearch for the retrieval path. Sum &lt; 8 → stay on your current vector store until a blocker clears.

| # | Question | 0 | 1 | 2 |
|---|----------|---|---|---|
| 1 | Operational source of truth already lives in DynamoDB? | Corpus/docs only in S3 or elsewhere | Partial (some keys in DDB) | Product/session/agent state in DDB |
| 2 | Latency SLA for similarity search is single-digit ms? | Hundreds of ms OK | ~50–100 ms | p95 &lt; 10 ms target |
| 3 | Top-K needs stay ≤ 100 candidates per query? | Need 1k–10k for rerank | Sometimes &gt; 100 | Always ≤ 100 |
| 4 | Filters are exact-match (eq) on projected attributes? | Need `BETWEEN` / range / BM25 hybrid | Mix of eq + rare ranges | Exact-match filters only |
| 5 | Embedding dims ≤ 4,096 and distance fn matches the model? | Research dims / unknown metric | Dim OK, metric TBD | Dim + Cosine/Euclidean/Dot locked |
| 6 | Table can run **on-demand** capacity (vector indexes require it)? | Must stay provisioned | Migration planned | Already on-demand |
| 7 | Willing to avoid a sync pipeline to a second vector DB? | Sync already invested / required | Evaluating | Sync is the pain you want gone |
| 8 | Workload is agent memory, product similarity, recs, or colocated RAG chunks? | Full-document RAG corpus only | Mixed | Colocated ops + vectors |
| 9 | ≤ 5 vector indexes per table is enough (quota; raise via Support)? | Need many named indexes | 3–5 planned | 1–2 indexes |
| 10 | FinOps owner will track vector write GB + search GB + index storage separately? | No vector line-item owner | Ad-hoc CE | Tagged + CE report |

## Store picker (quick rule)

| Prefer | When |
| ------ | ---- |
| **DynamoDB vector search** | Ops data already in DynamoDB; single-digit ms ANN; topK ≤ 100; exact-match filters; on-demand table; no sync pipeline |
| **S3 Vectors** | Large corpus, moderate latency OK, Bedrock Knowledge Bases backend, wide topK (up to 10k as of June 2026) — see [S3 Vectors guide](https://www.factualminds.com/blog/amazon-s3-vectors-native-vector-storage/) |
| **OpenSearch Serverless (vector engine)** | Hybrid BM25 + k-NN, complex filters, established search UX, HIPAA-established path |
| **MemoryDB / Valkey vector** | Ultra-hot in-memory retrieval colocated with cache; smaller working set |
| **Bedrock Knowledge Bases** | Managed ingestion + chunking + retrieval; you do not want to own embedding pipelines |

## Hard constraints (DynamoDB vector search)

- **On-demand only** — vector indexes are not available on provisioned tables.
- **topK ≤ 100** per `SearchVectors` call.
- **Max 5 vector indexes** per table (quota increase via Support).
- **Inline filters** — exact-match only; no `BETWEEN` / `BEGINS_WITH`.
- **Vector index partition key** — each search is scoped to one partition key value; omit only for small indexes.
- **Dims ≤ 4,096**; distance: Euclidean, Cosine, or Dot product.
- **Global tables** — vector index definition replicates; ANN results can differ slightly across Regions; indexing is async even on MRSC.

## Pricing sketch (AWS published example)

From the [DynamoDB pricing](https://aws.amazon.com/dynamodb/pricing/) on-demand vector search example (rates vary by Region — re-check before budgeting):

- 1M items × 4 KB, **10 vector writes/s** + **10 searches/s** for 30 days
- Underlying table ≈ **$65.75**/mo; vector search add-on ≈ **$55.54**/mo (**$0.52/GB** vector writes, **$0.002/GB** search processed/returned, **$0.25/GB-mo** index storage in the example)
- **Total ≈ $121.29**/mo

Dimensions: vector write GB, vector search GB (processed + returned), vector index storage GB-month — billed in addition to base table WRU/RRU and storage. 1 KB minimum per write/search operation.

## Related

- [Developer guide — Using vector indexes](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/VectorSearch.html)
- [S3 Vectors: 10,000 results per query](https://www.factualminds.com/blog/amazon-s3-vectors-native-vector-storage/)
- [DynamoDB pricing: on-demand vs provisioned](https://www.factualminds.com/blog/amazon-dynamodb-pricing-on-demand-provisioned-gsi-streams/)
- [RAG on Bedrock Knowledge Bases](https://www.factualminds.com/blog/how-to-build-rag-pipeline-amazon-bedrock-knowledge-bases/)
