Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes
Every object ingested into Mixpeek is fingerprinted with a SHA-256 content hash, and every document produced from it carries that hash in its system envelope alongside a full lineage record. Together they answer the two questions every pipeline eventually asks:
Have I already processed this? — the content hash.
What downstream work is stale now that this changed? — the lineage chain.
The hash is computed from the source content at ingestion and stored:
on the object (in the bucket), and
on every document derived from it (content_hash in the document’s system envelope).
Two objects with identical bytes produce the same hash — regardless of filename, upload time, or path. A changed file produces a new hash, which is what marks its derived documents as stale.“Latest version” of an asset is therefore a content-hash lookup, not a version counter you maintain yourself.
When you submit a batch, dedup_strategy controls how objects that were already processed in a prior batch are handled. Dedup is scoped to the (bucket, collection) pair — an object is a duplicate if the target collection already has documents produced from that same source object.
Strategy
Behavior
Cost profile
skip(default)
An object is reprocessed only if its content or the collection’s extractor configuration changed since it was last extracted; everything else is skipped
Free for unchanged content — no extraction, no inference
replace
Every object is reprocessed. Once its new documents are written, its earlier documents in the collection are deleted. If the batch fails, or fails on that object, its earlier documents are kept
Full extraction cost; use for a clean rebuild after the source content or the extractor configuration changed
force
Every object is reprocessed and its documents are overwritten in place. Documents a re-run no longer produces are not removed
Full extraction cost; prefer replace, which also removes those
skip reprocesses an object when its content or the extractor configuration changed since it was last extracted, and skips everything else. It does not delete documents a re-run no longer produces, for example the extra chunks left behind when a new chunking setting yields fewer of them. For a clean rebuild that removes those, use replace.
Derived assets stay in sync with their source through the combination of both mechanisms:
A source object’s content changes → its hash changes.
Re-submitting with replace (or re-syncing the source) reprocesses it — and every derived document downstream in its lineage (transcode → embed → tag) is rebuilt from the new source.
Sources whose hash didn’t change are skipped — unchanged content is never re-paid for.
This is what keeps N derived artifacts consistent with one upstream asset without a separate file system or job-tracking database: the document is the record, the hash is the version, and lineage is the dependency graph.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mixpeek","colors":{"primary":"#FC5185","light":"#FFA0BD","dark":"#364F6B"},"logo":{"light":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f","dark":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/dark.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=e18979c495dbd68be4fc44473098773e"},"favicon":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/favicon.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=8be5d2f6dc7e4cb44127a0493d57cde1","api":{"openapi":"api-reference/openapi.json","mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":["https://api.mixpeek.com"]}},"background":{"image":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/images/background.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=a68d0aa9f5eba448bcf67f5f410a6c90","color":{"dark":"#121212"}},"navbar":{"links":[{"href":"https://mixpeek.com/contact","label":"Talk to Engineers"}],"primary":{"type":"button","label":"Use Mixpeek","href":"https://studio.mixpeek.com/?utm_source=docs\u0026utm_medium=docs_navbar\u0026utm_campaign=mvs_onramp"}},"footer":{"socials":{"website":"https://mixpeek.com/","github":"https://github.com/mixpeek"}},"integrations":{"posthog":{"apiKey":"phc_x1G3IrW97qXoodTPWbyBK8dbZ3H7x5k5aZPCXmRvuWw","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["view","claude","chatgpt","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mixpeek","hasAudioNarration":false,"actualSubdomain":"mixpeek","customDomains":["docs.mixpeek.com"],"gitSource":{"type":"github","owner":"mixpeek","repo":"mixpeek","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeff52f552e9ea17aa8eeb5","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":536},{"language":"default","tag":"Documentation","count":195},{"language":"default","tag":"Advanced","count":140},{"language":"default","tag":"Administer","count":77},{"language":"default","tag":"Buckets","count":70},{"language":"default","tag":"Organization","count":62},{"language":"default","tag":"Retrievers","count":61},{"language":"default","tag":"Integrate \u0026 operate","count":59},{"language":"default","tag":"Build retrievers","count":55},{"language":"default","tag":"Apps","count":53}]},"assistantConfig":{"deflection":{"enabled":true,"email":"ethan@mixpeek.com"}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"processing/deduplication","slug":"/processing/deduplication","pageMetadata":{"title":"Deduplication \u0026 Re-processing","description":"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes","href":"/processing/deduplication"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Every object ingested into Mixpeek is fingerprinted with a `,_jsx(_components.strong,{children:`SHA-256 content hash`}),`, and every document produced from it carries that hash in its system envelope alongside a full `,_jsx(_components.a,{href:`/retrieval/lineage-traversal`,children:`lineage record`}),`. Together they answer the two questions every pipeline eventually asks:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Have I already processed this?`}),` — the content hash.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`What downstream work is stale now that this changed?`}),` — the lineage chain.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`content-hashing`,children:`Content hashing`}),`\n`,_jsx(_components.p,{children:`The hash is computed from the source content at ingestion and stored:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`on the `,_jsx(_components.strong,{children:`object`}),` (in the bucket), and`]}),`\n`,_jsxs(_components.li,{children:[`on every `,_jsx(_components.strong,{children:`document`}),` derived from it (`,_jsx(_components.code,{children:`content_hash`}),` in the document’s system envelope).`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Two objects with identical bytes produce the same hash — regardless of filename, upload time, or path. A changed file produces a new hash, which is what marks its derived documents as stale.`}),`\n`,_jsx(_components.p,{children:`“Latest version” of an asset is therefore a content-hash lookup, not a version counter you maintain yourself.`}),`\n`,_jsx(Heading,{level:`2`,id:`dedup-strategy`,children:`Dedup strategy`}),`\n`,_jsxs(_components.p,{children:[`When you submit a batch, `,_jsx(_components.code,{children:`dedup_strategy`}),` controls how objects that were `,_jsx(_components.strong,{children:`already processed in a prior batch`}),` are handled. Dedup is scoped to the `,_jsx(_components.em,{children:`(bucket, collection)`}),` pair — an object is a duplicate if the target collection already has documents produced from that same source object.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Strategy`}),_jsx(_components.th,{children:`Behavior`}),_jsx(_components.th,{children:`Cost profile`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`skip`}),` `,_jsx(_components.em,{children:`(default)`})]}),_jsx(_components.td,{children:`An object is reprocessed only if its content or the collection’s extractor configuration changed since it was last extracted; everything else is skipped`}),_jsx(_components.td,{children:`Free for unchanged content — no extraction, no inference`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`replace`})}),_jsx(_components.td,{children:`Every object is reprocessed. Once its new documents are written, its earlier documents in the collection are deleted. If the batch fails, or fails on that object, its earlier documents are kept`}),_jsx(_components.td,{children:`Full extraction cost; use for a clean rebuild after the source content or the extractor configuration changed`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`force`})}),_jsx(_components.td,{children:`Every object is reprocessed and its documents are overwritten in place. Documents a re-run no longer produces are not removed`}),_jsxs(_components.td,{children:[`Full extraction cost; prefer `,_jsx(_components.code,{children:`replace`}),`, which also removes those`]})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bucket_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"bkt_abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"collection_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"col_xyz789\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dedup_strategy\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"skip\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`skip`}),` reprocesses an object when its content or the extractor configuration changed since it was last extracted, and skips everything else. It does not delete documents a re-run no longer produces, for example the extra chunks left behind when a new chunking setting yields fewer of them. For a clean rebuild that removes those, use `,_jsx(_components.code,{children:`replace`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`the-re-processing-cascade`,children:`The re-processing cascade`}),`\n`,_jsx(_components.p,{children:`Derived assets stay in sync with their source through the combination of both mechanisms:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`A source object’s content changes → its hash changes.`}),`\n`,_jsxs(_components.li,{children:[`Re-submitting with `,_jsx(_components.code,{children:`replace`}),` (or re-syncing the source) reprocesses it — and every derived document downstream in its `,_jsx(_components.a,{href:`/retrieval/lineage-traversal`,children:`lineage`}),` (transcode → embed → tag) is rebuilt from the new source.`]}),`\n`,_jsxs(_components.li,{children:[`Sources whose hash `,_jsx(_components.strong,{children:`didn’t`}),` change are skipped — unchanged content is never re-paid for.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This is what keeps N derived artifacts consistent with one upstream asset without a separate file system or job-tracking database: the document `,_jsx(_components.em,{children:`is`}),` the record, the hash `,_jsx(_components.em,{children:`is`}),` the version, and lineage `,_jsx(_components.em,{children:`is`}),` the dependency graph.`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/retrieval/lineage-traversal`,children:`Lineage traversal`}),` — querying and walking derivation chains`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/processing`,children:`Processing pipeline`}),` — how objects become documents`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/operations/batch-ingestion-at-scale`,children:`Batch ingestion at scale`}),` — batch mechanics, tiers, and monitoring`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Deduplication \u0026 Re-processing","description":"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes","href":"/processing/deduplication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Content hashing","slug":"content-hashing","depth":2,"children":[]},{"title":"Dedup strategy","slug":"dedup-strategy","depth":2,"children":[]},{"title":"The re-processing cascade","slug":"the-re-processing-cascade","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/mixpeek/fd427c04b3bf84bb/custom.js","/docs/_mintlify/custom/mixpeek/e878da59c725dc0d/scripts/test_first_touch.js"],"subdomain":"mixpeek","siteName":"Mixpeek","title":"Deduplication \u0026 Re-processing - Mixpeek","navMaps":{"firstHrefInVersion":{"v1":{"href":"/processing/deduplication","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T11:22:02.233Z","originalFileLocation":"processing/deduplication.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Deduplication \u0026amp; Re-processing - Mixpeek\">\u003cmeta data-mint-head property=\"og:description\" content=\"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mixpeek\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mixpeek.com/docs/processing/deduplication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Extract+features\u0026amp;title=Deduplication+%26+Re-processing\u0026amp;description=Content-hash+dedup+decides+what+work+is+skipped%2C+replaced%2C+or+forced+when+objects+are+processed+into+collections+%E2%80%94+and+lineage+decides+what+re-runs+when+a+sourc\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=d2ad3b357dd94241bd49f79a069c54e8d81856e7f50eaab6b641581126c52d15\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Deduplication \u0026amp; Re-processing - Mixpeek\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Extract+features\u0026amp;title=Deduplication+%26+Re-processing\u0026amp;description=Content-hash+dedup+decides+what+work+is+skipped%2C+replaced%2C+or+forced+when+objects+are+processed+into+collections+%E2%80%94+and+lineage+decides+what+re-runs+when+a+sourc\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=d2ad3b357dd94241bd49f79a069c54e8d81856e7f50eaab6b641581126c52d15\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC5185\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mixpeek.com/docs/processing/deduplication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/processing/deduplication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mixpeek.com/#organization\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mixpeek.com/docs#website\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com/docs\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mixpeek.com/docs/processing/deduplication#webpage\",\"url\":\"https://docs.mixpeek.com/docs/processing/deduplication\",\"name\":\"Deduplication \u0026 Re-processing\",\"description\":\"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\",\"dateModified\":\"2026-10-06T11:22:02.233Z\",\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mixpeek.com/docs/processing/deduplication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mixpeek.com/docs/processing/deduplication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Extract features\",\"item\":\"https://docs.mixpeek.com/docs/platform/processing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deduplication \u0026 Re-processing\",\"item\":\"https://docs.mixpeek.com/docs/processing/deduplication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.mixpeek.com/docs/processing/deduplication#article\",\"headline\":\"Deduplication \u0026 Re-processing\",\"name\":\"Deduplication \u0026 Re-processing\",\"description\":\"Content-hash dedup decides what work is skipped, replaced, or forced when objects are processed into collections — and lineage decides what re-runs when a source changes\",\"url\":\"https://docs.mixpeek.com/docs/processing/deduplication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mixpeek.com/docs/processing/deduplication#webpage\"},\"dateModified\":\"2026-10-06T11:22:02.233Z\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mixpeek\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mixpeek","nav":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"versions":[{"version":"v1","default":true,"tabs":[{"tab":"Documentation","groups":[{"group":"Get started","pages":[{"title":"Introduction","href":"/overview/introduction"},{"title":"Quickstart","href":"/overview/quickstart"},{"title":"Explore the sample data","href":"/overview/sample-data"},{"title":"Core Concepts","href":"/overview/concepts"},{"title":"Data Model \u0026 Lineage","href":"/overview/data-model"},{"title":"Agents","href":"/overview/agents"},{"group":"Migrate to Mixpeek","expanded":false,"pages":[{"title":"Migrate from Elasticsearch","href":"/overview/from-elasticsearch"},{"title":"Migrate from Pinecone","href":"/overview/from-pinecone"},{"title":"Migrate from Weaviate","href":"/overview/from-weaviate"}]},{"group":"Using Studio","expanded":false,"pages":[{"title":"Quickstart","icon":"rocket","iconType":"solid","href":"/studio/quickstart"},{"title":"Namespaces","icon":"folder-tree","iconType":"solid","href":"/studio/namespaces"},{"title":"Buckets","icon":"bucket","iconType":"solid","href":"/studio/buckets"},{"title":"Collections","icon":"layer-group","iconType":"solid","href":"/studio/collections"},{"title":"Retrievers","icon":"magnifying-glass","iconType":"solid","href":"/studio/retrievers"},{"title":"Clusters","icon":"object-group","iconType":"solid","href":"/studio/clusters"},{"title":"Taxonomies","icon":"sitemap","iconType":"solid","href":"/studio/taxonomies"},{"title":"Explorer","icon":"compass","iconType":"solid","href":"/studio/explorer"},{"title":"Research","icon":"microscope","iconType":"solid","href":"/studio/research"}]}]},{"group":"Connect your data","pages":[{"title":"Ingest Data","href":"/platform/data-model"},{"title":"Syncs","href":"/platform/syncs"},{"group":"Object storage","expanded":false,"pages":[{"title":"Overview","href":"/integrations/object-storage/overview"},{"title":"AWS S3","href":"/integrations/object-storage/s3"},{"title":"Google Cloud Storage","href":"/integrations/object-storage/gcs"},{"title":"Google Drive","href":"/integrations/object-storage/google-drive"},{"title":"SharePoint","href":"/integrations/object-storage/sharepoint"},{"title":"Azure Blob Storage","href":"/integrations/object-storage/azure-blob"},{"title":"Cloudflare R2","href":"/integrations/object-storage/r2"},{"title":"Wasabi Hot Cloud Storage","href":"/integrations/object-storage/wasabi"},{"title":"Tigris","href":"/integrations/object-storage/tigris"},{"title":"Backblaze B2","href":"/integrations/object-storage/backblaze"},{"title":"Box","href":"/integrations/object-storage/box"},{"title":"Mux","href":"/integrations/object-storage/mux"},{"title":"Iconik","href":"/integrations/object-storage/iconik"},{"title":"Supabase Storage","href":"/integrations/object-storage/supabase"}]},{"group":"Other sources","expanded":false,"pages":[{"title":"RTSP","href":"/integrations/streaming/rtsp"},{"title":"Mixpeek + Snowflake","href":"/integrations/snowflake-warehouse"},{"title":"Mixpeek + Databricks","href":"/integrations/databricks-warehouse"},{"title":"PostgreSQL","href":"/integrations/databases/postgresql"},{"title":"BrightData","href":"/integrations/web-data/brightdata"},{"title":"HTTP API","href":"/integrations/web-data/http-api"},{"title":"RSS","href":"/integrations/web-data/rss"},{"title":"Overview","href":"/integrations/social-media/overview"},{"title":"Instagram","href":"/integrations/social-media/instagram"},{"title":"TikTok","href":"/integrations/social-media/tiktok"},{"title":"Email","href":"/integrations/email"}]}]},{"group":"Extract features","pages":[{"title":"Extract Features","description":"Turn raw files into searchable documents by picking what you want to search by per file type — collections run the pipeline for you","href":"/platform/processing"},{"title":"Deduplication \u0026 Re-processing","href":"/processing/deduplication"},{"title":"Features","description":"Features are what you want to search by — pick them per file type; Mixpeek resolves the pipeline, defaults the wiring, and prices per natural unit","href":"/processing/features"},{"title":"Pipeline Configuration (Advanced)","href":"/processing/feature-extractors"},{"title":"Decomposition","href":"/processing/decomposition"},{"group":"Built-in extractors","expanded":false,"pages":[{"title":"Multimodal Extractor","href":"/processing/extractors/multimodal"},{"title":"Image Extractor","href":"/processing/extractors/image"},{"title":"Document Graph Extractor","href":"/processing/extractors/document"},{"title":"Text Extractor","href":"/processing/extractors/text"},{"title":"Face Identity Extractor","href":"/processing/extractors/face-identity"},{"title":"Audio Fingerprint Extractor","href":"/processing/extractors/audio-fingerprint"},{"title":"Gemini Multifile Extractor","href":"/processing/extractors/gemini-multifile"},{"title":"Scrolling Text Extractor","href":"/processing/extractors/scrolling-text"},{"title":"Web Scraper Extractor","href":"/processing/extractors/web-scraper"},{"title":"Passthrough Extractor","href":"/processing/extractors/passthrough"},{"title":"Universal Extractor","href":"/processing/extractors/universal"},{"title":"Video Transcode Extractor","href":"/processing/extractors/video-transcode"}]},{"group":"Custom extractors","expanded":false,"pages":[{"title":"Custom Extractors","href":"/processing/custom-extractors"},{"title":"Custom Extractor API (Dedicated Infrastructure)","href":"/processing/custom-extractor-api"},{"title":"Extractor Submissions","href":"/processing/extractor-marketplace"},{"title":"Multi-Tier Feature Extraction","href":"/processing/multi-tier-extractors"}]},{"group":"Models \u0026 migration","expanded":false,"pages":[{"title":"Model Registry","href":"/processing/model-registry"},{"title":"Migrate Embedding Models","href":"/processing/model-migration"},{"title":"Migrating from Extractor Names","href":"/processing/extractor-migration"},{"title":"Jev decision model","href":"/processing/jev"}]}]},{"group":"Build retrievers","pages":[{"title":"Retrievers","href":"/retrieval/retrievers"},{"title":"Retrieval Cookbook","href":"/retrieval/cookbook"},{"group":"Retriever Stages","pages":[{"title":"Retriever Stages","href":"/retrieval/stages/overview"},{"group":"Filter","pages":[{"title":"Feature Search","href":"/retrieval/stages/feature-search"},{"title":"Attribute Filter","href":"/retrieval/stages/attribute-filter"},{"title":"LLM Filter","href":"/retrieval/stages/llm-filter"},{"title":"Agent Search","href":"/retrieval/stages/agent-search"},{"title":"Query Expand","href":"/retrieval/stages/query-expand"}]},{"group":"Sort","pages":[{"title":"Sort Relevance","href":"/retrieval/stages/sort-relevance"},{"title":"Sort Attribute","href":"/retrieval/stages/sort-attribute"},{"title":"MMR (Maximal Marginal Relevance)","href":"/retrieval/stages/mmr"},{"title":"Rerank","href":"/retrieval/stages/rerank"},{"title":"MaxSim Rerank","href":"/retrieval/stages/maxsim-rerank"},{"title":"Score Normalize","href":"/retrieval/stages/score-normalize"}]},{"group":"Reduce","pages":[{"title":"Aggregate","href":"/retrieval/stages/aggregate"},{"title":"Temporal","href":"/retrieval/stages/temporal"},{"title":"Sample","href":"/retrieval/stages/sample"},{"title":"Summarize","href":"/retrieval/stages/summarize"},{"title":"Limit","href":"/retrieval/stages/limit"},{"title":"Deduplicate","href":"/retrieval/stages/deduplicate"},{"title":"Moment Group","href":"/retrieval/stages/moment-group"},{"title":"Score Threshold","href":"/retrieval/stages/score-threshold"}]},{"group":"Group","pages":[{"title":"Group By","href":"/retrieval/stages/group-by"},{"title":"Cluster","href":"/retrieval/stages/cluster"}]},{"group":"Apply","pages":[{"title":"JSON Transform","href":"/retrieval/stages/json-transform"},{"title":"RAG Prepare","href":"/retrieval/stages/rag-prepare"},{"title":"External Web Search","href":"/retrieval/stages/external-web-search"},{"title":"API Call","href":"/retrieval/stages/api-call"},{"title":"SQL Lookup","href":"/retrieval/stages/sql-lookup"},{"title":"Cross Compare","href":"/retrieval/stages/cross-compare"},{"title":"Traverse Edge","href":"/retrieval/stages/traverse-edge"},{"title":"Web Scrape","href":"/retrieval/stages/web-scrape"},{"title":"Unwind","href":"/retrieval/stages/unwind"},{"title":"Code Execution","href":"/retrieval/stages/code-execution"}]},{"group":"Enrich","pages":[{"title":"LLM Enrich","href":"/retrieval/stages/llm-enrich"},{"title":"Classify","href":"/retrieval/stages/classify"},{"title":"Taxonomy Enrich","href":"/retrieval/stages/taxonomy-enrich"},{"title":"Document Enrich","href":"/retrieval/stages/document-enrich"},{"title":"Agentic Enrich","href":"/retrieval/stages/agentic-enrich"}]}]},{"group":"Tune relevance","expanded":false,"pages":[{"title":"Improve Relevance","href":"/platform/improve-relevance"},{"title":"Auto-Tune","sidebarTitle":"Auto-Tune","href":"/retrieval/auto-tune"},{"title":"Rollout \u0026 Safety","sidebarTitle":"Rollout \u0026 Safety","href":"/retrieval/auto-tune-rollout"},{"title":"Reward Signals","sidebarTitle":"Reward Signals","href":"/retrieval/reward-signals"},{"title":"Evaluations","href":"/retrieval/evaluations"},{"title":"Interactions","href":"/retrieval/interactions"},{"title":"Typeahead","href":"/retrieval/typeahead"},{"title":"Query Optimization \u0026 Explain","href":"/retrieval/query-optimization"},{"title":"Multi-Stage Retrieval","href":"/retrieval/multi-stage-deep-dive"},{"title":"Lineage Traversal","href":"/retrieval/lineage-traversal"},{"title":"Filters","href":"/retrieval/filters"},{"title":"Deep Research Patterns","href":"/retrieval/research"},{"title":"Architecture","href":"/relevance/architecture"},{"title":"Fusion Strategies","href":"/relevance/fusion-strategies"},{"title":"Learned Fusion","href":"/relevance/learned-fusion"},{"title":"Analytics","href":"/relevance/analytics"}]}]},{"group":"Enrich \u0026 organize","pages":[{"title":"Classify Content","href":"/platform/enrichment"},{"title":"Taxonomies","href":"/enrichment/taxonomies"},{"title":"Clusters","href":"/enrichment/clusters"},{"title":"Alerts","href":"/enrichment/alerts"},{"title":"Triggers","href":"/platform/triggers"},{"group":"Annotations \u0026 enrichments","expanded":false,"pages":[{"title":"Retriever Enrichments","href":"/enrichment/retriever-enrichments"},{"title":"Annotations","href":"/relevance/annotations"}]}]},{"group":"Integrate \u0026 operate","pages":[{"group":"Agents","expanded":false,"pages":[{"title":"MCP Server","href":"/agent-integrations/mcp"},{"title":"LangChain","href":"/agent-integrations/langchain"},{"title":"OpenAI Function Calling","href":"/agent-integrations/openai-function-calling"}]},{"title":"Pagination","href":"/platform/pagination"},{"group":"SDKs \u0026 tools","expanded":false,"pages":[{"title":"SDK Overview","href":"/integrations/developer-tools/sdk-usage"},{"title":"Python SDK","href":"/integrations/developer-tools/python-sdk"},{"title":"JavaScript SDK","href":"/integrations/developer-tools/javascript-sdk"},{"title":"Mixpeek CLI","href":"/integrations/developer-tools/mixpeek-cli"},{"title":"MCP Server","href":"/integrations/developer-tools/mcp-server"},{"title":"IAB Tech Lab buyer agent","href":"/integrations/developer-tools/iab-buyer-agent"},{"title":"Claude Code Skill","href":"/integrations/developer-tools/claude-skill"}]},{"title":"Search Widget","href":"/integrations/search-widget"},{"group":"Apps","expanded":false,"pages":[{"title":"Apps","icon":"browser","href":"/canvas/apps"},{"title":"Deploy from Code","icon":"upload","href":"/canvas/apps/deploy"},{"title":"Build Logs","icon":"terminal","href":"/canvas/apps/build-logs"},{"title":"Preview Deploys","icon":"code-pull-request","href":"/canvas/apps/preview-deploys"},{"title":"GitHub Integration","icon":"github","href":"/canvas/apps/github"},{"title":"CLI","icon":"square-terminal","href":"/canvas/apps/cli"},{"title":"Server Functions","icon":"server","href":"/canvas/apps/server-functions"},{"title":"Environment Variables","icon":"key","href":"/canvas/apps/environment-variables"},{"title":"Runtime Logs \u0026 Analytics","icon":"chart-line","href":"/canvas/apps/logs"},{"title":"Monitoring","icon":"monitor-waveform","href":"/canvas/apps/monitoring"},{"title":"Version History","icon":"code-branch","href":"/canvas/apps/versions"},{"title":"Authentication","icon":"lock","href":"/canvas/apps/authentication"},{"title":"User Management","icon":"users","href":"/canvas/apps/users"},{"title":"Custom Domains","icon":"globe","href":"/canvas/apps/domains"}]},{"title":"Operate","href":"/platform/operations"},{"group":"Security \u0026 access","expanded":false,"pages":[{"title":"Security \u0026 Tenancy","href":"/operations/security"},{"title":"API Keys","href":"/operations/api-keys"},{"title":"Workload Identity (OIDC)","href":"/operations/workload-identity"},{"title":"Permissions","href":"/platform/permissions"},{"title":"Document-Level ACL","href":"/operations/document-acl"},{"title":"Using Mixpeek on corporate networks","href":"/operations/corporate-networks"}]},{"group":"Automation","expanded":false,"pages":[{"title":"Triggers vs Alerts","href":"/operations/triggers-vs-alerts"},{"title":"Webhooks","href":"/operations/webhooks"},{"title":"Change Feed","href":"/operations/change-feed"},{"title":"Manifests","href":"/operations/manifests"},{"title":"Describe It: Generate a Pipeline","sidebarTitle":"Generate from a description","href":"/operations/generate-from-description"},{"title":"Environment Branching","href":"/operations/environment-branching"}]},{"title":"Billing \u0026 Pricing","href":"/platform/billing"},{"title":"Budgets","href":"/platform/budgets"},{"title":"Rate Limits \u0026 Quotas","href":"/operations/rate-limits-quotas"},{"group":"Monitoring \u0026 scale","expanded":false,"pages":[{"title":"Analytics \u0026 Performance","href":"/operations/analytics-overview"},{"title":"Observability","href":"/operations/observability"},{"title":"Batch ingestion at scale","href":"/operations/batch-ingestion-at-scale"},{"title":"Batch Diagnostics \u0026 Troubleshooting","href":"/troubleshoot/batch-diagnostics"},{"title":"Deployment","href":"/operations/deployment"},{"title":"Deployment Models","href":"/resources/deployment-models"},{"title":"Single Tenant","href":"/resources/single-tenant"}]},{"group":"Customer-Hosted Mixpeek","expanded":false,"pages":[{"title":"Customer-Hosted Mixpeek","href":"/customer-hosted/overview"},{"title":"End-to-End Data Flow","href":"/customer-hosted/data-flow"},{"title":"What you provide","href":"/customer-hosted/kuberay"},{"title":"Running inside your existing Ray cluster","href":"/customer-hosted/existing-raycluster"},{"title":"Ray infrastructure lifecycle","href":"/customer-hosted/lifecycle"},{"title":"Qualification","href":"/customer-hosted/qualification"},{"title":"Security and RBAC","href":"/customer-hosted/security-rbac"},{"title":"Configuration and secrets","href":"/customer-hosted/configuration"},{"title":"Supported environments","href":"/customer-hosted/compatibility"},{"title":"Troubleshooting","href":"/customer-hosted/troubleshooting"}]}]},{"group":"Resources","pages":[{"title":"Best Practices","href":"/resources/best-practices"},{"title":"Troubleshooting","href":"/resources/troubleshooting"},{"title":"Caching \u0026 Signatures","href":"/overview/caching"},{"title":"Tasks","href":"/processing/tasks"}]}]},{"tab":"Vector Store","pages":[{"title":"Vector Store","href":"/vector-store/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/tutorials/semantic-search"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/namespaces/create-namespace"}]}]}]},"basePath":"","title":"Deduplication \u0026 Re-processing - Mixpeek","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":[],"chunks":[]}