[AI Guru_Tutorial] Tổng hợp RAG Basics
Khi xây dựng và review các hệ thống RAG (Retrieval-Augmented Generation), tôi nhận thấy nhiều người bắt đầu bằng framework hoặc API nhưng chưa thực sự hiểu lỗi có thể xuất hiện ở đâu. Theo tôi, RAG không phải một kỹ thuật đơn lẻ mà là một pipeline liên hoàn: dữ liệu đầu vào, cách chia văn bản, embedding và retrieval đều ảnh hưởng trực tiếp đến context được cung cấp cho LLM.
Chuỗi bài về RAG Basics gồm sáu tutorial từ #12 đến #17, đi từ tổng quan đến từng thành phần cốt lõi:
- Giới thiệu RAG: hiểu pipeline RAG và xây dựng chatbot hỏi đáp PDF đầu tiên
- Chunking: lựa chọn chunk size, overlap và chiến lược chia văn bản để giữ đủ ngữ cảnh mà không làm loãng thông tin
- Embedding và semantic search: chuyển văn bản thành vector, đo độ tương đồng và tìm kiếm theo ý nghĩa thay vì chỉ khớp từ khóa
- Vector database với Qdrant: tổ chức, lập chỉ mục và truy xuất lượng lớn vector bằng HNSW
- Top k và metadata filtering: kiểm soát số lượng, độ liên quan và phạm vi kết quả bằng score threshold cùng bộ lọc metadata
- Retrieve rồi rerank: dùng Bi-encoder để lấy nhanh tập ứng viên, sau đó dùng Cross-encoder đưa tài liệu phù hợp lên vị trí hữu ích hơn
Qua chuỗi này, tôi không chỉ hướng dẫn cách ghép các thành phần thành một hệ thống có thể chạy được. Điều tôi muốn làm rõ ở đây là mỗi quyết định kỹ thuật đều tạo ra một đánh đổi: chunk quá nhỏ dễ mất ngữ cảnh, top k quá lớn đưa thêm nhiễu, bộ lọc quá chặt làm giảm độ bao phủ, còn reranker cũng không thể giữ được một tài liệu đã bị bỏ sót từ bước truy xuất ban đầu.
Vì vậy, tôi xem việc xây dựng RAG là bài toán thiết kế và đánh giá toàn pipeline, không đơn thuần là kết nối LLM với vector database. Một hệ thống đáng tin cậy cần được đánh giá bằng các độ đo Recall, Hit@k, MRR, nDCG và độ trễ thay vì chỉ dựa trên một vài câu trả lời nghe có vẻ hợp lý.
Nếu mới bắt đầu, bạn nên học tuần tự từ tutorial #12 để hình dung toàn bộ pipeline trước khi đi sâu vào từng thành phần. Nếu đã có một hệ thống RAG, bạn có thể chọn đúng tutorial tương ứng với mắt xích mà bạn gặp vấn đề.

Khi xây dựng và review các hệ thống RAG (Retrieval-Augmented Generation), tôi nhận thấy nhiều người bắt đầu bằng framework hoặc API nhưng chưa thực sự hiểu lỗi có thể xuất hiện ở đâu. Theo tôi, RAG không phải một kỹ thuật đơn lẻ mà là một pipeline liên hoàn: dữ liệu đầu vào, cách chia văn bản, embedding và retrieval đều ảnh hưởng trực tiếp đến context được cung cấp cho LLM.
Chuỗi bài về RAG Basics gồm sáu tutorial từ #12 đến #17, đi từ tổng quan đến từng thành phần cốt lõi:
- Giới thiệu RAG: hiểu pipeline RAG và xây dựng chatbot hỏi đáp PDF đầu tiên
- Chunking: lựa chọn chunk size, overlap và chiến lược chia văn bản để giữ đủ ngữ cảnh mà không làm loãng thông tin
- Embedding và semantic search: chuyển văn bản thành vector, đo độ tương đồng và tìm kiếm theo ý nghĩa thay vì chỉ khớp từ khóa
- Vector database với Qdrant: tổ chức, lập chỉ mục và truy xuất lượng lớn vector bằng HNSW
- Top k và metadata filtering: kiểm soát số lượng, độ liên quan và phạm vi kết quả bằng score threshold cùng bộ lọc metadata
- Retrieve rồi rerank: dùng Bi-encoder để lấy nhanh tập ứng viên, sau đó dùng Cross-encoder đưa tài liệu phù hợp lên vị trí hữu ích hơn
Qua chuỗi này, tôi không chỉ hướng dẫn cách ghép các thành phần thành một hệ thống có thể chạy được. Điều tôi muốn làm rõ ở đây là mỗi quyết định kỹ thuật đều tạo ra một đánh đổi: chunk quá nhỏ dễ mất ngữ cảnh, top k quá lớn đưa thêm nhiễu, bộ lọc quá chặt làm giảm độ bao phủ, còn reranker cũng không thể giữ được một tài liệu đã bị bỏ sót từ bước truy xuất ban đầu.
Vì vậy, tôi xem việc xây dựng RAG là bài toán thiết kế và đánh giá toàn pipeline, không đơn thuần là kết nối LLM với vector database. Một hệ thống đáng tin cậy cần được đánh giá bằng các độ đo Recall, Hit@k, MRR, nDCG và độ trễ thay vì chỉ dựa trên một vài câu trả lời nghe có vẻ hợp lý.
Nếu mới bắt đầu, bạn nên học tuần tự từ tutorial #12 để hình dung toàn bộ pipeline trước khi đi sâu vào từng thành phần. Nếu đã có một hệ thống RAG, bạn có thể chọn đúng tutorial tương ứng với mắt xích mà bạn gặp vấn đề.
