TROISINH
Chuyên sâuRAG & Search

Cách hoạt động của RAG

Giải mã kiến trúc Retrieval-Augmented Generation: từ chunking dữ liệu, vector embedding đến reranking và cách LLM tổng hợp thông tin để giảm hallucination.

Định nghĩa

RAG hoạt động bằng cách tách biệt kiến thức tĩnh (lưu trữ trong vector database) khỏi khả năng lý luận (parametric knowledge của LLM), cho phép mô hình truy cập thông tin cập nhật và chính xác qua một pipeline gồm ba giai đoạn: indexing, retrieval, và generation.

Giải thích chi tiết

Pipeline ba giai đoạn

RAG không phải là một công nghệ đơn lẻ mà là sự phối hợp của nhiều thành phần. Hiểu rõ từng giai đoạn giúp bạn debug khi hệ thống trả lời sai hoặc thiếu sót.

Indexing — Chuẩn bị dữ liệu

Giai đoạn này diễn ra offline, trước khi người dùng đặt câu hỏi:

  • Chunking: Tài liệu gốc (PDF, HTML, Word) bị chia thành các đoạn nhỏ (chunk) thường 200–500 tokens. Chiến lược chia ảnh hưởng lớn đến chất lượng: fixed size (đơn giản), semantic (theo đoạn văn nghĩa), hoặc recursive (phân cấp chủ đề). Luôn để độ chồng lấn (overlap) 10–20% giữa các chunk để tránh mất ngữ cảnh ở ranh giới.
  • Embedding: Mỗi chunk được đưa qua model embedding (như text-embedding-3-small hoặc multilingual-e5-large) để biến thành vector số học (768 hoặc 1536 chiều). Vector này capture ý nghĩa ngữ nghĩa (semantic meaning), cho phép so sánh độ tương đồng về ý nghĩa thay vì từ khóa.
  • Metadata: Gắn thông tin phụ như nguồn gốc, ngày xuất bản, tác giả, hoặc category để lọc (filtering) sau này. Ví dụ: chỉ tìm trong tài liệu "Hợp đồng 2024" mà bỏ qua "Hợp đồng 2023".

Retrieval — Truy xuất thông tin

Khi user gửi câu hỏi, hệ thống thực hiện:

  • Query embedding: Câu hỏi được embedding bằng cùng model với dữ liệu để đảm bảo cùng không gian vector.
  • Vector search: Tìm K vector gần nhất trong database (K thường từ 5–10). Dùng cosine similarity hoặc dot product để đo khoảng cách.
  • Hybrid search: Kết hợp dense retrieval (vector) với sparse retrieval (BM25/TF-IDF) để bắt được cả thuật ngữ chuyên ngành hiếm gặp (mã sản phẩm, tên riêng) và ý nghĩa ngữ cảnh.
  • Reranking: Dùng cross-encoder (mô hình nặng hơn embedding model) để đánh giá lại độ liên quan thực sự giữa query và top-K chunks, giảm xuống top-3 chất lượng nhất. Kỹ thuật MMR (Maximal Marginal Relevance) còn giúp đảm bảo đa dạng thông tin, tránh các chunk quá giống nhau gây lặp lại.

Generation — Tăng cường và sinh câu trả lời

  • Context stuffing: Nối các retrieved chunks vào prompt với định dạng rõ ràng:
    Context: [chunk 1] [chunk 2] Question: [query] Instruction: Trả lời dựa trên context, nếu không có thông tin thì nói không biết.
  • In-context learning: LLM không "học" kiến thức mới mà chỉ "đọc" context được cung cấp trong inference. Đây là lý do RAG không làm thay đổi weights của LLM, cho phép dùng model gốc (base model) mà vẫn có thông tin mới.
  • Citation: Prompt engineering yêu cầu LLM trích dẫn nguồn (source attribution), tăng độ tin cậy và cho phép user verify.

Vấn đề kỹ thuật quan trọng

  • Context window limit: Nếu retrieve quá nhiều chunks, vượt quá limit tokens của model (4k, 32k, hoặc 128k), phải dùng kỹ thuật summarization trung gian (compressive retrieval) hoặc Map-Reduce.
  • Lost in the middle: LLM thường chú ý thông tin ở đầu và cuối context hơn giữa. Kỹ thuật rerank phải đưa thông tin quan trọng nhất lên đầu prompt.
  • Hallucination từ retrieval: Nếu chunk bị cắt giữa chừng (ví dụ: "Tuy nhiên, điều này không đúng với trường hợp..." bị cắt mất phần sau), LLM sẽ hiểu sai và trả lời ngược lại sự thật.

Ví dụ thực tế

Chatbot nội quy công ty FPT Software

Thay vì fine-tune GPT-4 trên 1000 trang nội quy (tốn kém, không update được khi nội quy thay đổi), họ triển khai RAG:

  • Chia employee handbook thành chunks theo chủ đề: nghỉ phép, bảo mật thông tin, claim chi phí.
  • Nhân viên hỏi: "Tôi muốn nghỉ 3 ngày không lương thì cần gì?"
  • System retrieve đúng điều khoản liên quan từ vector DB, đưa vào prompt. ChatGPT trả lời: "Theo mục 4.2 Nội quy lao động 2024, bạn cần làm đơn xin phép trước 48 giờ và được trưởng phòng duyệt..."
  • Khi nội quy sửa đổi, chỉ cần update vector DB (xóa chunk cũ, thêm chunk mới), không cần train lại model.

Trợ lý bác sĩ tại Bệnh viện Chợ Rẫy

Hệ thống tra cứu thuốc và hướng dẫn điều trị:

  • Database: 50.000 bài báo y khoa tiếng Việt, tờ hướng dẫn sử dụng thuốc.
  • Query: "Celecoxib có tương tác với Metformin không?"
  • RAG retrieve thông tin tương tác thuốc từ ngân hàng dữ liệu, LLM tổng hợp thành câu trả lời ngắn gọn, cảnh báo nguy cơ tác dụng phụ trên thận. Bác sĩ có thể click vào trích dẫn để xem nghiên cứu gốc trước khi quyết định.

Hệ thống hỗ trợ khách hàng Shopee

Xử lý câu hỏi về đơn hàng cụ thể:

  • Không chỉ dùng LLM để trả lời chung chung, mà retrieve thông tin đơn hàng từ database cấu trúc (SQL) kết hợp với policy chính sách đổi trả (unstructured text trong vector DB).
  • Tạo câu trả lời cá nhân hóa: "Đơn hàng SPX123456 của bạn đang ở kho Tân Bình, dự kiến giao ngày mai theo chính sách giao hàng nhanh bạn đã chọn lúc 14:00 hôm qua."

Ứng dụng

Sinh viên nghiên cứu

Xây dựng hệ thống hỏi đáp luận văn: Upload 100 paper PDF về Computer Vision, dùng RAG để trích xuất "Các paper nào dùng Transformer cho object detection từ 2022?" với trích dẫn đúng trang. Tránh việc LLM bịa tên paper hoặc năm xuất bản (hallucination nguồn).

Developer xây dựng sản phẩm

  • Dùng LangChain hay LlamaIndex để orchestrate pipeline, nhưng cần tùy chỉnh chunking và prompt template thay vì dùng default.
  • Tối ưu chi phí: Dùng model embedding rẻ (local/edge) cho indexing, model nhỏ (GPT-3.5) cho retrieval filtering, chỉ dùng GPT-4 cho bước generation cuối cùng nếu cần lý luận phức tạp.
  • Triển khai self-query retrieval: Cho phép user lọc "Chỉ tìm trong tài liệu năm 2023" bằng cách parse metadata filter từ câu hỏi tự nhiên.

Doanh nghiệp lớn (Ngân hàng, Chính phủ)

  • Compliance check: RAG kiểm tra hợp đồng có vi phạm quy định pháp luật không bằng cách retrieve điều khoản luật liên quan từ CSDL văn bản pháp luật.
  • Knowledge management: Nhân viên mới hỏi về quy trình xử lý sự cố IT, hệ thống tự động tìm đúng SOP (Standard Operating Procedure) cập nhật nhất từ Confluence/SharePoint, thay vì gửi email hỏi đồng nghiệp.

So sánh

RAG thường được so sánh với fine-tuning vì cả hai đều giúp LLM "biết" thông tin mới. Tuy nhiên cơ chế khác biệt hoàn toàn:

Tiêu chíRAG (Retrieval-Augmented Generation)Fine-tuning
Cơ chế cập nhật kiến thứcThay đổi dữ liệu trong vector DB (vài phút)Retrain model, update weights (vài giờ đến ngày)
Chi phí triển khaiThấp (chi phí embedding API + storage)Cao (GPU, data preparation, hyperparameter tuning)
Độ chính xác sự kiện (fact)Cao (truy cập dữ kiện gốc, trích dẫn được)Trung bình (phụ thuộc vào data training có chứa sự kiện đó không)
HallucinationThấp nếu retrieve đúng, cao nếu retrieve saiVẫn cao nếu model không nhớ chính xác hoặc confuse với kiến thức cũ
Khả năng lý luận (reasoning)Giữ nguyên khả năng của base modelCó thể giảm nếu overfit trên domain hẹp (catastrophic forgetting)
Yêu cầu dataÍt (vài trăm document chưa cần label)Nhiều (hàng nghìn cặp hỏi-đáp chất lượng cao, cần label)
Trích dẫn nguồn (source)Có thể (tra cứu được chunk gốc)Khó (kiến thức bị "hòa tan" vào weights)

Kết luận: RAG phù hợp khi kiến thức thay đổi nhanh, cần trích dẫn nguồn, hoặc dữ liệu lớn không thể nhét vào context; fine-tuning phù hợp khi cần thay đổi style, tone giọng văn, hoặc dạy model kỹ năng lý luận chuyên sâu trong một domain hẹp (ví dụ: phân tích y khoa theo chuẩn riêng). Trong thực tế, các hệ thống chuyên sâu thường kết hợp cả hai: fine-tune model để hiểu domain tốt hơn, rồi dùng RAG để cung cấp facts cụ thể cập nhật.

Bài viết liên quan

Cùng cụm

  • RAG là gì? — Định nghĩa tổng quan về Retrieval-Augmented Generation và tại sao nó ra đời để giải quyết giới hạn của LLM.
  • Khi nào nên dùng RAG — Phân tích các scenario phù hợp và giới hạn của RAG trong thực tế triển khai.
  • Vector search là gì? — Giải thích chi tiết cơ chế tìm kiếm ngữ nghĩa dựa trên embedding và khoảng cách không gian vector.
  • Semantic search là gì? — Sự khác biệt giữa tìm kiếm từ khóa truyền thống và tìm kiếm theo ý nghĩa ngữ cảnh.

Đọc tiếp

  • Embedding và kiến thức nền — Hiểu sâu về vector embedding, cách mô hình biến văn bản thành số để RAG có thể "hiểu" ngữ nghĩa thay vì chỉ so khớp từ khóa.
  • Fine-tuning thực chiến — So sánh chi tiết giữa RAG và fine-tuning, cách kết hợp hai phương pháp để xây dựng hệ thống AI chuyên sâu cho doanh nghiệp.

On this page