Overview
Branching an AI data environment used to mean one of two things: re-processing your entire corpus (slow, expensive) or experimenting directly in production (dangerous). Mixpeek solves this with a clone-based branching model that operates at every layer of the pipeline — namespace, collection, retriever, and taxonomy — so you can create fully isolated environments instantly and promote changes deliberately. This matters most when:- You want to test a new retrieval pipeline on production data without affecting live traffic
- You need a staging namespace that mirrors production for QA without re-ingesting everything
- You’re evaluating a new embedding model and want side-by-side comparison on the same corpus
- A taxonomy schema is about to change and you need a safe place to validate it first
Branching Primitives
Mixpeek resources are immutable by design — you can’t change a collection’s feature extractor or a retriever’s pipeline stages via PATCH. This preserves execution history, dependent results, and audit trails. The branching mechanism is a first-classclone operation available on every resource type.
Namespace Clone (full environment branch)
The most powerful primitive. A namespace clone deep-copies the entire environment: collections (including Qdrant vectors), retrievers, buckets, and optionally taxonomies — remapping all internal IDs so nothing points back to production.Namespace clone copies Qdrant vectors directly — your data is not re-processed. The clone is isolated: changes to collections, retrievers, or documents in staging have zero effect on production.
| Resource | What’s cloned | Notes |
|---|---|---|
| Collections | Metadata + Qdrant vectors | Vectors copied, not recomputed |
| Retrievers | Full pipeline stage config | All collection refs remapped to staging |
| Buckets | Metadata only | S3 objects are not duplicated |
| Taxonomies | Config only (optional) | Retriever refs remapped |
Collection Clone (swap extractor or source)
Clone a single collection and optionally override its feature extractor or source. This is the entry point for embedding model experimentation — run two extractors on the same corpus and compare retrieval quality.When you clone a collection without changing the feature extractor, vectors are reused. When you change the extractor, you must trigger reprocessing — vectors are model-specific and cannot be ported across embedding spaces.
Retriever Clone (pipeline experiment)
Immutable retriever stages mean the safe way to test a new ranking strategy, add a rerank stage, or adjust fusion weights is to clone the retriever with overrides.Taxonomy Clone (schema version branch)
Taxonomies are immutable in their core config (retriever_id, input_mappings, enrichment_fields). Clone to branch a schema — swap the backing retriever, adjust the hierarchy, or test a new classification model.
Common Patterns
Pattern 1: Staging environment for a production namespace
The most common use case: a full mirror of production where QA teams can validate changes before go-live.Pattern 2: Embedding model A/B test
Run two embedding models on the same corpus, then compare retrieval quality with Mixpeek’s Evaluations before committing.Pattern 3: Retriever pipeline experiment
Test a new retrieval stage (reranker, MMR, query expansion) without touching the live retriever.Pattern 4: Taxonomy version checkpoint
Before migrating an IAB or ICD taxonomy schema, snapshot the current version so you can validate in parallel.Vertical Examples
Adtech — IAB taxonomy migration
Adtech — IAB taxonomy migration
Problem: Your IAB 2.2 taxonomy needs to be upgraded to IAB 3.0. You can’t migrate production mid-campaign without validating classification quality first.Solution:
- Clone the production namespace →
ns_adtech_staging - Clone
tax_iab_v2with the new retriever trained on IAB 3.0 →tax_iab_v3_candidate - Apply
tax_iab_v3_candidateto a sample of staging documents - Validate label quality against ground truth
- Promote: update production taxonomy config once quality gates pass
Healthcare — clinical classification model upgrade
Healthcare — clinical classification model upgrade
Problem: You’re switching the ICD-10 classification retriever from GPT-4o to a fine-tuned clinical model. Patient record classification in production cannot be interrupted.Solution:
- Clone
tax_icd10_prodwith the new retriever →tax_icd10_clinical_v2 - Apply to a test collection of de-identified records
- Compare classification accuracy against the production taxonomy’s output on the same records
- Only swap production once the new model meets or exceeds current accuracy
Media — search ranking experiment
Media — search ranking experiment
Problem: Editorial wants to test a diversity-aware ranking algorithm (MMR) on the content search endpoint before rolling out to all users.Solution:
- Clone
ret_content_search→ret_content_search_mmr - Override stages to add an MMR sort step after semantic search
- Route 10% of internal QA traffic to the experimental retriever (traffic splitting handled in your application layer)
- Compare CTR, dwell time, and result diversity metrics
- Promote by cloning the staging retriever config back to production
CRE — new embedding model for property images
CRE — new embedding model for property images
Problem: A new image embedding model shows better performance on architectural/interior photos. You want to validate before migrating 5M property images.Solution:
- Clone
col_property_imageswith the new extractor →col_property_images_v2 - Trigger reprocessing (required for model changes — vectors are model-specific)
- Create
ret_property_search_v2pointing to the new collection - Run offline evaluation: compare top-5 retrieval precision on a labeled query set
- If metrics improve, migrate production: update
ret_property_searchto point to the new collection
Promotion Workflow
Branching is only useful if you have a clear path back to production. The recommended flow:- Run Evaluations on the experimental retriever
- If metrics pass, delete the old production retriever (after confirming no dependent published pages)
- Rename the experimental retriever to the production name via PATCH (name is mutable)
- Or: update your application to point to the new retriever ID directly
Best Practices
- Clone, don’t modify. Resist the urge to patch production resources for “quick experiments.” A clone takes seconds and preserves the ability to roll back.
- Retriever clones are free — they share the underlying collection (and all its vectors). You only pay for additional Qdrant storage when collection vectors diverge.
- Trigger reprocessing only when the extractor changes. Cloning a collection with the same extractor reuses existing vectors — no GPU time consumed.
- Use evaluations before promoting. The Evaluations API lets you run offline quality checks on any retriever before it touches production traffic.
- Name branches consistently. A naming convention like
{resource}_staging,{resource}_exp_{date}, or{resource}_v{n}makes it easy to identify which resources are active experiments vs. production. - Clean up stale branches. Delete experimental collections and retrievers after promotion or abandonment. Qdrant vectors from branched collections consume storage until deleted.
Related
- Namespaces — isolation boundaries and multi-tenancy
- Collections — processing pipelines and lifecycle states
- Retrievers — pipeline stages and configuration
- Evaluations — offline quality testing before promotion
- Storage Tiering — cost management for branched collections

