Skip to main content

Overview

Extraction policy controls how deeply ingestion runs LLM entity extraction for each content type. Use it to reduce cost on low-value files (for example large Excel exports) while keeping full extraction on types that need rich graph data. Navigate to Admin > Data Sources > Content Types, open a type, and scroll to Ingestion extraction on the Basic Information tab.

Extraction modes

For Excel (.xlsx, .xlsm, .xls), resolution order is: filter override → content-type Excel mode → default mode → full Parsed spreadsheet text is still stored on the Document node for chat retrieval even when extraction is skipped.

Content-type settings

Configure in the admin UI or in the content type’s JSON metadata under extraction_policy:

UI fields

Model tiers

Secondary steps (validation, JSON repair, relationship backfill, entity disambiguation) use INGESTION_SMALL_MODEL_CONFIG, falling back to the large model if unset. Create Ingestion - Medium model configurations under Model Configurations and assign one in System Settings before using the medium tier.

Excel sheet handling

Spreadsheets are parsed by Kreuzberg. Each sheet becomes a markdown block headed by ## SheetName. Ingestion splits on those headers and applies caps per sheet: These settings are seeded in System Settings. The cost guard threshold is also editable from the dashboard.

Filter-level Excel controls

When configuring data source filters, you can control spreadsheet ingestion per filter: When Ingest Excel files is unchecked and a file matches an enabled filter, Excel ingestion is skipped with reason excel_ingestion_disabled_by_filter. Files with no matched filters still ingest Excel (legacy behavior).
Use unchecked Ingest Excel files on export-only filters when you want those spreadsheets excluded from the graph.

Example configurations

Pair export-style content types with filters that leave Ingest Excel files unchecked unless you explicitly want those files in the graph.