Chunking chuyển nội dung trang đã chuẩn hóa thành các đơn vị truy xuất. Lựa chọn kém làm tăng chi phí (quá nhiều mảnh), giảm recall (khối quá lớn) hoặc làm loãng precision (gãy ranh giới). Không có phương pháp tốt nhất cho mọi trường hợp; chiến lược phải khớp cấu trúc corpus, độ biến động và mẫu query. Hướng dẫn này mô tả không gian thiết kế, đánh đổi, quy trình đánh giá và các cần gạt tối ưu hóa cho pipeline RAG sản xuất.
Vì sao chunking quan trọng
Mục tiêu:
- Tối đa hóa xác suất sự kiện liên quan xuất hiện trong retrieval top-k.
- Giữ kết dính ngữ nghĩa để câu trả lời được tạo vẫn grounded.
- Tối ưu sử dụng token, tránh embedding lặp lại boilerplate.
- Cho phép cập nhật tăng dần có tính xác định với ID chunk ổn định.
Chunking lệch hướng thường hiện ra dưới dạng: dư thừa cao, Recall@k thấp, sự kiện ở ranh giới bị ảo giác và chi phí embedding phình to.
Chunking cửa sổ cố định
Cửa sổ N-token đơn giản, ví dụ 500 token. Ưu điểm: xác định, dễ triển khai, hành vi cập nhật ổn định. Nhược điểm: ranh giới cắt qua khái niệm; cần overlap dư thừa để giảm truncation, khiến chi phí tăng. Dùng thận trọng: đây là baseline tốt cho nội dung không đồng nhất hoặc ít cấu trúc khi tín hiệu ngữ nghĩa không đáng tin.
Cửa sổ trượt có chồng lấn
Kích thước cửa sổ W với overlap O, ví dụ 500 / 50 token, giảm việc cắt sự kiện tại ranh giới. Overlap vượt khoảng 15% cho lợi ích recall giảm dần trong khi làm kích thước chỉ mục tăng nhanh. Theo dõi duplication_ratio = distinct_token_count / total_token_count để chỉnh O xuống dựa trên dữ liệu.
Phát hiện ranh giới ngữ nghĩa
Phân đoạn theo tín hiệu cấu trúc: heading H2/H3, nhóm danh sách, khối mã, ranh giới bảng. Thực thi giới hạn token tối thiểu/tối đa, gộp sibling quá nhỏ và chia section quá lớn. Lợi ích: kết dính cao hơn, ít overlap hơn. Rủi ro: markup lỗi, thứ bậc heading không nhất quán. Giảm thiểu bằng sửa thứ bậc cộng fallback sang chia theo đoạn khi thiếu heading.
Chunking phân cấp
Chỉ mục hai tầng: embedding section thô, ví dụ toàn bộ section hướng dẫn, cộng subchunk chi tiết. Luồng retrieval: ANN thô -> lọc N section đứng đầu -> retrieval chi tiết bên trong chúng. Ưu điểm: giảm không gian tìm kiếm toàn cục cho corpus lớn, cải thiện độ trễ. Độ phức tạp: nhiều phần chuyển động hơn và cần logic scoring dạng cascade.
Chunking thích ứng / động
Điều chỉnh kích thước chunk theo mật độ ngữ nghĩa cục bộ và gợi ý cấu trúc. Ví dụ logic: bắt đầu ở section heading; nếu >800 token thì chia theo cụm đoạn được chấm điểm bằng tương đồng ngữ nghĩa; nếu <120 token thì gộp với sibling kế tiếp trừ khi độ lệch chủ đề vượt threshold. Cần pre-pass embedding hoặc similarity; trả chi phí một lần lúc ingestion để có hiệu quả retrieval dài hạn tốt hơn.
Cân nhắc embedding
Duy trì metadata: token_count, model_version, content_hash. Tránh truncation bằng cách tính token trước và chia trước khi gọi mô hình. Mô hình dense suy giảm khi có quá nhiều boilerplate; loại bỏ artefact điều hướng trước khi chunking. Giám sát vector_density (số thuật ngữ duy nhất / token) để phát hiện mảnh tín hiệu thấp, ứng viên cho gộp lại.
Phương pháp đánh giá
Benchmark theo chiến lược:
| Chỉ số | Mục đích |
|---|---|
| Recall@k | Giữ lại sự kiện |
| Precision@k | Nhiễu ngữ cảnh |
| Số lượng chunk | Chỉ báo chi phí |
| Tỷ lệ trùng lặp | Tinh chỉnh overlap |
| Token trung bình mỗi chunk | Mức tận dụng cửa sổ |
| Độ trễ (retrieval) | Hiệu quả chỉ mục |
Chạy trên gold query set; chỉ chọn chiến lược khi lợi ích recall lớn hơn chi phí và độ trễ tăng thêm.
Playbook triển khai
- Baseline: Fixed 500 + overlap 10%; thu thập benchmark.
- Đưa vào ranh giới ngữ nghĩa: thay cửa sổ ở nơi heading đáng tin; đo lại.
- Thêm lớp phân cấp nếu corpus >250k chunks hoặc độ trễ > mục tiêu.
- Deploy logic thích ứng cho kích thước section biến thiên mạnh.
- Đánh giá lại hằng quý: so chi phí trên mỗi delta chất lượng với năng lực mô hình mới.
Lưu diff manifest chunk theo từng vòng để rollback.
Ý chính
- Ranh giới ngữ nghĩa thường thắng cửa sổ cố định thuần túy về precision/chi phí.
- Overlap là một núm chỉnh: hãy đo trùng lặp, đừng đoán.
- Retrieval phân cấp giúp mở rộng mà không tăng độ trễ tuyến tính.
- ID chunk ổn định cho phép làm mới embedding tăng dần an toàn.
- Đánh giá thay đổi chiến lược như deploy mã: benchmark, so sánh, ghi log.