A document has to be split before it can be embedded, and that split is the most consequential decision in the whole pipeline. It is usually made by a default value nobody revisited.
Cut a reimbursement clause at 500 characters and the answer still exists — in two halves, neither of which retrieves.
Four approaches, in rising order of care. Fixed-size is simple and blind to meaning. Recursive splits on paragraphs first, then sentences, then words. Semantic splits where the topic shifts. Parent-document embeds small chunks for precision and returns the larger section they came from, which ends the choice between matching well and carrying enough context.
There is no universal number. A contract clause wants 200–500 tokens, a support ticket 100–300, an API reference 300–800. The right chunk is the one a human would have quoted.
How we divide something determines what we can find in it later.
