Skip to main content
Having trouble? Check the common issues below. If your problem isn’t listed, reach out on Discord.

Installation Issues

You’re trying to use a chunker that requires the embeddings extra. Install with:
Or for just embeddings support:
See the installation guide for all available extras.
The CodeChunker requires tree-sitter. Install with:
You also need the language grammar for your target language. Tree-sitter grammars are installed automatically for common languages.
If you hit version conflicts, try installing in a fresh virtual environment:

Chunking Issues

Increase chunk_size. The value represents the maximum token count per chunk. Common values:
  • 256 tokens — tight context windows, Q&A bots
  • 512 tokens — balanced default for most RAG pipelines
  • 1024+ tokens — longer documents, summarization tasks
Also check chunk_overlap — higher overlap means more content is shared between chunks, which can help retrieval but makes individual chunks shorter.
If chunks exceed your expected size, check:
  1. Your chunk_size setting — it’s in tokens, not characters
  2. Some chunkers (SentenceChunker, RecursiveChunker) won’t split mid-sentence, so a single long sentence can exceed the limit
  3. For strict limits, use TokenChunker which guarantees the size constraint
SemanticChunker calls an embedding model for every sentence pair. To speed it up:
  1. Reduce input size — pre-split very long documents
  2. Increase similarity_threshold — merges fewer comparisons
  3. Use a faster embedding model — all-MiniLM-L6-v2 is a good balance of speed and quality
  4. Use batch mode — chunker.chunk_batch(texts) is more efficient than looping
If speed is critical and you can trade some quality, consider RecursiveChunker instead.
Common causes:
  1. Wrong language specified — make sure the language parameter matches your file (e.g., "python", "javascript", "typescript")
  2. Invalid syntax — tree-sitter can’t parse files with syntax errors. Fix the source or use RecursiveChunker as a fallback
  3. Very small files — if the entire file is smaller than chunk_size, you’ll get one chunk containing the whole file
This is expected behavior. FastChunker splits on byte boundaries for maximum throughput. It doesn’t understand word or sentence boundaries.If you need clean boundaries, use RecursiveChunker or SentenceChunker instead. FastChunker is designed for pipelines where byte-aligned chunks are acceptable (e.g., pre-filtering before a more precise chunker).

Integration Issues

Your embedding model’s output dimension must match your vector database’s configured dimension.Common dimensions:
  • all-MiniLM-L6-v2: 384
  • text-embedding-ada-002 (OpenAI): 1536
  • text-embedding-3-small (OpenAI): 1536
  • voyage-2: 1024
Check your vector DB collection was created with the correct dimension. For Chroma, it auto-detects. For Qdrant/Pinecone, you specify at collection creation time.
Verify:
  1. Your vector DB is running and accessible at the configured URL
  2. API keys / auth tokens are correct
  3. The collection/index exists (some handshakes auto-create, others don’t)
  4. Network/firewall allows the connection
Test the connection independently before using Chonkie:
For very large documents (100+ MB):
  1. Use streaming — process documents in sections rather than loading entirely into memory
  2. Use batch processing — chunk_batch() processes documents sequentially, keeping memory bounded
  3. Consider FastChunker — it processes in a single pass with minimal memory overhead
  4. Pre-split — divide large files into sections before chunking

Async / Concurrency Issues

This happens when using async chunkers without a running event loop. Make sure you’re inside an async context:
If you’re gathering many chunk operations and it’s slower than expected, the thread pool may be saturated. The default pool size is limited. For CPU-bound chunkers, parallelism is bounded by CPU cores: