![]() |
| RAG vs. CAG, explained visually for AI engineers |
RAG (Retrieval-Augmented Generation) đã thay đổi hoàn toàn cách chúng ta xây dựng các hệ thống AI dựa trên dữ liệu thực tế. Tuy nhiên, nếu bạn đã từng đưa hệ thống AI lên môi trường production, bạn sẽ nhanh chóng nhận ra một điểm yếu cố hữu:
1. Bản chất của RAG và CAG là gì?
RAG (Truy xuất truyền thống): Truy vấn -> Tìm kiếm top-K chunks từ DB -> Nhồi chunks vào prompt -> Gửi cho LLM đọc lại từ đầu.CAG (Sử dụng bộ nhớ đệm): Cho phép model "ghi nhớ" các thông tin cố định bằng cách lưu chúng trực tiếp vào bộ nhớ Key-Value (KV memory) của LLM. Lần sau hỏi, model dùng luôn cache mà không cần đọc lại ngữ cảnh.
2. So sánh RAG vs. CAG (Pros & Cons)
3. Use Cases: Chọn lọc những gì bạn Cache
🟢 Dữ liệu "Lạnh" (Cold Data) -> Dùng CAG: Sổ tay nhân viên, chính sách công ty, API Documentation, System Instructions dài.🔵 Dữ liệu "Nóng" (Hot Data) -> Dùng RAG: Lịch sử chat của user, trạng thái đơn hàng, dữ liệu real-time cập nhật từng phút.
4. Giải pháp Tối ưu: Kiến trúc RAG + CAG (Hybrid) với Modern Tech Stack
marker-pdf: Chuyển đổi các file PDF phức tạp (chứa bảng biểu, định dạng khó) thành Markdown siêu sạch — định dạng mà LLM hiểu tốt nhất. Đây là nguồn cho Dữ liệu tĩnh (CAG).Google Gen AI (google-genai): Sử dụng Gemini 1.5 với tính năngContext Caching API bản địa để lưu trữ Markdown tĩnh này.PostgreSQL 16 + pgvector: Đóng vai trò là Vector Database mạnh mẽ để lưu trữ và truy xuất siêu tốc các sự kiện, lịch sử tương tác động của người dùng (RAG).
💻 Python Code: Optimized Hybrid RAG + CAG
Tại sao Kiến trúc này là "vũ khí tối thượng"?
Chất lượng Context tuyệt đối (marker-pdf): RAG truyền thống thường "gãy" khi parse file PDF chứa bảng biểu pháp lý, nhân sự. Việc bóc tách sạch sẽ bằng mô hình deep-learning của marker-pdf đảm bảo LLM không bị "mù" định dạng.Tối ưu TTFT (Time-To-First-Token) cực đỉnh: Bằng cách đưa system_instruction trực tiếp vào hàm create_cache, Gemini sẽ tiền xử lý toàn bộ luật lệ. Model trả lời gần như tức thì và bạn chỉ tốn 1 phần nhỏ phí token so với việc gửi đi gửi lại hàng chục ngàn từ mỗi lần.Khắc phục lỗi Multi-tenancy với pgvector: Các hệ thống In-memory Vector DB thường gặp khó khi lọc dữ liệu theo user. SQL thuần của Postgres (WHERE user_id = %s) lọc dữ liệu người dùng cực kỳ an toàn trước khi tính khoảng cách không gian (Cosine Distance).Kiểm soát Hallucination: Việc set temperature=0.1 kết hợp với prompt tách bạch rõ (Dữ liệu động vs Câu hỏi) ép LLM trở thành một cỗ máy suy luận logic nghiêm ngặt dựa trên Cache thay vì "sáng tác" thêm.
