Open source · Apache-2.0 · runs in your AWS account

The serverless vector database
that lives in your AWS account.

dynavec fuses Amazon DynamoDB (single-digit-millisecond metadata & document store) with Amazon S3 Vectors (billion-scale, serverless ANN) into one Python client — a drop-in alternative to Pinecone, Qdrant, Milvus, Weaviate, and OpenSearch that bills only when you use it and keeps every byte in your own region.

pip install dynavec
uv add dynavec
  • GitHub stars
  • $469/mo at 1B vectors*
  • 100%in your account
  • 0servers to run

Built on two AWS primitives you already trust

No servers, no managed-database bill — dynavec is just a Python client that orchestrates these two services inside your account.

Why dynavec

01

Cost-effective

No always-on cluster, no managed-service premium. You pay S3-priced vector storage plus DynamoDB on-demand. Idle cost approaches storage only.

02

Lowest latency

S3 Vectors returns the nearest keys; the actual documents are hydrated from DynamoDB in single-digit milliseconds via BatchGetItem.

03

Billion-scale

Amazon S3 Vectors searches across billions of vectors with 90%+ recall — the serverless ANN engine, managed by AWS.

04

Data compliance

Everything stays in your account, your region, your availability zones. dynavec only ever calls AWS with your credentials.

05

Secure & elastic

Serverless primitives scale to zero and back automatically. IAM is the only access boundary; assume-role and per-tenant namespaces built in.

06

Framework-native

LangChain and LlamaIndex vector stores plus a framework-agnostic retriever tool for LangGraph, CrewAI, and Strands.

How it works

Two AWS primitives, each doing the one job it is best at, joined by a shared key.

query Embedder (BYO key) S3 Vectors ANN · nearest keys keys + distance DynamoDB BatchGetItem · documents rerank · results Graph / ER traverse → scope

S3 Vectors — the scale tier

Holds the vector plus a small filterable metadata subset. AWS-managed approximate-nearest-neighbor over billions of vectors. Cosine or euclidean natively; cosine / dot / euclidean / manhattan (and weighted combinations) available as client-side rescoring.

DynamoDB — the speed & meaning tier

Canonical store for full text and rich metadata, hydrated by key in single-digit ms. Also holds the knowledge-graph adjacency lists that connect entities to embeddings, so you can traverse structure first and narrow the vector search.

Benchmarks

Cost across every common embedding dimension (384–3072) and 100K → 1 billion vectors. dynavec stays lowest at every point because its storage is priced like S3, not RAM.

Estimated monthly cost by scale and embedding dimension across vector databases
Monthly cost by scale & dimension. dynavec (red) is the lowest line in every panel.
Monthly cost by number of vectors, log-log
Cost by scale (768-d, 1M queries/mo).
Raw float32 storage footprint by scale and dimension
Raw float32 footprint — up to ~5.7 TB at 1B × 1536-d.

1536-dim (e.g. OpenAI text-embedding-3-small) — $/month @ 1M queries/mo

Product100K1M10M100M1B
dynavec$3$3$8$50$469
Pinecone$9$10$27$197$1,897
OpenSearch$701$701$877$8,423$83,708
Qdrant$160$160$960$8,640$85,920
Weaviate$175$175$1,050$9,450$93,975
Milvus/Zilliz$150$150$900$8,100$80,550

Cost is computed by the repository's transparent cost model from public list prices — order-of-magnitude, verify before quoting. Recall and latency figures in the repo are representative until a live AWS run replaces them. Reproduce everything with python -m benchmarks.report.

Quick start

Three steps to your first semantic search — everything runs inside your own AWS account.

01

Install

Python 3.9+. Base install is just boto3 + numpy; add an embedder extra when you want dynavec to embed for you.

pip install dynavec
# or: uv add dynavec
pip install "dynavec[openai]"
02

Grant AWS access

Create an IAM user with permission for S3 Vectors + DynamoDB, then export its keys. Full least-privilege policy in the Credentials & IAM guide.

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=us-east-1
03

Run your first query

Point dynavec at a bucket, index, and table. With auto_provision=True it creates them for you on first use.

db.upsert([Document(id="a",
    text="Mitochondria power the cell.")])
db.search("how do cells make energy?")

Full runnable snippet ↓ or read the Quickstart guide.

Pythonic by design

Clean, explicit, and framework-friendly. Bring your own embedder and API key, or your own vectors.

from dynavec import Dynavec, DynavecConfig, Document
from dynavec.embeddings import OpenAIEmbedder

cfg = DynavecConfig(
    vector_bucket="my-vectors",
    index="docs",
    table="dynavec_docs",
    dimension=1536,
    region="us-east-1",
    auto_provision=True,        # creates bucket + index + table
)
db = Dynavec(cfg, embedder=OpenAIEmbedder(model="text-embedding-3-small"))

db.upsert([
    Document(id="a", text="Mitochondria power the cell.", metadata={"topic": "bio"}),
    Document(id="b", text="Rockets reach orbit at ~28,000 km/h.", metadata={"topic": "space"}),
], auto_metadata=True)

for hit in db.search("how do cells make energy?", top_k=3):
    print(hit.score, hit.id, hit.text)

Everything in the box

  • Cosine · dot · euclidean · manhattan · weighted combos
  • GIL-aware thread concurrency for I/O-bound calls
  • Streaming, page-by-page result delivery
  • Namespace RAG & multi-tenancy
  • Product quantization for compact caching
  • Knowledge graph / entity-relationship traversal
  • Semantic · DynamoDB-TTL · Redis/ElastiCache caching
  • Update + in-account AWS Lambda transforms
  • IAM keys · profiles · cross-account assume-role
  • MCP ingestion from external sources
  • LangChain · LlamaIndex · LangGraph · CrewAI · Strands
  • Pluggable embedders: OpenAI · Gemini · Cohere · Bedrock · local

Contribute

dynavec is Apache-2.0 and community-built. Issues, PRs, and ideas are welcome.

Get set up

git clone https://github.com/\
codeforstartups/dynavec
cd dynavec
uv pip install -e ".[dev]"
pytest -q

Good first issues

Async client, an hnswlib hot tier, sort-key graph adjacency, file-parser ingestion sources, and a live-AWS test matrix are all open on the roadmap.

Browse issues →

Star & share

Stars help other developers find dynavec. If it saves you money or keeps your data in-account, let people know.

Star on GitHub () →