inputs.
Stage shape. Every stage is
{ "stage_name", "stage_type", "config": { "stage_id", "parameters" } }. stage_name is your label; stage_id is the implementation (feature_search, rerank, attribute_filter, …); stage_type is the category (filter, sort, reduce, group, enrich, apply). See Retrievers and Stages.Create + execute (every recipe uses this)
Multimodal RAG
Retrieve context for an LLM across a video’s visual content and transcript, fuse with RRF, rerank, and format into a single prompt-ready context block.Hybrid Search (dense + keyword/BM25)
Fuse semantic recall (dense vectors) with exact-keyword precision (BM25) under RRF, so brand names, SKUs, and prices like$9.99 still match. Requires a text payload index (see Text Indexes).
rrf here: it ranks by position, immune to the cosine-vs-BM25 score-scale mismatch.
Search Across Languages (cross-lingual)
Mixpeek’s text and multimodal embeddings are multilingual (E5-Large / Gemini, 100+ languages) and every language lands in the same vector space. So a query in one language retrieves semantically matching content in any language. You need no translation step, no per-language index, and no language parameter. Query in English, match Farsi, Mandarin, or Spanish transcripts and captions."discussion of sanctions" returns segments whose transcript or caption is in another language, ranked by meaning, not keywords. For audio/video collections, transcription is produced in the source language (multimodal with run_transcription: true, or universal; Whisper detects the source language per segment and covers 99 of them) and the multilingual embedding is what makes it retrievable cross-lingually. Point feature_uri at that extractor’s transcript embedding, e.g. mixpeek://multimodal_extractor@v1/multilingual_e5_large_instruct_v1.
Mixpeek retrieves across languages; it does not translate. There is no translation output field. Matched text comes back in its original language. If you need it rendered in the reader’s language (e.g. original + English side by side), append an Each result then carries both
llm_enrich stage that translates each result into a new field:content (original) and translation (English) for side-by-side display. This is the recommended path. Reach for a custom extractor only if you need translation baked in at ingest time.Video Moment Localization
Search a video and collapse matching segments into a handful of seekable moments with start/end timestamps.Face Search (1:N identification)
Find every clip a person appears in by passing a reference face image as acontent query against the face embedding.
Reverse Image Search + Dedup
Find visually similar items from other sources, deduplicated.Search OCR Text from Scanned PDFs
Scanned and archival PDFs are OCR’d (and VLM-corrected for low-confidence blocks) by the document graph extractor, which embeds each text block. So OCR’d text is searchable exactly like any other text: no separate OCR index or step. Optionally keep only high-confidence blocks, or target a layout type (e.g. onlytable blocks).
page_number, bbox, object_type), limited to high-confidence OCR. Drop the high_confidence stage to include fair/poor blocks, or filter object_type to table/form to target structured regions.
Search + Classify
Search, then attach an LLM/taxonomy label to each result in one pipeline.label. For NSFW/safety classification use the classify stage; for taxonomy-backed labeling see Taxonomies.
Scan a batch of inputs
Any retriever can run many queries at once, which suits moderating an upload queue or scanning a catalog:Composing recipes
Stages are independent: add, remove, or reorder them. Common extensions: append arerank for precision, an attribute_filter for metadata scoping (the optimizer pushes it down for you), or a rag_prepare to format for an LLM.
