Namespaces
Multi-tenant / multi-collection isolation on a single index.
Every operation takes a namespace. dynavec tags each vector with it and scopes queries
automatically, so one index can host many tenants. DynamoDB keys are "{namespace}#{id}" for even
partition distribution.
kb = db.namespace("tenant-42") # a view bound to one namespace
kb.upsert([Document(id="1", text="private doc")])
kb.search("scoped to this tenant only", top_k=4)
kb.delete(["1"])
Namespaces are the recommended way to do per-customer RAG: same infrastructure, clean
data isolation, no cross-tenant leakage.