Skip to main content
Decomposition: raw objects are split into documents, each with extracted features like embeddings, transcripts, and metadata
Decomposition is the core transformation in Mixpeek. A raw file (video, PDF, image, audio) goes in as one object. It comes out as many documents, each with its own features. This is what makes sub-file search possible. You search within a video, at the segment level, instead of searching for the video as a whole.

Three Primitives

The pipeline is always:

What Decomposition Decides

The feature extractor controls how an object is decomposed into documents. The strategy depends on the content type:

Why It Matters

Without decomposition, a 30-minute video is one record. Searching for “the moment the CEO mentions revenue” means scanning the entire video. There’s no way to return a specific timestamp. With decomposition, that video becomes ~180 ten-second segments, each with its own transcript embedding, visual embedding, and scene description. A search returns the exact segment at 14:30 where the CEO says “revenue grew 22%.” The same applies to documents: a 200-page PDF becomes 200 searchable chunks instead of one monolithic record.

Feature URIs

Every feature produced by decomposition gets a URI that uniquely identifies it:
Retrievers, taxonomies, and clusters reference features by URI. This is the composition boundary: you can build a retriever that searches multimodal_embedding in one stage and face_embedding in another, even though they were produced by different extractors.

Configuring Decomposition

Decomposition is configured via the feature_extractor field on a collection:
The settings object controls the decomposition strategy. Each extractor has its own settings. See the extractor-specific pages for details:

From Video

Time, scene, and silence segmentation strategies

From Images

Visual embeddings, OCR, and structured extraction

From Audio

Silence-boundary segmentation and transcription

From Documents

Page, paragraph, and sentence chunking

Multi-Tier Decomposition

When a single extraction pass isn’t enough (e.g., you need to transcribe audio then embed the transcription then classify each chunk), you chain collections. Each tier reads the output of the previous one, forming a DAG:
The engine resolves tiers automatically and executes them in dependency order. See Multi-Tier Feature Extraction for the full guide.

Lineage

Every document tracks its lineage back to the original object:
This lets you trace any search result back through tiers to the original file. Use the Lineage API to visualize the decomposition tree.