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 underextraction_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).
Example configurations
Pair export-style content types with filters that leave Ingest Excel files unchecked unless you
explicitly want those files in the graph.