RAG là gì và khi nào cần

Trước khi dựng bất cứ thứ gì, cần hiểu rõ RAG giải quyết vấn đề nào của mô hình ngôn ngữ — và vấn đề nào nó không giải quyết được.

Ba giới hạn của LLM

Một LLM học từ dữ liệu có đến một thời điểm nhất định, rồi “đóng băng”. Khi đưa vào sản phẩm, ba giới hạn lộ ra gần như ngay lập tức:

Ý tưởng của RAG

Retrieval-Augmented Generation (Lewis và cộng sự, 2020) tách việc “biết” ra khỏi mô hình. Thay vì mong mô hình nhớ mọi thứ, hệ thống tìm những đoạn tài liệu liên quan tới câu hỏi, đưa chúng vào prompt, rồi yêu cầu mô hình trả lời chỉ dựa trên các đoạn đó.

Hình dung LLM không có RAG giống một người thi vấn đáp chỉ dựa vào trí nhớ. LLM có RAG giống người được mang tài liệu vào phòng thi: vẫn cần hiểu và diễn đạt, nhưng dữ kiện lấy từ tài liệu và có thể chỉ ra trang nào.

Kết quả mong đợi:

Hai pha: lập chỉ mục và truy vấn

Pha lập chỉ mục (indexing) — offline

NạpPDF, HTML, wiki, DB
→
Làm sạchbỏ header, footer, rác
→
Chunkchia đoạn vừa phải
→
Embedđoạn → vector
→
Lưuvector + metadata

Pha truy vấn (query) — mỗi câu hỏi

Hỏi“Nghỉ phép năm được mấy ngày?”
→
Truy xuấttop-k đoạn gần nhất
→
Rerankgiữ đoạn tốt nhất
→
Promptchỉ dẫn + nguồn + câu hỏi
→
Sinhtrả lời kèm [1], [2]

Chất lượng cuối cùng phụ thuộc vào cả hai pha. Một thực tế hay gặp: phần lớn câu trả lời sai không đến từ mô hình sinh, mà vì đoạn tài liệu đúng không được truy xuất — vì vậy chunking, embedding và truy xuất được nói kỹ nhất trong khoá học.

Một ví dụ đầu–cuối

Câu hỏi: Nhân viên thử việc có được làm việc từ xa không?

[Truy xuất] top-3 đoạn từ "Quy định làm việc từ xa v2.1":
  [1] "Nhân viên đã hết thời gian thử việc được đăng ký tối đa 2 ngày/tuần..."
  [2] "Trong thời gian thử việc, làm việc từ xa cần quản lý trực tiếp phê duyệt từng lần..."
  [3] "Đơn đăng ký gửi qua cổng nhân sự trước 17h thứ Sáu..."

[Sinh] Nhân viên thử việc không đăng ký cố định được, nhưng có thể làm việc từ xa
       nếu quản lý trực tiếp phê duyệt từng lần [2]. Sau thử việc, tối đa 2 ngày/tuần [1].

RAG, fine-tuning hay context dài?

RAGFine-tuningNhét cả tài liệu vào context
Thêm kiến thức mớiTốt — cập nhật kho là xongKém, tốn công, dễ quên kiến thức cũTốt nếu tài liệu nhỏ
Dạy phong cách / định dạngHạn chếTốtHạn chế
Trích dẫn nguồnTự nhiênKhôngĐược, nhưng khó chỉ chính xác
Kho tài liệu lớn (GB)Được—Không vừa, đắt
Phân quyền theo người dùngLọc lúc truy xuấtKhôngPhải tự lọc trước
Chi phí mỗi câu hỏiThấp–vừaThấpCao khi context dài
Quy tắc chọn nhanh Cần kiến thức (dữ kiện, tài liệu, số liệu thay đổi) → RAG. Cần hành vi (giọng văn, định dạng đầu ra, quy trình suy luận riêng) → fine-tuning. Tài liệu nhỏ, ít thay đổi, ít người dùng → cân nhắc đưa thẳng vào context trước khi dựng cả hệ thống.
RAG không phải thuốc chữa mọi bệnh Câu hỏi cần tổng hợp toàn bộ kho (“xu hướng khiếu nại năm nay là gì?”) hoặc tính toán trên dữ liệu có cấu trúc (“doanh thu quý 3?”) thường cần truy vấn SQL, phân tích, hoặc các biến thể trong Lỗi thường gặp & nâng cao — không phải top-k đoạn văn.

Tự kiểm tra

Vì sao RAG giảm hallucination nhưng không loại bỏ hoàn toàn? Vì mô hình vẫn có thể bỏ qua ngữ cảnh, suy diễn quá mức, hoặc ngữ cảnh truy xuất về không chứa đáp án. Cần prompt buộc dựa vào nguồn, cho phép trả lời “không biết”, và đo faithfulness (xem Dựng prompt và Đánh giá chất lượng).
Công ty muốn chatbot trả lời theo đúng giọng thương hiệu và dựa trên 5.000 trang tài liệu cập nhật hằng tuần. Dùng gì? Kết hợp: RAG cho kiến thức từ 5.000 trang thay đổi hằng tuần; giọng thương hiệu có thể đạt bằng prompt hệ thống, chỉ fine-tune nếu prompt không đủ.
Nếu câu trả lời sai, bước nào nên kiểm tra đầu tiên? Kiểm tra các đoạn đã truy xuất: đáp án có nằm trong đó không. Nếu không có, lỗi ở pha truy xuất/lập chỉ mục; nếu có mà vẫn sai, lỗi ở prompt/sinh.