Cache Augmented Generation (CAG) là một kiến trúc dành cho các Mô hình Ngôn ngữ Lớn (LLMs) giúp loại bỏ nhu cầu truy xuất dữ liệu theo thời gian thực bằng cách tải trước (pre-load) toàn bộ cơ sở tri thức trực tiếp vào bộ nhớ hoạt động của mô hình.
Nói một cách dễ hiểu, nếu RAG (Retrieval Augmented Generation – Tạo sinh tăng cường truy xuất) hoạt động giống như một học sinh đi vào thư viện để tra cứu câu trả lời cho từng câu hỏi, thì CAG hoạt động giống như một học sinh đã học thuộc lòng toàn bộ sách giáo khoa trước khi bài kiểm tra bắt đầu.
Cách thức hoạt động: “KV Cache”
Nền tảng kỹ thuật của CAG chính là cơ chế Key-Value (KV) Cache được tìm thấy trong các mô hình Transformer.
- Tải trước (Pre-loading): Thay vì chia nhỏ tài liệu và đưa chúng vào cơ sở dữ liệu vector, bạn nạp toàn bộ tập dữ liệu (ngữ cảnh) vào LLM ngay từ đầu.
- Tính toán trước (Pre-computation): Mô hình xử lý dữ liệu này một lần và tính toán các biểu diễn toán học (các trạng thái chú ý hay còn gọi là “Keys” và “Values”). Những dữ liệu này được lưu trữ trong bộ nhớ GPU.
- Truy cập tức thì (Instant Access): Khi người dùng đặt câu hỏi, mô hình không cần tìm kiếm trong cơ sở dữ liệu. Nó tham chiếu ngay lập tức bộ nhớ đệm (cache) đã tính toán trước đó và tạo câu trả lời ngay lập tức.
So sánh CAG và RAG
| Tính năng | RAG (Tạo sinh tăng cường truy xuất) | CAG (Tạo sinh tăng cường bộ nhớ đệm) |
| Quy trình | Truy xuất → Đọc → Trả lời. Tìm kiếm các đoạn thông tin liên quan từ database trước. | Tải trước → Cache → Trả lời. Nạp toàn bộ ngữ cảnh một lần; tái sử dụng trạng thái bộ nhớ. |
| Tốc độ | Chậm hơn. Bị độ trễ trong giai đoạn tìm kiếm và truy xuất. | Nhanh hơn. Thời gian truy xuất bằng 0; việc tạo sinh diễn ra gần như tức thì. |
| Phạm vi kiến thức | Vô hạn. Có thể tìm kiếm trên hàng triệu tài liệu. | Có giới hạn. Bị giới hạn bởi kích thước cửa sổ ngữ cảnh (context window) của mô hình. |
| Cập nhật | Linh hoạt. Dễ dàng thêm file mới vào cơ sở dữ liệu. | Tĩnh. Thêm dữ liệu mới thường yêu cầu phải nạp lại cache từ đầu. |
| Chất lượng gợi nhớ | Phụ thuộc. Nếu tìm kiếm thất bại hoặc sai đoạn, câu trả lời sẽ sai. | Cao. Mô hình nhìn thấy toàn bộ ngữ cảnh, cải thiện khả năng suy luận tổng thể. |
Tại sao CAG lại phổ biến vào lúc này?
Cách tiếp cận này trước đây là bất khả thi vì các mô hình AI cũ chỉ có thể xử lý lượng văn bản rất nhỏ cùng một lúc (khoảng 10-20 trang).
Ngày nay, sự trỗi dậy của các Long Context LLMs (LLM ngữ cảnh dài) cho phép các mô hình giữ lượng thông tin tương đương hàng trăm cuốn sách hoặc các bộ mã nguồn khổng lồ trong “bộ nhớ làm việc” tức thời của chúng (cửa sổ ngữ cảnh lên tới 1 triệu+ tokens). Điều này giúp việc lưu cache toàn bộ tài liệu dự án trở nên khả thi thay vì phải xây dựng một hệ thống truy xuất phức tạp.
Khi nào bạn nên sử dụng CAG?
- Suy luận phức tạp: Bạn cần mô hình kết nối các dữ kiện từ nhiều phần khác nhau của tài liệu (ví dụ: “So sánh luận điểm trong phần mở đầu với phần kết luận”), điều mà RAG gặp khó khăn vì nó chỉ truy xuất các mảnh rời rạc.
- Yêu cầu độ trễ thấp: Bạn cần thời gian phản hồi nhanh nhất có thể.
- Dữ liệu tĩnh: Bạn đang truy vấn một tập hợp file cụ thể (như hợp đồng pháp lý, sách, hoặc hướng dẫn sử dụng) mà sẽ không thay đổi trong suốt cuộc hội thoại.
- Tương tác sâu: Người dùng sẽ hỏi nhiều câu hỏi xoay quanh cùng một tập tài liệu.
Khi nào bạn nên gắn bó với RAG?
- Quy mô khổng lồ: Bạn có hàng Terabytes dữ liệu mà đơn giản là không thể nhét vừa vào một câu lệnh (prompt), ngay cả với cửa sổ ngữ cảnh lớn.
- Dữ liệu thay đổi nhanh: Dữ liệu của bạn thay đổi từng phút (như tin tức hoặc bảng giá chứng khoán).
- Nhạy cảm về chi phí: Tùy thuộc vào nhà cung cấp, việc giữ một bộ nhớ cache lớn luôn “nóng” (sẵn sàng) trong bộ nhớ đôi khi đắt hơn so với việc tra cứu cơ sở dữ liệu đơn giản.
Cách nó giảm Chi phí & Độ trễ
Prompt Caching (Bộ nhớ đệm lời nhắc) là tính năng giúp Cache Augmented Generation (CAG) khả thi về mặt kinh tế. Nếu không có nó, bạn sẽ phải trả toàn bộ chi phí để tải lại và xử lý lại “toàn bộ cuốn sách giáo khoa” (ngữ cảnh) cho mỗi câu hỏi bạn đặt ra. Prompt caching cho phép nhà cung cấp mô hình giữ “cuốn sách” đó mở trong bộ nhớ (RAM) để bạn chỉ phải trả tiền tham chiếu đến nó, chứ không phải đọc lại từ đầu.
Khi bạn gửi một prompt đến LLM, bước đắt đỏ nhất là “Prefill” (đọc đầu vào và tính toán các trạng thái chú ý Key-Value).
- Không có Caching: Bạn gửi 100 trang. Mô hình đọc 100 trang (
$).![Rendered by QuickLaTeX.com \[$) → tạo câu trả lời ($). Câu hỏi tiếp theo? Bạn lại gửi 100 trang đó. Mô hình lại đọc 100 trang (\]](https://vi.ksml4.com/wp-content/ql-cache/quicklatex.com-d98b6352441648dc8bb4e6fb15016b13_l3.png)
- Có Caching: Bạn gửi 100 trang một lần. Mô hình đọc chúng ($$$) và giữ lại các tính toán toán học trong bộ nhớ. Câu hỏi tiếp theo? Bạn chỉ gửi câu hỏi. Mô hình bỏ qua việc đọc 100 trang và chỉ tạo câu trả lời ($).
Kết quả:
- Chi phí: Giảm 90-95% cho các token đầu vào (sau lần tải đầu tiên).
- Độ trễ: “Thời gian phản hồi token đầu tiên” (Time to First Token) giảm 80%+ vì mô hình bỏ qua giai đoạn đọc hiểu.
Khuyến nghị
- Nếu bạn đang xây dựng ứng dụng “Chat với PDF” nơi người dùng tải lên một file và hỏi liên tiếp 10 câu: Hãy sử dụng cơ chế caching của Anthropic (nó rẻ hơn cho các phiên làm việc ngắn, dồn dập).
- Nếu bạn đang xây dựng một Enterprise Bot (Bot doanh nghiệp) cần nắm rõ sổ tay công ty 24/7 và trả lời hàng nghìn nhân viên: Hãy sử dụng Context Caching của Google (phí lưu trữ theo giờ rẻ hơn so với việc phải nạp lại sổ tay liên tục).