Introduction
Semantic Chunkers splits text into chunks based on meaning. Instead of cutting every N characters or at every newline, it uses an embedding model to find the places where the topic actually shifts — and splits there.
That matters most for retrieval. A chunk that starts mid-thought and ends mid-thought is a bad search result. A chunk that holds one coherent idea is a good one. Better chunks mean better RAG.
How it works
The library splits a document into sentences, embeds them, and looks at how similar each sentence is to its neighbours. Where similarity drops, a new chunk begins. You choose how that decision gets made:
StatisticalChunker— the most robust option and the one to start with. It sets the similarity threshold dynamically per document, so it adapts to the text instead of relying on a fixed number. Text only.ConsecutiveChunker— the simplest. Groups consecutive sentences while they stay above a fixed similarity threshold. Works on more than just text.CumulativeChunker— accumulates sentences and compares each new one against everything gathered so far. More stable and noise-resistant, but the most expensive in time and, with API encoders, money.RegexChunker— no embeddings at all. Splits on delimiters up to a token budget. Fast and free, for when semantics don't matter.
The semantic chunkers take any encoder — the OpenAI one that ships with the library, a local sentence-transformers model, an embedding function of your own, or an encoder from another library such as Semantic Router.
Start here
The quickstart chunks a document in a few lines and compares the strategies.