---
title: "Chonkie"
id: integrations-chonkie
description: "Chonkie integration for Haystack"
slug: "/integrations-chonkie"
---
## haystack_integrations.components.preprocessors.chonkie.recursive_splitter
### ChonkieRecursiveDocumentSplitter
A Document Splitter that uses Chonkie's RecursiveChunker to split documents.
### Usage example
```python
from haystack import Document
from haystack_integrations.components.preprocessors.chonkie import ChonkieRecursiveDocumentSplitter
chunker = ChonkieRecursiveDocumentSplitter(chunk_size=512)
documents = [Document(content="Hello world. This is a test.")]
result = chunker.run(documents=documents)
print(result["documents"])
```
#### __init__
```python
__init__(
*,
tokenizer: str = "character",
chunk_size: int = 2048,
min_characters_per_chunk: int = 24,
rules: RecursiveRules | dict[str, Any] | None = None,
skip_empty_documents: bool = True,
page_break_character: str = "\x0c"
) -> None
```
Initializes the ChonkieRecursiveDocumentSplitter.
**Parameters:**
- **tokenizer** (str) – The tokenizer to use for chunking. Defaults to "character".
Common options include "character", "gpt2", and "cl100k_base".
See the [Chonkie documentation](https://docs.chonkie.ai/) for more information on available tokenizers.
- **chunk_size** (int) – The maximum number of tokens per chunk. The actual length depends on the chosen tokenizer.
- **min_characters_per_chunk** (int) – The minimum number of characters per chunk.
- **rules** (RecursiveRules | dict\[str, Any\] | None) – Custom rules for recursive chunking. If None, default rules are used.
See the [Chonkie documentation](https://docs.chonkie.ai/) for more information.
- **skip_empty_documents** (bool) – Whether to skip empty documents.
- **page_break_character** (str) – The character to use for page breaks.
#### run
```python
run(documents: list[Document]) -> dict[str, list[Document]]
```
Splits a list of documents into smaller chunks.
**Parameters:**
- **documents** (list\[Document\]) – The list of documents to split.
**Returns:**
- dict\[str, list\[Document\]\] – A dictionary with the "documents" key containing the list of chunks.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serializes the component to a dictionary.
**Returns:**
- dict\[str, Any\] – Dictionary with serialized data.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> ChonkieRecursiveDocumentSplitter
```
Deserializes the component from a dictionary.
**Parameters:**
- **data** (dict\[str, Any\]) – Dictionary to deserialize from.
**Returns:**
- ChonkieRecursiveDocumentSplitter – Deserialized component.
## haystack_integrations.components.preprocessors.chonkie.semantic_splitter
### ChonkieSemanticDocumentSplitter
A Document Splitter that uses Chonkie's SemanticChunker to split documents.
### Usage example
```python
from haystack import Document
from haystack_integrations.components.preprocessors.chonkie import ChonkieSemanticDocumentSplitter
chunker = ChonkieSemanticDocumentSplitter(chunk_size=512)
documents = [Document(content="Hello world. This is a test.")]
result = chunker.run(documents=documents)
print(result["documents"])
```
#### __init__
```python
__init__(
*,
embedding_model: Any = "minishlab/potion-base-32M",
threshold: float = 0.8,
chunk_size: int = 2048,
similarity_window: int = 3,
min_sentences_per_chunk: int = 1,
min_characters_per_sentence: int = 24,
delim: Any = None,
include_delim: str = "prev",
skip_window: int = 0,
filter_window: int = 5,
filter_polyorder: int = 3,
filter_tolerance: float = 0.2,
skip_empty_documents: bool = True,
page_break_character: str = "\x0c"
) -> None
```
Initializes the ChonkieSemanticDocumentSplitter.
**Parameters:**
- **embedding_model** (Any) – The embedding model to use for semantic similarity.
See the [Chonkie documentation](https://docs.chonkie.ai/) for more information on supported models.
- **threshold** (float) – The semantic similarity threshold.
- **chunk_size** (int) – The maximum number of tokens per chunk. The actual length depends on the
embedding model's tokenizer.
- **similarity_window** (int) – The window size for similarity calculations.
- **min_sentences_per_chunk** (int) – The minimum number of sentences per chunk.
- **min_characters_per_sentence** (int) – The minimum number of characters per sentence.
- **delim** (Any) – Delimiters to use for splitting. If None, default delimiters are used.
- **include_delim** (str) – Whether to include the delimiter in the chunks.
- **skip_window** (int) – The skip window for similarity calculations.
- **filter_window** (int) – The filter window for similarity calculations.
- **filter_polyorder** (int) – The polynomial order for similarity filtering.
- **filter_tolerance** (float) – The tolerance for similarity filtering.
- **skip_empty_documents** (bool) – Whether to skip empty documents.
- **page_break_character** (str) – The character to use for page breaks.
#### warm_up
```python
warm_up() -> None
```
Initializes the component by loading the embedding model.
#### run
```python
run(documents: list[Document]) -> dict[str, list[Document]]
```
Splits a list of documents into smaller semantic chunks.
**Parameters:**
- **documents** (list\[Document\]) – The list of documents to split.
**Returns:**
- dict\[str, list\[Document\]\] – A dictionary with the "documents" key containing the list of chunks.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serializes the component to a dictionary.
**Returns:**
- dict\[str, Any\] – Dictionary with serialized data.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> ChonkieSemanticDocumentSplitter
```
Deserializes the component from a dictionary.
**Parameters:**
- **data** (dict\[str, Any\]) – Dictionary to deserialize from.
**Returns:**
- ChonkieSemanticDocumentSplitter – Deserialized component.
## haystack_integrations.components.preprocessors.chonkie.sentence_splitter
### ChonkieSentenceDocumentSplitter
A Document Splitter that uses Chonkie's SentenceChunker to split documents.
### Usage example
```python
from haystack import Document
from haystack_integrations.components.preprocessors.chonkie import ChonkieSentenceDocumentSplitter
chunker = ChonkieSentenceDocumentSplitter(chunk_size=512)
documents = [Document(content="Hello world. This is a test.")]
result = chunker.run(documents=documents)
print(result["documents"])
```
#### __init__
```python
__init__(
*,
tokenizer: str = "character",
chunk_size: int = 2048,
chunk_overlap: int = 0,
min_sentences_per_chunk: int = 1,
min_characters_per_sentence: int = 12,
approximate: bool = False,
delim: Any = None,
include_delim: str = "prev",
skip_empty_documents: bool = True,
page_break_character: str = "\x0c"
) -> None
```
Initializes the ChonkieSentenceDocumentSplitter.
**Parameters:**
- **tokenizer** (str) – The tokenizer to use for chunking. Defaults to "character".
Common options include "character", "gpt2", and "cl100k_base".
See the [Chonkie documentation](https://docs.chonkie.ai/) for more information on available tokenizers.
- **chunk_size** (int) – The maximum number of tokens per chunk. The actual length depends on the chosen tokenizer.
- **chunk_overlap** (int) – The overlap between consecutive chunks.
- **min_sentences_per_chunk** (int) – The minimum number of sentences per chunk.
- **min_characters_per_sentence** (int) – The minimum number of characters per sentence.
- **approximate** (bool) – Whether to use approximate chunking.
- **delim** (Any) – Delimiters to use for splitting. If None, default delimiters are used.
- **include_delim** (str) – Whether to include the delimiter in the chunks ("prev" or "next").
- **skip_empty_documents** (bool) – Whether to skip empty documents.
- **page_break_character** (str) – The character to use for page breaks.
#### run
```python
run(documents: list[Document]) -> dict[str, list[Document]]
```
Splits a list of documents into smaller sentence-based chunks.
**Parameters:**
- **documents** (list\[Document\]) – The list of documents to split.
**Returns:**
- dict\[str, list\[Document\]\] – A dictionary with the "documents" key containing the list of chunks.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serializes the component to a dictionary.
**Returns:**
- dict\[str, Any\] – Dictionary with serialized data.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> ChonkieSentenceDocumentSplitter
```
Deserializes the component from a dictionary.
**Parameters:**
- **data** (dict\[str, Any\]) – Dictionary to deserialize from.
**Returns:**
- ChonkieSentenceDocumentSplitter – Deserialized component.
## haystack_integrations.components.preprocessors.chonkie.token_splitter
### ChonkieTokenDocumentSplitter
A Document Splitter that uses Chonkie's TokenChunker to split documents.
### Usage example
```python
from haystack import Document
from haystack_integrations.components.preprocessors.chonkie import ChonkieTokenDocumentSplitter
chunker = ChonkieTokenDocumentSplitter(chunk_size=512, chunk_overlap=50)
documents = [Document(content="Hello world. This is a test.")]
result = chunker.run(documents=documents)
print(result["documents"])
```
#### __init__
```python
__init__(
*,
tokenizer: str = "character",
chunk_size: int = 2048,
chunk_overlap: int = 0,
skip_empty_documents: bool = True,
page_break_character: str = "\x0c"
) -> None
```
Initializes the ChonkieTokenDocumentSplitter.
**Parameters:**
- **tokenizer** (str) – The tokenizer to use for chunking. Defaults to "character".
Common options include "character", "gpt2", and "cl100k_base".
See the [Chonkie documentation](https://docs.chonkie.ai/) for more information on available tokenizers.
- **chunk_size** (int) – The maximum number of tokens per chunk. The actual length depends on the chosen tokenizer.
- **chunk_overlap** (int) – The overlap between consecutive chunks.
- **skip_empty_documents** (bool) – Whether to skip empty documents.
- **page_break_character** (str) – The character to use for page breaks.
#### run
```python
run(documents: list[Document]) -> dict[str, list[Document]]
```
Splits a list of documents into smaller token-based chunks.
**Parameters:**
- **documents** (list\[Document\]) – The list of documents to split.
**Returns:**
- dict\[str, list\[Document\]\] – A dictionary with the "documents" key containing the list of chunks.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serializes the component to a dictionary.
**Returns:**
- dict\[str, Any\] – Dictionary with serialized data.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> ChonkieTokenDocumentSplitter
```
Deserializes the component from a dictionary.
**Parameters:**
- **data** (dict\[str, Any\]) – Dictionary to deserialize from.
**Returns:**
- ChonkieTokenDocumentSplitter – Deserialized component.