Documents rarely arrive in the size retrieval wants. A forty-page contract is one file, but a question about its termination clause needs the paragraph, not the file. Chunking is the step that decides where the cuts go.
Fixed-size chunking splits every few hundred tokens with a small overlap so a sentence spanning a boundary still appears whole somewhere. It is crude and it is fast, and for uniform prose it works. Structural chunking follows the document instead: headings, list items, table rows, function definitions. Semantic chunking measures where the topic actually shifts and cuts there.
Size is the trade everyone tunes. Small chunks embed precisely and retrieve exactly the sentence you needed, then hand the model too little surrounding context to interpret it. Large chunks carry context and dilute the embedding, so retrieval starts missing them.
Two practices help more than any single strategy. Keep a small overlap between neighbours, and attach the document title and section heading to each chunk so a retrieved paragraph still says what it belongs to.

