A big chunk size with overlap solves this. Chunks don't have to be be "perfectly" split in order to work well.
But as the number of files to ingest grows, chunking speed does become a bottleneck. We want faster everything (chunking, embedding, retrieval) but chunking was the first piece we tackled. Memchunk is the fastest we could build.