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, not 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.