Vấn đề gốc
Một mô hình ngôn ngữ (LLM) chỉ biết những gì có trong dữ liệu huấn luyện. Khi người dùng hỏi về tài liệu nội bộ, chính sách mới, số liệu quý gần nhất, mô hình sẽ bịa (hallucinate) hoặc trả lời chung chung. RAG (Retrieval-Augmented Generation) giải quyết điều này bằng cách: trước khi để LLM trả lời, hệ thống truy hồi (retrieve) những đoạn tài liệu liên quan nhất và đưa vào ngữ cảnh (context) cho mô hình đọc rồi mới sinh câu trả lời.
Hãy hình dung một trợ lý được phép mở sách tra cứu trước khi trả lời, thay vì trả lời bằng trí nhớ. Chất lượng câu trả lời phụ thuộc gần như hoàn toàn vào việc trợ lý tìm đúng trang sách hay không.
Kiến trúc RAG tối giản
- Ingestion (nạp dữ liệu): tài liệu được cắt nhỏ thành chunk, chuyển thành embedding (vector số) và lưu vào vector index.
- Retrieval (truy hồi): câu hỏi của người dùng cũng được embedding, hệ thống tìm k chunk gần nhất về mặt ngữ nghĩa.
- Augmentation (tăng cường): các chunk này được ghép vào prompt cùng câu hỏi.
- Generation (sinh): LLM đọc context và viết câu trả lời, kèm citation (trích dẫn nguồn).
Vì sao PM phải hiểu retrieval, không phó mặc cho kỹ sư
Nhiều PM nghĩ RAG là "chọn model xịn hơn là xong". Sai. Phần lớn lỗi trong sản phẩm RAG nằm ở retrieval, không phải ở generation. Nếu bạn không phân biệt được hai loại lỗi này, bạn sẽ ưu tiên sai backlog: đổ tiền nâng cấp model (đắt, chậm cải thiện) trong khi vấn đề thật là chunking tồi hoặc index cũ.
PM giỏi về RAG là người biết đặt câu hỏi: Câu trả lời sai vì hệ thống không tìm thấy tài liệu đúng, hay tìm thấy rồi mà mô hình vẫn viết sai? Câu hỏi này sẽ theo bạn suốt khóa học.
Ví dụ cụ thể
Một ngân hàng làm chatbot trả lời chính sách phí. Người dùng hỏi: "Phí chuyển khoản liên ngân hàng dưới 500 nghìn là bao nhiêu?" Tài liệu chính sách có ghi rõ "miễn phí dưới 500.000đ". Nhưng chatbot trả lời "7.700đ". Điều tra ra: chunk chứa quy định miễn phí bị cắt cụt, phần "dưới 500.000đ được miễn phí" nằm ở chunk khác không được truy hồi. Đây là lỗi retrieval, không phải lỗi model. Đổi sang GPT xịn hơn cũng không cứu được.
Khung tư duy: RAG là một sản phẩm tìm kiếm, không phải một sản phẩm chatbot
Hãy coi lõi của RAG là search engine. Mọi chỉ số, mọi quyết định đều xoay quanh: chúng ta có đưa đúng bằng chứng vào tay mô hình không? Chatbot chỉ là lớp trình bày phía trên.
Checklist khởi động một dự án RAG
- [ ] Xác định rõ corpus (tập tài liệu nguồn) và tần suất cập nhật.
- [ ] Thu thập 30–50 câu hỏi thật của người dùng để làm bộ test.
- [ ] Với mỗi câu, ghi nhận tài liệu đúng (gold document) — đây là nền để đo recall.
- [ ] Thống nhất định nghĩa "trả lời đúng": đúng nội dung và có citation kiểm chứng được.
- [ ] Vẽ được luồng: câu hỏi → retrieve → context → answer, biết chèn log ở đâu.
Sai lầm thường gặp
- Nhầm RAG với fine-tuning. RAG đưa tri thức qua context lúc chạy; fine-tune ghi tri thức vào trọng số. Với tài liệu hay thay đổi, RAG gần như luôn thắng vì cập nhật chỉ cần nạp lại index.
- Bỏ qua bộ test ngay từ đầu. Không có bộ câu hỏi + gold document thì mọi cải tiến chỉ là cảm tính.
- Đổ lỗi cho model khi chưa xem retrieval. Đây là phản xạ tốn tiền nhất trong nghề.
- Coi citation là trang trí. Citation là cơ chế kiểm chứng — bỏ nó đi là bạn mất khả năng chẩn đoán và mất niềm tin của người dùng.