--- title: "Zig API Reference" --- ## Zig API Reference v5.0.0-rc.3 ### Functions #### extractBytes() Extract content from a byte array. This is the main entry point for in-memory extraction. It performs the following steps: 1. Validate MIME type 2. Handle legacy format conversion if needed 3. Select appropriate extractor from registry 4. Extract content 5. Run post-processing pipeline **Returns:** An `ExtractionResult` containing the extracted content and metadata. **Errors:** Returns `KreuzbergError.Validation` if MIME type is invalid. Returns `KreuzbergError.UnsupportedFormat` if MIME type is not supported. **Signature:** ```zig pub fn extract_bytes(content: []const u8, mime_type: [:0]const u8, config: ExtractionConfig) Error!ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `content` | `[]const u8` | Yes | The byte array to extract | | `mimeType` | `[:0]const u8` | Yes | MIME type of the content | | `config` | `ExtractionConfig` | Yes | Extraction configuration | **Returns:** `ExtractionResult` **Errors:** Throws `Error`. --- #### extractFile() Extract content from a file. This is the main entry point for file-based extraction. It performs the following steps: 1. Check cache for existing result (if caching enabled) 2. Detect or validate MIME type 3. Select appropriate extractor from registry 4. Extract content 5. Run post-processing pipeline 6. Store result in cache (if caching enabled) **Returns:** An `ExtractionResult` containing the extracted content and metadata. **Errors:** Returns `KreuzbergError.Io` if the file doesn't exist (NotFound) or for other file I/O errors. Returns `KreuzbergError.UnsupportedFormat` if MIME type is not supported. **Signature:** ```zig pub fn extract_file(path: [:0]const u8, mime_type: ?[:0]const u8, config: ExtractionConfig) Error!ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `path` | `[:0]const u8` | Yes | Path to the file to extract | | `mimeType` | `[:0]const u8?` | No | Optional MIME type override. If None, will be auto-detected | | `config` | `ExtractionConfig` | Yes | Extraction configuration | **Returns:** `ExtractionResult` **Errors:** Throws `Error`. --- #### extractFileSync() Synchronous wrapper for `extract_file`. This is a convenience function that blocks the current thread until extraction completes. For async code, use `extract_file` directly. Uses the global Tokio runtime for 100x+ performance improvement over creating a new runtime per call. Always uses the global runtime to avoid nested runtime issues. This function is only available with the `tokio-runtime` feature. For WASM targets, use a truly synchronous extraction approach instead. **Signature:** ```zig pub fn extract_file_sync(path: [:0]const u8, mime_type: ?[:0]const u8, config: ExtractionConfig) Error!ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `path` | `[:0]const u8` | Yes | Path to the file | | `mimeType` | `[:0]const u8?` | No | The mime type | | `config` | `ExtractionConfig` | Yes | The configuration options | **Returns:** `ExtractionResult` **Errors:** Throws `Error`. --- #### extractBytesSync() Synchronous wrapper for `extract_bytes`. Uses the global Tokio runtime for 100x+ performance improvement over creating a new runtime per call. With the `tokio-runtime` feature, this blocks the current thread using the global Tokio runtime. Without it (WASM), this calls a truly synchronous implementation. **Signature:** ```zig pub fn extract_bytes_sync(content: []const u8, mime_type: [:0]const u8, config: ExtractionConfig) Error!ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `content` | `[]const u8` | Yes | The content to process | | `mimeType` | `[:0]const u8` | Yes | The mime type | | `config` | `ExtractionConfig` | Yes | The configuration options | **Returns:** `ExtractionResult` **Errors:** Throws `Error`. --- #### batchExtractFilesSync() Synchronous wrapper for `batch_extract_files`. Uses the global Tokio runtime for optimal performance. Only available with `tokio-runtime` (WASM has no filesystem). **Signature:** ```zig pub fn batch_extract_files_sync(items: []const BatchFileItem, config: ExtractionConfig) Error![]const ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `items` | `[]const BatchFileItem` | Yes | The items | | `config` | `ExtractionConfig` | Yes | The configuration options | **Returns:** `[]const ExtractionResult` **Errors:** Throws `Error`. --- #### batchExtractBytesSync() Synchronous wrapper for `batch_extract_bytes`. Uses the global Tokio runtime for optimal performance. With the `tokio-runtime` feature, this blocks the current thread using the global Tokio runtime. Without it (WASM), this calls a truly synchronous implementation that iterates through items and calls `extract_bytes_sync()`. **Signature:** ```zig pub fn batch_extract_bytes_sync(items: []const BatchBytesItem, config: ExtractionConfig) Error![]const ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `items` | `[]const BatchBytesItem` | Yes | The items | | `config` | `ExtractionConfig` | Yes | The configuration options | **Returns:** `[]const ExtractionResult` **Errors:** Throws `Error`. --- #### batchExtractFiles() Extract content from multiple files concurrently. This function processes multiple files in parallel, automatically managing concurrency to prevent resource exhaustion. The concurrency limit can be configured via `ExtractionConfig.max_concurrent_extractions` or defaults to `(num_cpus * 1.5).ceil()`. Each file can optionally specify a `FileExtractionConfig` that overrides specific fields from the batch-level `config`. Pass `null` for a file to use the batch defaults. Batch-level settings like `max_concurrent_extractions` and `use_cache` are always taken from the batch-level `config`. per-file configuration overrides. - `config` - Batch-level extraction configuration (provides defaults and batch settings) **Returns:** A vector of `ExtractionResult` in the same order as the input items. **Errors:** Individual file errors are captured in the result metadata. System errors (IO, RuntimeError equivalents) will bubble up and fail the entire batch. Simple usage with no per-file overrides: Per-file configuration overrides: **Signature:** ```zig pub fn batch_extract_files(items: []const BatchFileItem, config: ExtractionConfig) Error![]const ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `items` | `[]const BatchFileItem` | Yes | Vector of `BatchFileItem` structs, each containing a path and optional | | `config` | `ExtractionConfig` | Yes | Batch-level extraction configuration (provides defaults and batch settings) | **Returns:** `[]const ExtractionResult` **Errors:** Throws `Error`. --- #### batchExtractBytes() Extract content from multiple byte arrays concurrently. This function processes multiple byte arrays in parallel, automatically managing concurrency to prevent resource exhaustion. The concurrency limit can be configured via `ExtractionConfig.max_concurrent_extractions` or defaults to `(num_cpus * 1.5).ceil()`. Each item can optionally specify a `FileExtractionConfig` that overrides specific fields from the batch-level `config`. Pass `null` as the config to use the batch-level defaults for that item. MIME type, and optional per-item configuration overrides. - `config` - Batch-level extraction configuration **Returns:** A vector of `ExtractionResult` in the same order as the input items. Simple usage with no per-item overrides: Per-item configuration overrides: **Signature:** ```zig pub fn batch_extract_bytes(items: []const BatchBytesItem, config: ExtractionConfig) Error![]const ExtractionResult ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `items` | `[]const BatchBytesItem` | Yes | Vector of `BatchBytesItem` structs, each containing content bytes, | | `config` | `ExtractionConfig` | Yes | Batch-level extraction configuration | **Returns:** `[]const ExtractionResult` **Errors:** Throws `Error`. --- #### detectMimeTypeFromBytes() Detect MIME type from raw file bytes. Uses magic byte signatures to detect file type from content. Falls back to `infer` crate for comprehensive detection. For ZIP-based files, inspects contents to distinguish Office Open XML formats (DOCX, XLSX, PPTX) from plain ZIP archives. **Returns:** The detected MIME type string. **Errors:** Returns `KreuzbergError.UnsupportedFormat` if MIME type cannot be determined. **Signature:** ```zig pub fn detect_mime_type_from_bytes(content: []const u8) Error![:0]const u8 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `content` | `[]const u8` | Yes | Raw file bytes | **Returns:** `[:0]const u8` **Errors:** Throws `Error`. --- #### getExtensionsForMime() Get file extensions for a given MIME type. Returns all known file extensions that map to the specified MIME type. **Returns:** A vector of file extensions (without leading dot) for the MIME type. **Signature:** ```zig pub fn get_extensions_for_mime(mime_type: [:0]const u8) Error![]const [:0]const u8 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `mimeType` | `[:0]const u8` | Yes | The MIME type to look up | **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearEmbeddingBackends() Clear all embedding backends from the global registry. Calls `shutdown()` on every registered backend, then empties the registry. **Errors:** - Any error returned by a backend's `shutdown()` method. The first error encountered stops processing of remaining backends. **Signature:** ```zig pub fn clear_embedding_backends() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### listEmbeddingBackends() List the names of all registered embedding backends. Used by `kreuzberg-cli`, the api/mcp endpoints, and generated language bindings. **Signature:** ```zig pub fn list_embedding_backends() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### listDocumentExtractors() List names of all registered document extractors. **Signature:** ```zig pub fn list_document_extractors() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearDocumentExtractors() Clear all document extractors from the global registry. Calls `shutdown()` on every registered extractor, then empties the registry. **Errors:** - Any error returned by an extractor's `shutdown()` method. The first error encountered stops processing of remaining extractors. **Signature:** ```zig pub fn clear_document_extractors() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### listOcrBackends() List all registered OCR backends. Returns the names of all OCR backends currently registered in the global registry. **Returns:** A vector of OCR backend names. **Signature:** ```zig pub fn list_ocr_backends() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearOcrBackends() Clear all OCR backends from the global registry. Removes all OCR backends and calls their `shutdown()` methods. **Returns:** - `Ok(())` if all backends were cleared successfully - `Err(...)` if any shutdown method failed **Signature:** ```zig pub fn clear_ocr_backends() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### listPostProcessors() List all registered post-processor names. Returns a vector of all post-processor names currently registered in the global registry. **Returns:** - `Ok(Vec)` - Vector of post-processor names - `Err(...)` if the registry lock is poisoned **Signature:** ```zig pub fn list_post_processors() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearPostProcessors() Remove all registered post-processors. **Signature:** ```zig pub fn clear_post_processors() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### listRenderers() List names of all registered renderers. **Errors:** Returns an error if the registry lock is poisoned. **Signature:** ```zig pub fn list_renderers() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearRenderers() Clear all renderers from the global registry. Removes every renderer, including the built-in defaults (markdown, html, djot, plain). After calling this no renderers are registered; re-register as needed. **Errors:** Returns an error if the registry lock is poisoned. **Signature:** ```zig pub fn clear_renderers() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### listValidators() List names of all registered validators. **Signature:** ```zig pub fn list_validators() Error![]const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` **Errors:** Throws `Error`. --- #### clearValidators() Remove all registered validators. **Signature:** ```zig pub fn clear_validators() Error!void ``` **Returns:** `void` **Errors:** Throws `Error`. --- #### compare() Compare two extraction results and return a structured diff. The comparison is purely structural — no I/O, no side effects. All fields of `ExtractionDiff` are populated according to the provided `DiffOptions`. **Signature:** ```zig pub fn compare(a: ExtractionResult, b: ExtractionResult, opts: DiffOptions) ExtractionDiff ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `a` | `ExtractionResult` | Yes | The extraction result | | `b` | `ExtractionResult` | Yes | The extraction result | | `opts` | `DiffOptions` | Yes | The options to use | **Returns:** `ExtractionDiff` --- #### embedTextsAsync() Generate embeddings asynchronously for a list of text strings. This is the async counterpart to `embed_texts`. It offloads the blocking ONNX inference work to a dedicated blocking thread pool via Tokio's `spawn_blocking`, keeping the async executor free. Returns one embedding vector per input text in the same order. **Errors:** - `KreuzbergError.MissingDependency` if ONNX Runtime is not installed - `KreuzbergError.Embedding` if the preset name is unknown, model download fails, or the blocking inference task panics **Signature:** ```zig pub fn embed_texts_async(texts: []const [:0]const u8, config: EmbeddingConfig) Error![]const []const f32 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `texts` | `[]const [:0]const u8` | Yes | Vec of strings to embed (owned, sent to blocking thread) | | `config` | `EmbeddingConfig` | Yes | Embedding configuration specifying model, batch size, and normalization | **Returns:** `[]const []const f32` **Errors:** Throws `Error`. --- #### renderPdfPageToPng() Render a single PDF page to PNG bytes. Returns raw PNG-encoded bytes for the specified page at the given DPI. Uses pdf_oxide with tiny-skia for pure-Rust rendering. **Errors:** Returns `KreuzbergError.Parsing` if the PDF cannot be opened, authenticated, or rendered, or if `page_index` is out of range. **Signature:** ```zig pub fn render_pdf_page_to_png(pdf_bytes: []const u8, page_index: u64, dpi: ?i32, password: ?[:0]const u8) Error![]const u8 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `pdfBytes` | `[]const u8` | Yes | Raw PDF file bytes | | `pageIndex` | `u64` | Yes | Zero-based page index | | `dpi` | `i32?` | No | Resolution in dots per inch (default: 150) | | `password` | `[:0]const u8?` | No | Optional password for encrypted PDFs | **Returns:** `[]const u8` **Errors:** Throws `Error`. --- #### detectMimeType() Detect the MIME type of a file at the given path. Uses the file extension and optionally the file content to determine the MIME type. Set `check_exists` to `true` to verify the file exists before detection. **Signature:** ```zig pub fn detect_mime_type(path: [:0]const u8, check_exists: bool) Error![:0]const u8 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `path` | `[:0]const u8` | Yes | Path to the file | | `checkExists` | `bool` | Yes | The check exists | **Returns:** `[:0]const u8` **Errors:** Throws `Error`. --- #### embedTexts() Embed a list of texts using the configured embedding model. Returns a 2D vector where each inner vector is the embedding for the corresponding text. **Signature:** ```zig pub fn embed_texts(texts: []const [:0]const u8, config: EmbeddingConfig) Error![]const []const f32 ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `texts` | `[]const [:0]const u8` | Yes | The texts | | `config` | `EmbeddingConfig` | Yes | The configuration options | **Returns:** `[]const []const f32` **Errors:** Throws `Error`. --- #### getEmbeddingPreset() Get an embedding preset by name. Returns `null` if no preset with the given name exists. Returns an owned clone so the value is safe to pass across FFI boundaries. **Signature:** ```zig pub fn get_embedding_preset(name: [:0]const u8) ?EmbeddingPreset ``` **Parameters:** | Name | Type | Required | Description | |------|------|----------|-------------| | `name` | `[:0]const u8` | Yes | The name | **Returns:** `?EmbeddingPreset` --- #### listEmbeddingPresets() List the names of all available embedding presets. Returns owned `String`s so the values are safe to pass across FFI boundaries. **Signature:** ```zig pub fn list_embedding_presets() []const [:0]const u8 ``` **Returns:** `[]const [:0]const u8` --- ### Types #### AccelerationConfig Hardware acceleration configuration for ONNX Runtime models. Controls which execution provider (CPU, CoreML, CUDA, TensorRT) is used for inference in layout detection and embedding generation. | Field | Type | Default | Description | |-------|------|---------|-------------| | `provider` | `ExecutionProviderType` | `ExecutionProviderType.Auto` | Execution provider to use for ONNX inference. | | `deviceId` | `u32` | — | GPU device ID (for CUDA/TensorRT). Ignored for CPU/CoreML/Auto. | --- #### ArchiveEntry A single file extracted from an archive. When archives (ZIP, TAR, 7Z, GZIP) are extracted with recursive extraction enabled, each processable file produces its own full `ExtractionResult`. | Field | Type | Default | Description | |-------|------|---------|-------------| | `path` | `[:0]const u8` | — | Archive-relative file path (e.g. "folder/document.pdf"). | | `mimeType` | `[:0]const u8` | — | Detected MIME type of the file. | | `result` | `ExtractionResult` | — | Full extraction result for this file. | --- #### ArchiveMetadata Archive (ZIP/TAR/7Z) metadata. Extracted from compressed archive files containing file lists and size information. | Field | Type | Default | Description | |-------|------|---------|-------------| | `format` | `[:0]const u8` | — | Archive format ("ZIP", "TAR", "7Z", etc.) | | `fileCount` | `u32` | — | Total number of files in the archive | | `fileList` | `[]const [:0]const u8` | `[]` | List of file paths within the archive | | `totalSize` | `u64` | — | Total uncompressed size in bytes | | `compressedSize` | `u64?` | `null` | Compressed size in bytes (if available) | --- #### BBox Bounding box in original image coordinates (x1, y1) top-left, (x2, y2) bottom-right. | Field | Type | Default | Description | |-------|------|---------|-------------| | `x1` | `f32` | — | X1 | | `y1` | `f32` | — | Y1 | | `x2` | `f32` | — | X2 | | `y2` | `f32` | — | Y2 | --- #### BatchBytesItem Batch item for byte array extraction. Used with `batch_extract_bytes` and `batch_extract_bytes_sync` to represent a single item in a batch extraction job. | Field | Type | Default | Description | |-------|------|---------|-------------| | `content` | `[]const u8` | — | The content bytes to extract from | | `mimeType` | `[:0]const u8` | — | MIME type of the content (e.g., "application/pdf", "text/html") | | `config` | `FileExtractionConfig?` | `null` | Per-item configuration overrides (None uses batch-level defaults) | --- #### BatchFileItem Batch item for file extraction. Used with `batch_extract_files` and `batch_extract_files_sync` to represent a single file in a batch extraction job. | Field | Type | Default | Description | |-------|------|---------|-------------| | `path` | `[:0]const u8` | — | Path to the file to extract from | | `config` | `FileExtractionConfig?` | `null` | Per-file configuration overrides (None uses batch-level defaults) | --- #### BibtexMetadata BibTeX bibliography metadata. | Field | Type | Default | Description | |-------|------|---------|-------------| | `entryCount` | `u64` | — | Number of entries in the bibliography. | | `citationKeys` | `[]const [:0]const u8` | `[]` | Citation keys | | `authors` | `[]const [:0]const u8` | `[]` | Authors | | `yearRange` | `YearRange?` | `null` | Year range (year range) | | `entryTypes` | `std.StringHashMap(u64)?` | `{}` | Entry types | --- #### BoundingBox Bounding box coordinates for element positioning. | Field | Type | Default | Description | |-------|------|---------|-------------| | `x0` | `f64` | — | Left x-coordinate | | `y0` | `f64` | — | Bottom y-coordinate | | `x1` | `f64` | — | Right x-coordinate | | `y1` | `f64` | — | Top y-coordinate | --- #### CacheStats | Field | Type | Default | Description | |-------|------|---------|-------------| | `totalFiles` | `u64` | — | Total files | | `totalSizeMb` | `f64` | — | Total size mb | | `availableSpaceMb` | `f64` | — | Available space mb | | `oldestFileAgeDays` | `f64` | — | Oldest file age days | | `newestFileAgeDays` | `f64` | — | Newest file age days | --- #### CellChange A single changed cell within a table. Defined here (rather than only in `crate.diff`) so `RevisionDelta` can reference it unconditionally, without requiring the `diff` Cargo feature. `crate.diff` re-exports this type verbatim. | Field | Type | Default | Description | |-------|------|---------|-------------| | `row` | `u64` | — | Zero-based row index. | | `col` | `u64` | — | Zero-based column index. | | `from` | `[:0]const u8` | — | Value before the change. | | `to` | `[:0]const u8` | — | Value after the change. | --- #### Chunk A text chunk with optional embedding and metadata. Chunks are created when chunking is enabled in `ExtractionConfig`. Each chunk contains the text content, optional embedding vector (if embedding generation is configured), and metadata about its position in the document. | Field | Type | Default | Description | |-------|------|---------|-------------| | `content` | `[:0]const u8` | — | The text content of this chunk. | | `chunkType` | `ChunkType` | `/* serde(default) */` | Semantic structural classification of this chunk. Assigned by the heuristic classifier based on content patterns and heading context. Defaults to `ChunkType.Unknown` when no rule matches. | | `embedding` | `[]const f32?` | `null` | Optional embedding vector for this chunk. Only populated when `EmbeddingConfig` is provided in chunking configuration. The dimensionality depends on the chosen embedding model. | | `metadata` | `ChunkMetadata` | — | Metadata about this chunk's position and properties. | --- #### ChunkMetadata Metadata about a chunk's position in the original document. | Field | Type | Default | Description | |-------|------|---------|-------------| | `byteStart` | `u64` | — | Byte offset where this chunk starts in the original text (UTF-8 valid boundary). | | `byteEnd` | `u64` | — | Byte offset where this chunk ends in the original text (UTF-8 valid boundary). | | `tokenCount` | `u64?` | `null` | Number of tokens in this chunk (if available). This is calculated by the embedding model's tokenizer if embeddings are enabled. | | `chunkIndex` | `u64` | — | Zero-based index of this chunk in the document. | | `totalChunks` | `u64` | — | Total number of chunks in the document. | | `firstPage` | `u32?` | `null` | First page number this chunk spans (1-indexed). Only populated when page tracking is enabled in extraction configuration. | | `lastPage` | `u32?` | `null` | Last page number this chunk spans (1-indexed, equal to first_page for single-page chunks). Only populated when page tracking is enabled in extraction configuration. | | `headingContext` | `HeadingContext?` | `/* serde(default) */` | Heading context when using Markdown chunker. Contains the heading hierarchy this chunk falls under. Only populated when `ChunkerType.Markdown` is used. | | `imageIndices` | `[]const u32` | `/* serde(default) */` | Indices into `ExtractionResult.images` for images on pages covered by this chunk. Contains zero-based indices into the top-level `images` collection for every image whose `page_number` falls within `[first_page, last_page]`. Empty when image extraction is disabled or the chunk spans no pages with images. | --- #### ChunkingConfig Chunking configuration. Configures text chunking for document content, including chunk size, overlap, trimming behavior, and optional embeddings. Use `..the default constructor` when constructing to allow for future field additions: | Field | Type | Default | Description | |-------|------|---------|-------------| | `maxCharacters` | `u64` | `1000` | Maximum size per chunk (in units determined by `sizing`). When `sizing` is `Characters` (default), this is the max character count. When using token-based sizing, this is the max token count. Default: 1000 | | `overlap` | `u64` | `200` | Overlap between chunks (in units determined by `sizing`). Default: 200 | | `trim` | `bool` | `true` | Whether to trim whitespace from chunk boundaries. Default: true | | `chunkerType` | `ChunkerType` | `ChunkerType.Text` | Type of chunker to use (Text or Markdown). Default: Text | | `embedding` | `EmbeddingConfig?` | `null` | Optional embedding configuration for chunk embeddings. | | `preset` | `[:0]const u8?` | `null` | Use a preset configuration (overrides individual settings if provided). | | `sizing` | `ChunkSizing` | `ChunkSizing.Characters` | How to measure chunk size. Default: `Characters` (Unicode character count). Enable `chunking-tiktoken` or `chunking-tokenizers` features for token-based sizing. | | `prependHeadingContext` | `bool` | `false` | When `true` and `chunker_type` is `Markdown`, prepend the heading hierarchy path (e.g. `"# Title > ## Section\n\n"`) to each chunk's content string. This is useful for RAG pipelines where each chunk needs self-contained context about its position in the document structure. Default: `false` | | `topicThreshold` | `f32?` | `null` | Optional cosine similarity threshold for semantic topic boundary detection. Only used when `chunker_type` is `Semantic` and an `EmbeddingConfig` is provided. You almost never need to set this. When omitted, defaults to `0.75` which works well for most documents. Lower values detect more topic boundaries (more, smaller chunks); higher values detect fewer. Range: `0.0..=1.0`. | ### Methods #### default() **Signature:** ```zig pub fn default() ChunkingConfig ``` --- #### CitationMetadata Citation file metadata (RIS, PubMed, EndNote). | Field | Type | Default | Description | |-------|------|---------|-------------| | `citationCount` | `u64` | — | Number of citations | | `format` | `[:0]const u8?` | `null` | Format | | `authors` | `[]const [:0]const u8` | `[]` | Authors | | `yearRange` | `YearRange?` | `null` | Year range (year range) | | `dois` | `[]const [:0]const u8` | `[]` | Dois | | `keywords` | `[]const [:0]const u8` | `[]` | Keywords | --- #### ContentFilterConfig Cross-extractor content filtering configuration. Controls whether "furniture" content (headers, footers, page numbers, watermarks, repeating text) is included in or stripped from extraction results. Applies across all extractors (PDF, DOCX, RTF, ODT, HTML, etc.) with format-specific implementation. When `null` on `ExtractionConfig`, each extractor uses its current default behavior unchanged. | Field | Type | Default | Description | |-------|------|---------|-------------| | `includeHeaders` | `bool` | `false` | Include running headers in extraction output. - PDF: Disables top-margin furniture stripping and prevents the layout model from treating `PageHeader`-classified regions as furniture. - DOCX: Includes document headers in text output. - RTF/ODT: Headers already included; this is a no-op when true. - HTML/EPUB: Keeps `
` element content. Default: `false` (headers are stripped or excluded). | | `includeFooters` | `bool` | `false` | Include running footers in extraction output. - PDF: Disables bottom-margin furniture stripping and prevents the layout model from treating `PageFooter`-classified regions as furniture. - DOCX: Includes document footers in text output. - RTF/ODT: Footers already included; this is a no-op when true. - HTML/EPUB: Keeps `