1. Lời Mở Đầu: Sự Thất Bại Của Chunking Cơ Học
Khi xây dựng RAG, nếu bạn chỉ cắt tài liệu bằng các hàm RecursiveCharacterTextSplitter truyền thống (ví dụ: cắt mỗi khối 500 token), bạn đang tự phá hủy hệ thống của mình.
Việc cắt xén cơ học sẽ làm đứt gãy các đại từ nhân xưng (“nó”, “họ”, “dự án này”) và làm mất đi bối cảnh tổng thể (Context loss). Một đoạn văn giải thích về “Khoản bồi thường” ở trang 10 sẽ hoàn toàn vô nghĩa đối với LLM nếu nó bị cắt rời khỏi “Tên hợp đồng và Các bên liên quan” nằm ở trang 1.
Trong năm 2026, các System Architect không còn nói về “Chunking” đơn thuần nữa, mà họ gọi đó là Nghệ thuật Kỹ sư Ngữ cảnh (Context Engineering). Dưới đây là 2 kỹ thuật Đột phá nhất hiện nay để giải quyết triệt để bài toán này.
2. Kỹ Thuật 1: Late Chunking (Sự Trỗi Dậy Của Jina AI)
Cách chunking cũ (Cắt trước, Nhúng sau) khiến các Embeddings bị “mù” bối cảnh xung quanh. Late Chunking đảo ngược hoàn toàn quy trình này: Nhúng (Embed) trước, Cắt (Chunk) sau.
- Bước 1 (Embed Toàn bộ): Đưa toàn bộ tài liệu dài (hàng chục ngàn token) qua một mô hình Embedding có Context Window lớn (như
jina-embeddings-v3). Quá trình này giúp mô hình tính toán được mối quan hệ (attention) giữa tất cả các từ trong văn bản. Mọi token giờ đây đều mang theo “ký ức” của toàn bộ tài liệu. - Bước 2 (Cắt và Gộp): Sau khi đã có bộ Embeddings hoàn chỉnh của toàn bộ văn bản, hệ thống mới tiến hành cắt nó ra. Bằng cách gộp (Mean-pooling) các token đã được nhúng, ta thu được các Chunk Vector ngắn gọn nhưng mang hàm lượng bối cảnh vĩ mô cực kỳ đậm đặc.
Kết quả: Một đoạn văn ngắn ở trang 50 giờ đây vẫn có thể chứa đựng ngữ nghĩa của Tiêu đề chính nằm ở trang 1.
3. Kỹ Thuật 2: Contextual Retrieval (Bí Kíp Của Anthropic)
Nếu Late Chunking tối ưu ở cấp độ Vector, thì Contextual Retrieval (được khởi xướng bởi Anthropic) lại giải quyết vấn đề ở cấp độ Văn bản (Text level).
- Chuẩn bị: Cắt tài liệu thành các Chunk nhỏ bình thường.
- Bổ sung Ngữ cảnh: Sử dụng một LLM nhỏ, tốc độ cao (như Claude 3 Haiku) để tự động viết một câu mở bài (Header) dán vào đầu mỗi Chunk.
- Ví dụ: Thay vì lưu một Chunk chỉ có nội dung “Công ty sẽ chịu phạt 5% doanh thu”, LLM sẽ biến nó thành:
[Ngữ cảnh: Trong Hợp đồng M&A giữa Công ty A và B năm 2026, thuộc mục Điều khoản Phạt vi phạm] Công ty sẽ chịu phạt 5% doanh thu.
- Ví dụ: Thay vì lưu một Chunk chỉ có nội dung “Công ty sẽ chịu phạt 5% doanh thu”, LLM sẽ biến nó thành:
- Prompt Caching: Để việc gọi LLM cho hàng triệu Chunk không làm bạn phá sản, kỹ thuật này bắt buộc phải kết hợp với Prompt Caching (lưu bộ đệm toàn bộ tài liệu gốc) giúp tiết kiệm đến 90% chi phí API sinh context.
4. Reranking (Xếp Hạng Lại): Lưới Lọc Nhiều Tầng
Đừng bao giờ đổ trực tiếp kết quả từ Vector Database vào thẳng LLM. Để tối ưu hóa độ chính xác và tốc độ, hệ thống 2026 sử dụng mô hình Reranking hình Phễu (Funnel):
- Tầng 1 (Vector Search): Truy xuất thô 500 tài liệu nhanh nhất có thể bằng Bi-Encoder hoặc BM25.
- Tầng 2 (ColBERT - Late Interaction): Lọc 500 tài liệu này xuống còn 50. ColBERT so sánh từng token của câu hỏi với từng token của tài liệu. Nó cực nhanh (nhờ Late Interaction) và hiệu quả.
- Tầng 3 (Cross-Encoder): Chốt chặn cuối cùng. Lấy 50 tài liệu từ tầng 2, ghép nối trực tiếp với câu hỏi và đưa vào mạng Transformer để đánh giá. Cực kỳ tốn kém và chậm (High Latency), nhưng cho ra 5 tài liệu cuối cùng với độ chuẩn xác (Precision) tuyệt đối để nạp vào LLM.
5. Semantic Caching: Cứu Cánh Cho Hóa Đơn API
Khi hệ thống RAG đưa vào Production, bạn sẽ nhận ra một sự thật đau lòng: 70% câu hỏi của người dùng là lặp đi lặp lại hoặc tương tự nhau, nhưng họ dùng các từ ngữ khác nhau. Nếu dùng Cache truyền thống (khớp chính xác 100% Text), bạn sẽ luôn Cache Miss.
Giải pháp: Semantic Caching với Redis / Valkey hoặc AI Gateways (như Bifrost)
- Thay vì so khớp chuỗi (String Match), hệ thống biến câu hỏi mới thành Vector và so sánh với Vector của các câu hỏi cũ trong Redis.
- Nếu Cosine Similarity > 0.90 (hai câu hỏi có ý nghĩa tương đồng nhau), hệ thống ngay lập tức trả về câu trả lời đã được cache từ trước, bỏ qua hoàn toàn bước gọi Vector DB và bước sinh text của LLM.
- Lợi ích kép: Giảm độ trễ (Latency) từ hàng chục giây xuống còn chưa tới 5ms, đồng thời cắt giảm lên tới 70% chi phí gọi LLM API.
6. Tổng Kết
Chunking không còn là việc dùng dao phay cắt thịt; nó là nghệ thuật bảo tồn bối cảnh. Với sự kết hợp của Late Chunking, Contextual Retrieval, và lưới lọc Reranking, RAG của bạn sẽ trả lời với độ chính xác của một chuyên gia. Đồng thời, Semantic Caching sẽ bảo vệ ngân sách của bạn khỏi sự hao tổn không đáng có.
Tuy nhiên, dù RAG có giỏi đến đâu, nó vẫn chỉ là hệ thống trả lời thụ động (Reactive). Trong Phần 4: Streaming CDC & Federated RAG, chúng ta sẽ đưa hệ thống này lên một tầm cao mới: Các Data Pipeline tự động cập nhật tri thức theo thời gian thực (Real-time CDC) trực tiếp từ các hệ thống Database lõi của doanh nghiệp.