NEWVectors or files. Pick a path.Start →
    TrainingDriftThemes

    Dataset Versioning

    Treat versioned object storage as your dataset's source of truth. Capture complete snapshots-raw assets, embeddings, and cluster assignments-for deterministic reconstruction at any point in time.

    video
    image
    audio
    text
    Production

    "Retrieve training dataset snapshot from October 1st with all embeddings and cluster assignments"

    Why This Matters

    When datasets stop slipping out from under you, everything downstream gets easier. True reproducibility means rebuilding exact training inputs, not reconstructing from memory.

    from mixpeek import Mixpeek
    client = Mixpeek(api_key="YOUR_API_KEY", namespace="training-data")
    # 1. Every object records the dataset version it belongs to
    bucket = client.buckets.create(
    bucket_name="training-data",
    bucket_schema={"properties": {"image": {"type": "image"}}},
    )
    client.buckets.upload(
    bucket["bucket_id"],
    blobs=[{"property": "image", "type": "image", "data": "s3://your-bucket/training/v2/img-0001.jpg"}],
    metadata={"version": "v2"},
    )
    client.buckets.upload(
    bucket["bucket_id"],
    blobs=[{"property": "image", "type": "image", "data": "s3://your-bucket/training/v3/img-0001.jpg"}],
    metadata={"version": "v3"},
    )
    # 2. One collection per version, scoped with a source filter on that metadata
    v2 = client.collections.create(
    collection_name="training-v2",
    source={"type": "bucket", "bucket_ids": [bucket["bucket_id"]], "source_filters": {"filters": {"AND": [{"field": "metadata.version", "operator": "eq", "value": "v2"}]}}},
    feature_extractor={
    "feature_extractor_name": "multimodal_extractor",
    "version": "v1",
    },
    )
    # The next version is a clone with a different filter; extractor and settings carry over
    v3 = client.collections.clone(
    v2["collection_id"],
    collection_name="training-v3",
    source={
    "type": "bucket",
    "bucket_ids": [bucket["bucket_id"]],
    "source_filters": {"filters": {"AND": [{"field": "metadata.version", "operator": "eq", "value": "v3"}]}},
    },
    )
    client.collections.trigger(v2["collection_id"])
    client.collections.trigger(v3["collection_id"])
    # 3. Query each version on its own and compare
    for version in ("training-v2", "training-v3"):
    retriever = client.retrievers.create(
    retriever_name="search-" + version,
    collection_identifiers=[version],
    input_schema={"query": {"type": "text", "required": True}},
    stages=[
    {
    "stage_name": "search",
    "stage_id": "feature_search",
    "parameters": {
    "searches": [
    {
    "feature_uri": "mixpeek://multimodal_extractor@v1/vertex_multimodal_embedding",
    "query": {"input_mode": "text", "value": "{{INPUT.query}}"},
    "top_k": 20,
    },
    ],
    "final_top_k": 20,
    },
    },
    ],
    )
    results = client.retrievers.execute(retriever["retriever_id"], inputs={"query": "product demos"})
    print(version, [doc["document_id"] for doc in results["documents"][:5]])

    Feature Extractors

    Multimodal Extractor

    Unified embeddings for video, audio, image, and text: scene/silence chunking, Whisper transcription, thumbnails, and Gemini vision.

    Retriever Stages

    feature search

    Search and filter documents by vector similarity using feature embeddings

    filter