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.

keys + distance traverse → scope query Embedder BYO key OpenAI · Cohere · BYO 1 S3 Vectors ANN · nearest keys 90%+ recall billions of vectors AMAZON AWS MANAGED 2 DynamoDB BatchGetItem · documents single-digit ms hydration 3 Graph / ER optional layer KG · adjacency lists rerank · results scored documents MMR · RRF · BM25 4

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.

Monthly cost by scale & dimension · 1536-dim · 1M queries/mo. dynavec (coral) is the lowest at every scale.
Cost by scale (768-d, 1M queries/mo) — log-log scale.
Raw float32 footprint — up to ~5.7 TiB at 1B × 1536-d.
Recall ÷ Latency score — higher recall at lower query latency. Representative estimates; run python -m benchmarks.report to reproduce.

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

Estimate your own cost

Estimated: $0.00 / mo

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 () →