Search

Namespace branching — git for your vector database.

Copy-on-write namespace forks let you snapshot a collection, test new embedding models, run evals, and roll back — without duplicating a single vector on disk. Fork in milliseconds, not hours.

Zero bytes copied on fork.

Step 1

Fork: metadata-only snapshot

Forking a namespace creates a new namespace record pointing at the same underlying objects. No data is duplicated — only a metadata pointer is written to your bucket.

Step 2

Write: copy-on-write isolation

Writes to the fork are isolated. New vectors land in fork-specific objects. The parent namespace is unchanged. Reads from the fork combine parent data and fork-specific writes.

Step 3

Promote or rollback

After evaluation, promote the fork to production with a metadata swap — instant, no data movement. Or simply delete the fork to roll back. The parent is untouched.

Use cases

What teams build with namespace branching.

Embedding model eval

Test new models without risk

Fork production, re-embed into the fork using the new model, run recall benchmarks, and compare. Promote only if the new model outperforms. No production disruption.

A/B testing

Route traffic to parallel namespaces

Run A/B experiments by splitting query traffic between the parent and a fork. Measure retrieval quality in production with real traffic before committing to the new model.

Staging environments

Production-identical staging for free

Fork production into a staging namespace for integration testing. Your staging environment has the same data as production — without copying the data or paying twice for storage.

Rollback

Instant rollback to any prior snapshot

Before a destructive re-indexing operation, fork the namespace. If something goes wrong, promote the fork snapshot back — rollback in milliseconds, not hours.

By the numbers

Git-like versioning for your vector index.

0 bytes

copied on fork

Instant

branch creation

CoW

storage model

branches per namespace

FAQ

Common questions

How does copy-on-write branching work in practice?

When you fork a namespace, ManyVector records a pointer to the parent snapshot. New writes go to the child only. Shared base objects are never duplicated — storage cost is proportional to the diff, not the full index.

Can I merge a branch back into the main namespace?

Yes. ns.merge(branch) promotes branch changes to the parent with a single atomic operation, with no data duplication.

How many active branches can I have?

No limit. Branches are cheap — each is a namespace with a CoW pointer. You can run dozens of eval branches simultaneously.

What are the typical use cases for namespace branching?

A/B testing embedding models, zero-downtime production rollbacks, isolated eval environments, and staging new data ingestion before promoting to live.

Version control for your vector database.