tinyzchunk โ weights
Distilled weights for tinyzchunk, a GPU-free, tokenizer-free chunker for RAG pipelines. This repository holds only the weights; the code lives on PyPI.
pip install tinyzchunk
from tinyzchunk import Chunker
chunker = Chunker() # downloads these weights once, then caches
chunks = chunker.chunk(document) # -> list[str]
What these are
Two small MLPs that read raw characters โ no tokenizer, no GPU, numpy only:
| file | model | size |
|---|---|---|
line_weights.npz |
line-level unit-start detector (ยฑ5 line context, 102 features/char) | ~1.9 MB |
weights.npz |
character-level sentence/paragraph boundary model | ~0.2 MB |
They were distilled from an LLM teacher (Qwen) that labelled boundaries offline, one time. Inference needs neither.
Tuned for English and Brazilian Portuguese, and hardened for messy real-world text: PDF extractions with mid-word wrapping, page numbers and form feeds, OCR-mangled words, CRLF files, markdown, fenced code, tables, chat logs and legal enumerations.
Quality
Evaluated across 95 held-out scenario buckets (scripts/eval_matrix.py in the
GitHub repo):
| document family | boundary F1 |
|---|---|
| markdown, code, tables | 0.97 |
| sectioned prose, headings, bios | 0.97 |
| legal articles and enumerations | 0.87 |
| schedules and field blocks | 0.79 |
| Q&A and FAQ | 0.78 |
| wrapped / OCR-noisy prose | 0.72 |
Macro F1 0.795 overall, 0.77 on noisy-text buckets alone. Fragment chunks 0.08%, oversized chunks 0%. Roughly 26 ms for a 3 kB document on one CPU core.
Compatibility
The weights carry a feature-schema digest. If you pair them with a tinyzchunk
build whose feature extractor differs, the library raises a clear error instead
of producing silent garbage โ upgrade tinyzchunk (>= 0.3.0 for this revision)
or pin the matching weights revision.
Licence: Apache-2.0.