1. Fixed-size chunking — cắt theo số ký tự/token cố định (ví dụ 500 token, overlap 50). Đơn giản, nhanh; nhược: cắt giữa câu/ý làm mất ngữ nghĩa.
2. Recursive character chunking (LangChain RecursiveCharacterTextSplitter) — chia theo danh sách separator ưu tiên ["\n\n", "\n", ". ", " "] → giữ được cấu trúc tự nhiên. Mặc định tốt cho văn bản thuần.
3. Semantic chunking — dùng embedding model tính độ tương đồng giữa các câu liền kề; cắt ở nơi độ tương đồng thấp (chủ đề đổi). Chất lượng cao hơn, đắt hơn.
4. Document-structure chunking — chunk theo heading/section (Markdown H1/H2, HTML) hoặc layout (trang PDF, ô Excel). Tốt cho tài liệu có cấu trúc.
5. Parent-child (small-to-big) — embed các chunk nhỏ (chính xác cho retrieval) nhưng generation dùng chunk cha lớn hơn (đủ ngữ cảnh). Giảm "lost in the middle".
6. Agentic chunking — LLM tự đọc và chia theo ý nghĩa. Đắt nhất, dùng cho tài liệu quan trọng.
Chọn chunk size: quá nhỏ (< 100 token) → mất ngữ cảnh, retrieval kém; quá lớn (> 1000) → nhiễu, dùng context lãng phí, recall giảm. Baseline tốt: 256-512 token, overlap 10-20%. Nên tune bằng eval set thực tế (chunk size × top-K × reranker). Tài liệu kỹ thuật code/API có xu hướng cần chunk nhỏ; văn bản dài có thể chunk lớn hơn.