1. Đặt vấn đề
Model AI không thể xử lý toàn bộ kho tài liệu cùng lúc. Khi người dùng hỏi, hệ thống chỉ có thể đưa một số đoạn tài liệu liên quan vào prompt. Vì vậy, tài liệu cần được chia thành các đoạn nhỏ gọi là chunk. Chunk là đơn vị cơ bản để tạo embedding, lưu vector và truy xuất trong RAG.
Chia chunk tưởng đơn giản, nhưng thực tế ảnh hưởng rất lớn đến chất lượng RAG. Nếu chunk quá ngắn, mất ngữ cảnh. Nếu chunk quá dài, khó tìm chính xác và tốn context. Nếu chunk cắt giữa câu, giữa bảng hoặc giữa bước quy trình, câu trả lời có thể thiếu ý. Trong bệnh viện, chunking cần tôn trọng cấu trúc tài liệu.
2. Chunk là gì?
Chunk là một đoạn văn bản được cắt từ tài liệu nguồn để lập chỉ mục. Mỗi chunk thường gồm:
- Nội dung văn bản.
- Tiêu đề hoặc đường dẫn mục.
- Metadata tài liệu.
- ID chunk.
- Vị trí trong tài liệu.
Ví dụ, một quy trình có thể chia thành chunk theo từng bước:
- Mục đích.
- Phạm vi.
- Trách nhiệm.
- Bước 1.
- Bước 2.
- Bước 3.
- Biểu mẫu liên quan.
3. Vì sao không embedding toàn bộ tài liệu?
Nếu embedding toàn bộ một quy trình dài thành một vector, vector đó đại diện cho quá nhiều nội dung. Khi người dùng hỏi một chi tiết nhỏ, hệ thống khó tìm đúng đoạn. Ngoài ra, khi đưa toàn bộ tài liệu dài vào prompt, model có thể bị nhiễu và tốn tài nguyên.
Chunk giúp tìm đúng đoạn cụ thể hơn.
4. Chunk quá ngắn có vấn đề gì?
Chunk quá ngắn có thể mất ngữ cảnh. Ví dụ chunk chỉ có câu:
“Gửi báo cáo trong vòng 24 giờ.”
Nhưng không biết báo cáo gì, gửi cho ai, trong trường hợp nào. Nếu chunk này được truy xuất, model có thể hiểu sai.
Vì vậy, chunk nên kèm tiêu đề và ngữ cảnh cha:
“Quy trình báo cáo sự cố té ngã người bệnh > Bước 4: Gửi báo cáo…”
5. Chunk quá dài có vấn đề gì?
Chunk quá dài có thể chứa nhiều ý khác nhau. Khi người dùng hỏi một ý, vector của chunk bị trung bình hóa, giảm độ chính xác. Chunk dài cũng làm prompt dài, tốn context, giảm tốc độ.
Chunk quá dài còn có thể làm model khó xác định câu trả lời nằm ở đâu trong đoạn.
6. Kích thước chunk nên bao nhiêu?
Không có con số tuyệt đối. Với tiếng Việt bệnh viện, có thể bắt đầu thử:
- 300–800 từ cho tài liệu văn bản.
- 1–3 mục nhỏ cho quy trình.
- 1 điều/khoản cho văn bản pháp luật.
- 1 bảng kiểm hoặc một nhóm câu hỏi cho bảng kiểm.
- 1 biểu mẫu với phần mô tả chính.
Quan trọng hơn số từ là tính hoàn chỉnh ngữ nghĩa.
7. Chunk theo cấu trúc tài liệu
Trong bệnh viện, nên chia theo:
Quy trình
- Mục đích.
- Phạm vi.
- Trách nhiệm.
- Định nghĩa.
- Từng bước thực hiện.
- Biểu mẫu.
- Lưu hồ sơ.
- Giám sát.
Quy định/quy chế
- Điều.
- Khoản.
- Mục.
- Trách nhiệm từng đơn vị.
Phác đồ/hướng dẫn
- Chỉ định.
- Chống chỉ định.
- Chuẩn bị.
- Thực hiện.
- Theo dõi.
- Xử trí tai biến.
- Lưu ý.
Biểu mẫu
- Tên, mã, mục đích.
- Các trường chính.
- Cách sử dụng.
- Quy trình liên quan.
8. Chunk overlap
Overlap là phần chồng lặp giữa các chunk. Ví dụ chunk sau lặp lại 50–100 từ cuối của chunk trước. Overlap giúp tránh mất ngữ cảnh khi cắt giữa các đoạn liên quan.
Tuy nhiên, overlap quá nhiều làm tăng số chunk và tăng dung lượng index. Trong bệnh viện, nên dùng overlap vừa phải, hoặc tốt hơn là chunk theo cấu trúc để ít cần overlap.
9. Thêm tiêu đề vào chunk
Một kỹ thuật quan trọng là thêm tiêu đề cha vào nội dung chunk trước khi embedding. Ví dụ:
Tài liệu: Quy trình báo cáo sự cố y khoaMục: Trách nhiệm của khoa lâm sàngNội dung: ...
Điều này giúp embedding hiểu ngữ cảnh và giúp model trả lời đúng hơn.
10. Chunk và metadata
Mỗi chunk cần metadata:
- Tên tài liệu.
- Mục.
- Số trang nếu có.
- Vị trí.
- Phiên bản.
- Quyền truy cập.
- Tình trạng hiệu lực.
Metadata không nhất thiết đưa toàn bộ vào embedding, nhưng cần lưu để lọc và hiển thị nguồn.
11. Kiểm tra chất lượng chunk
Sau khi chunking, cần lấy mẫu kiểm tra:
- Chunk có đủ nghĩa không?
- Có bị cắt giữa câu không?
- Có tiêu đề không?
- Bảng có bị vỡ không?
- Biểu mẫu có mất mã không?
- Chunk có quá dài không?
- Chunk có quá ngắn không?
Chunking nên được cải tiến sau khi test truy xuất.
12. Kết luận
Chia chunk là bước quyết định chất lượng RAG. Chunk phải đủ nhỏ để tìm chính xác, đủ lớn để giữ ngữ cảnh, có tiêu đề, có metadata và tôn trọng cấu trúc tài liệu bệnh viện. Chunking tốt giúp FAISS truy xuất đúng hơn và Ollama trả lời có căn cứ hơn. Chunking kém sẽ làm cả hệ thống RAG kém, dù model mạnh và embedding tốt.
- Đăng nhập để gửi ý kiến