[AI & GenAI Blog #39] Kiến Trúc RAG Nâng Cao (Advanced RAG) & GraphRAG: Self-RAG, Corrective RAG (CRAG), Cross-Encoder Re-Ranking & Khai Thác Knowledge Graphs Trong Doanh Nghiệp
![[AI & GenAI Blog #39] Kiến Trúc RAG Nâng Cao (Advanced RAG) & GraphRAG: Self-RAG, Corrective RAG (CRAG), Cross-Encoder Re-Ranking & Khai Thác Knowledge Graphs Trong Doanh Nghiệp](/uploads/ai-images/cover-advanced-rag-graphrag.png)
1. Bối cảnh thực tế (Context & Problem Statement)
Trong các ứng dụng Generative AI ban đầu, hầu hết các nhóm kỹ thuật đều bắt đầu bằng Naive RAG (RAG Đơn Luồng Cơ Bản):
Tuy nhiên, khi đưa Naive RAG vào môi trường doanh nghiệp thực tế, hệ thống thất bại trong hơn các trường hợp phức tạp do 3 "căn bệnh" kinh niên:
- Hiện tượng "Lạc lõng ở giữa" (Lost-in-the-Middle Phenomenon): Các mô hình LLM chú ý tốt nhất vào phần đầu và phần cuối của Prompt; các đoạn văn bản quan trọng nằm ở giữa Top- documents thường bị mô hình bỏ qua hoàn toàn.
- Thất bại trước câu hỏi tổng quan (Global Sensemaking Failure): Với câu hỏi mang tính bao quát như: "Các chủ đề rủi ro chính được nhắc đến trong toàn bộ 500 báo cáo tài chính năm qua là gì?", Vector Search chỉ có thể tìm các đoạn văn có từ khóa tương đồng cục bộ mà hoàn toàn bất lực trong việc tổng hợp bức tranh toàn cảnh.
- Ảo giác do dữ liệu rác (Noise Ingestion): Vector search trả về các đoạn văn bản không liên quan nhưng có điểm số cosine tương đồng cao LLM bị "nhiễm độc thông tin" và sinh ra câu trả lời sai lệch.
Advanced RAG, Modular RAG và GraphRAG ra đời như một sự tiến hóa kiến trúc toàn diện nhằm biến RAG thành một hệ thống thông minh có khả năng tự đánh giá, tự sửa sai và tư duy theo mạng lưới tri thức.
2. Các Khái Niệm & Cơ Chế Cốt Lõi
2.1. Khung Kiến Trúc Modular RAG 4 Tầng (The 4-Stage Modular RAG Pipeline)
[User Query: "Chính sách bảo hành sản phẩm X áp dụng từ tháng 8/2026?"]
|
v
+-----------------------------------------------------------------------------------+
| 1. PRE-RETRIEVAL (Tối ưu hóa câu hỏi đầu vào) |
| - Query Rewriting / Expansion: Sinh 3 câu hỏi tương đương bằng LLM |
| - HyDE (Hypothetical Document Embeddings): Tạo văn bản giả định để lấy vector |
| - Query Routing: Định tuyến câu hỏi sang SQL DB, Vector DB hay Web Search |
+--------------------------------+--------------------------------------------------+
|
v
+-----------------------------------------------------------------------------------+
| 2. RETRIEVAL (Truy xuất đa nguồn kết hợp) |
| - Hybrid Search: Dense Vector (HNSW) + Sparse Lexical (BM25) |
| - Small-to-Big Retrieval: Tìm kiếm theo câu nhỏ nhưng trả về đoạn văn lớn (Parent)|
+--------------------------------+--------------------------------------------------+
| (Top 50 Raw Chunks)
v
+-----------------------------------------------------------------------------------+
| 3. POST-RETRIEVAL (Tinh lọc & Nén ngữ cảnh) |
| - Cross-Encoder Re-Ranking (Cohere / BGE-Reranker): Chấm điểm sâu từ 50 -> Top 5|
| - Context Compression (LLMLingua): Loại bỏ từ thừa, giảm 50% chi phí token |
| - Long-Context Reordering: Đặt tài liệu quan trọng nhất lên đầu và cuối prompt |
+--------------------------------+--------------------------------------------------+
| (Top 5 Clean Chunks)
v
+-----------------------------------------------------------------------------------+
| 4. GENERATION & VERIFICATION (Sinh câu trả lời & Tự kiểm chứng) |
| - Self-Correction: Kiểm tra tính trung thực (Faithfulness Check) so với nguồn |
+-----------------------------------------------------------------------------------+
2.2. Kỹ Thuật Re-Ranking: Bi-Encoder vs. Cross-Encoder
- Bi-Encoder (Dùng trong Vector DB): Mã hóa Query và Document thành 2 vector độc lập riêng biệt ( và ), sau đó so sánh bằng phép nhân vô hướng .
Tốc độ siêu nhanh () nhưng độ chính xác ngữ nghĩa ở mức trung bình vì hai văn bản không được tương tác trực tiếp với nhau. - Cross-Encoder (Dùng trong Re-Ranker): Nạp đồng thời cả cặp
[Query, Document]vào chung một mạng Transformer để cơ chế Cross-Attention cho phép từng từ trong Query tương tác trực tiếp với từng từ trong Document.
Độ chính xác xếp hạng cực kỳ cao, lọc bỏ triệt để các tài liệu rác từ Vector DB trước khi nạp vào LLM.
2.3. Các Mô Hình RAG Tự Phản Tư (Self-Reflective RAG)
1. Self-RAG (Self-Reflective Retrieval-Augmented Generation - Asai et al., 2023)
Thay vì luôn luôn tìm kiếm dữ liệu một cách thụ động, Self-RAG huấn luyện mô hình sinh ra các Token Phản tư đặc biệt (Reflection Tokens) để tự kiểm soát luồng hoạt động:
[Retrieve]: Tự quyết định câu hỏi này có cần tra cứu tài liệu ngoài không? (Nếu hỏi "1+1=?" Không cần tra cứu).[IsRel]: Đánh giá tài liệu tìm được có thực sự liên quan đến câu hỏi không?[IsSup]: Đánh giá câu trả lời sinh ra có được chứng minh bởi tài liệu không (Chống ảo giác)?[IsUse]: Đánh giá câu trả lời có hữu ích với người dùng không?
2. Corrective RAG (CRAG - Yan et al., 2024)
Tích hợp một Mô-đun Đánh giá độ tin cậy (Retrieval Evaluator):
- Trường hợp Correct (Chính xác): Tài liệu liên quan cao Tinh lọc và nạp vào LLM.
- Trường hợp Incorrect (Sai lệch hoàn toàn): Toàn bộ tài liệu trong Vector DB không liên quan Tự động kích hoạt Web Search (Google/Tavily API) để tìm kiếm tri thức từ Internet.
- Trường hợp Ambiguous (Mơ hồ): Kết hợp cả tài liệu nội bộ và kết quả Web Search.
2.4. Đột Phá GraphRAG (Microsoft Research - Hợp Nhất Knowledge Graphs)
Để giải quyết bài toán suy luận đa bước (Multi-hop) và hiểu bức tranh toàn cảnh của toàn bộ kho dữ liệu:
- Trích xuất Thực thể & Quan hệ: Sử dụng LLM để đọc toàn bộ tài liệu thô, tự động trích xuất các Thực thể (Entities: Người, Tổ chức, Khái niệm) và Mối quan hệ (Relationships) để xây dựng Đồ thị tri thức (Knowledge Graph).
- Phân cụm Cộng đồng (Community Detection via Leiden Algorithm): Thuật toán Leiden tự động gom các thực thể liên quan chặt chẽ thành các cụm cộng đồng phân cấp đa tầng (Cấp 0: Toàn bộ công ty Cấp 1: Phòng ban Cấp 2: Dự án con).
- Sinh Báo cáo Tóm tắt Cộng đồng (Community Summaries): LLM tạo ra các bản tóm tắt súc tích cho từng cụm cộng đồng.
- Global Search Queries: Khi người dùng hỏi một câu hỏi vĩ mô, hệ thống chỉ cần đọc các bản tóm tắt cộng đồng phân cấp thay vì tìm kiếm vector thô Trả lời xuất sắc các câu hỏi tổng quan mà Vector RAG hoàn toàn bất lực!
[Hàng nghìn tài liệu PDF thô]
|
v (LLM Entity & Relationship Extraction)
[Knowledge Graph: Nodes & Edges]
|
v (Leiden Community Clustering)
[Hierarchical Communities (Cụm tri thức đa tầng)]
|
v (LLM Pre-generated Summaries)
[Community Summaries Vault] ===> Trả lời hoàn hảo: "Chủ đề bao quát toàn bộ tài liệu là gì?"
3. Các Bảng Markdown So Sánh Chi Tiết
📊 Bảng 1: So Sánh Tiến Hóa: Naive RAG vs. Advanced RAG vs. GraphRAG
| Tiêu chí | Naive RAG (Cơ bản) | Advanced / Modular RAG | GraphRAG (Microsoft) |
|---|---|---|---|
| Cấu trúc lưu trữ | Chỉ dùng Vector Database thô | Vector DB + BM25 + Re-Ranker | Vector DB + Knowledge Graph (Entities & Communities) |
| Loại câu hỏi tối ưu | Câu hỏi tra cứu điểm dữ liệu đơn lẻ (Point Lookup) | Câu hỏi cần ngữ cảnh chính xác cao, lọc nhiễu | Câu hỏi tổng quan toàn cục (Global Sensemaking) & Suy luận đa bước |
| Chi phí Indexing ban đầu | Rất thấp (Chỉ cần chạy Embedding) | Thấp / Trung bình | Cao hơn (Cần LLM trích xuất Entities và tóm tắt cụm) |
| Khả năng tự sửa sai | Hoàn toàn không có | Có (Qua CRAG / Self-RAG) | Có (Duyệt theo cấu trúc đồ thị liên kết) |
| Độ chính xác (Accuracy) | trên văn bản phức tạp |
📊 Bảng 2: So Sánh Bi-Encoder (Vector Search) vs. Cross-Encoder (Re-Ranker)
| Tiêu chí | Bi-Encoder (Dense Vector Search) | Cross-Encoder (Re-Ranker) |
|---|---|---|
| Kiến trúc mô hình | 2 nhánh Transformer độc lập: , | 1 mạng Transformer duy nhất nhận input [Query + Doc] |
| Cơ chế Attention | Không có tương tác giữa Query và Document | Full Cross-Attention giữa từng từ của Query và Doc |
| Độ trễ tính toán | Siêu tốc () trên hàng triệu vectors | Chậm hơn ( cho 50 documents) |
| Khả năng tính trước (Pre-computation) | Có thể tính trước toàn bộ vector tài liệu | Không thể (Bắt buộc phải tính toán tại thời điểm query) |
| Vị trí trong Pipeline | Tầng 1: Lọc thô ban đầu (Top 100) | Tầng 2: Tinh lọc sâu chọn ra Top 5 chất lượng nhất |
📊 Bảng 3: Bộ Chỉ Số Đo Lường RAG Chuẩn Mực (The Ragas Evaluation Framework)
| Chỉ số (Metric) | Bản chất câu hỏi đo lường | Dữ liệu đầu vào cần thiết | Phát hiện lỗi gì? |
|---|---|---|---|
| Faithfulness (Độ trung thực) | Câu trả lời có được suy ra hoàn toàn từ Context không? | (Context, Answer) | Phát hiện Ảo giác (Hallucination) của LLM |
| Answer Relevance (Độ liên quan) | Câu trả lời có giải quyết đúng trọng tâm câu hỏi không? | (Query, Answer) | Phát hiện việc trả lời vòng vo, lạc đề |
| Context Precision (Độ chính xác ngữ cảnh) | Các đoạn tài liệu liên quan có được xếp lên đầu không? | (Query, Context, Ground Truth) | Đánh giá chất lượng của Re-Ranker / Search Engine |
| Context Recall (Độ bao phủ ngữ cảnh) | Context thu thập được có chứa đủ thông tin để trả lời không? | (Context, Ground Truth) | Đánh giá chất lượng của Tầng Retrieval ban đầu |
4. Best Practices & Kỹ Thuật Tối Ưu RAG Thực Chiến (Pro-Tips)
💡 Kỹ thuật "Small-to-Big Retrieval" (Parent-Child Document Chunker)
- Vấn đề:
- Chunk nhỏ (ví dụ 100 từ) giúp vector embedding cực kỳ chính xác nhưng LLM lại thiếu ngữ cảnh xung quanh để hiểu trọn vẹn câu chuyện.
- Chunk lớn (ví dụ 1000 từ) chứa đủ ngữ cảnh nhưng vector embedding bị loãng, khiến việc tìm kiếm cosine dễ bị trượt.
- Giải pháp Parent-Child Indexing:
- Chia tài liệu thành các Parent Chunks lớn ().
- Tiếp tục chia mỗi Parent Chunk thành nhiều Child Chunks nhỏ ().
- Chỉ nhúng vector và thực hiện tìm kiếm trên các Child Chunks nhỏ.
- Khi tìm thấy Child Chunk có điểm số cao nhất Truy xuất toàn bộ Parent Chunk tương ứng nạp vào LLM!
[Parent Chunk: 1000 tokens - Ngữ cảnh hoàn chỉnh]
|---> [Child Chunk 1: 150 tokens] (Lưu Vector trong Vector DB)
|---> [Child Chunk 2: 150 tokens] (Lưu Vector trong Vector DB) <--- MATCH!
|---> [Child Chunk 3: 150 tokens] (Lưu Vector trong Vector DB)
|
v
[Trả về toàn bộ Parent Chunk 1000 tokens cho LLM sinh câu trả lời]
💡 Nén Prompt bằng LLMLingua để tiết kiệm Token
Sử dụng mô hình nhỏ (như LLaMA-2-7B / Small BERT) để tính toán độ bất ngờ (Perplexity) của từng từ trong Context. Tự động loại bỏ các từ nối, đại từ, thông tin dư thừa mà không làm mất đi các thực thể thông tin cốt lõi, giúp giảm độ dài prompt và tăng tốc độ sinh từ của LLM.
5. Góc Ôn Luyện Phỏng Vấn (Interview Corner)
❓ Câu hỏi 1: Tại sao Naive RAG thường gặp thất bại với hiện tượng "Lost-in-the-Middle"? Kỹ thuật Cross-Encoder Re-Ranking và Long-Context Reordering giải quyết vấn đề này như thế nào?
- Gợi ý trả lời:
- Bản chất hiện tượng Lost-in-the-Middle:
- Các nghiên cứu khoa học của Đại học Stanford chỉ ra rằng: Khả năng trích xuất thông tin của mô hình Transformer đạt hiệu quả cao nhất ở đầu tiên và cuối cùng của cửa sổ Context Window.
- Khi nạp Top-20 documents từ Vector DB vào Prompt, các đoạn văn bản chứa câu trả lời đúng nếu vô tình nằm ở khoảng giữa (từ vị trí thứ 5 đến 15) sẽ có xác suất bị LLM bỏ qua lên tới .
- Giải pháp 2 bước khắc phục:
- Cross-Encoder Re-Ranking: Sử dụng Re-ranker để chấm điểm tương quan sâu, rút gọn danh sách từ Top 50 xuống chỉ giữ lại Top 3 đến Top 5 tài liệu thực sự chất lượng nhất, loại bỏ hoàn toàn các đoạn văn rác làm loãng Context.
- Long-Context Reordering (Sắp xếp đảo chiều): Thay vì đặt tài liệu điểm cao nhất ở vị trí 1, 2, 3, 4, 5 tuần tự, ta sắp xếp theo thứ tự: Điều này đảm bảo các thông tin quan trọng nhất luôn nằm ở hai đầu mép của Context Window, nơi LLM chú ý tốt nhất.
- Bản chất hiện tượng Lost-in-the-Middle:
❓ Câu hỏi 2: GraphRAG của Microsoft hoạt động như thế nào? Trong trường hợp nào GraphRAG vượt trội hoàn toàn so với Vector RAG truyền thống?
- Gợi ý trả lời:
- Hạn chế của Vector RAG:
- Vector RAG dựa trên độ tương đồng ngữ nghĩa cục bộ (Local Semantic Similarity). Nó hoạt động tốt khi câu hỏi có thể khớp trực tiếp với một vài đoạn văn bản cụ thể.
- Nhưng khi gặp câu hỏi suy luận đa bước ("Mối liên hệ giữa công ty A và sự cố môi trường tại dự án B là gì?") hoặc câu hỏi tổng quan ("Tóm tắt các xu hướng chính của toàn bộ tài liệu"), Vector RAG thất bại vì thông tin bị phân mảnh rải rác trên hàng trăm tài liệu khác nhau.
- Cơ chế hoạt động của GraphRAG:
- Graph Construction: Dùng LLM trích xuất toàn bộ Entities, Relationships và Claims để dựng thành Knowledge Graph.
- Hierarchical Community Detection: Dùng thuật toán phân cụm Leiden để nhóm các thực thể liên quan chặt chẽ thành các cụm cộng đồng tri thức từ cấp vĩ mô đến vi mô.
- Community Summarization: LLM tạo trước các bản tóm tắt phân tích cho từng cụm.
- Khi nào GraphRAG vượt trội:
- Trả lời xuất sắc các câu hỏi Tổng hợp tri thức toàn cục (Global Sensemaking) và các câu hỏi Suy luận bắc cầu qua nhiều thực thể (Multi-Hop Causal Reasoning) mà không bỏ sót bất kỳ mối liên kết ẩn nào.
- Hạn chế của Vector RAG:
❓ Câu hỏi 3: Hãy giải thích 4 chỉ số cốt lõi trong khung đánh giá RAG (Ragas Framework): Faithfulness, Answer Relevance, Context Precision và Context Recall. Nếu một hệ thống RAG có Context Recall cao nhưng Faithfulness thấp, nguyên nhân gốc rễ là gì?
- Gợi ý trả lời:
- Định nghĩa 4 chỉ số:
- Context Recall: Tỷ lệ thông tin cần thiết có mặt trong tập Context thu thập được so với Ground Truth (Đo lường năng lực của Retriever).
- Context Precision: Mức độ các tài liệu thực sự liên quan được xếp ở các thứ hạng đầu tiên (Đo lường năng lực của Re-Ranker).
- Faithfulness: Tỷ lệ các tuyên bố trong câu trả lời có bằng chứng xác thực nằm trong Context (Đo lường khả năng chống Ảo giác của Generator).
- Answer Relevance: Mức độ câu trả lời giải quyết trực tiếp câu hỏi của người dùng.
- Chẩn đoán trường hợp Context Recall cao nhưng Faithfulness thấp:
- Hiện tượng: Tầng tìm kiếm (Retriever) đã hoàn thành xuất sắc nhiệm vụ (kéo được đầy đủ tài liệu chứa thông tin đúng), nhưng câu trả lời sinh ra bởi LLM lại chứa các chi tiết sai sự thật không có trong tài liệu.
- Nguyên nhân gốc rễ:
- Prompt kỹ thuật chưa đủ chặt chẽ (Thiếu chỉ dẫn nghiêm ngặt: "Chỉ trả lời dựa trên ngữ cảnh được cung cấp, không suy diễn ngoài tài liệu").
- Nhiệt độ của mô hình (Temperature) đặt quá cao (ví dụ ), khiến LLM thiên về tính sáng tạo thay vì bám sát dữ liệu.
- Hiện tượng Lost-in-the-Middle (Context quá dài làm LLM bỏ sót bằng chứng và tự suy diễn thêm).
- Định nghĩa 4 chỉ số:
6. Tóm Tắt Ghi Nhớ Nhanh (Key Takeaways)
- Naive RAG thất bại do Lost-in-the-Middle, Nhiễu dữ liệu và Bất lực trước câu hỏi tổng quan.
- Modular RAG chuẩn mực gồm 4 tầng: Pre-Retrieval (Query Rewrite) Hybrid Retrieval Cross-Encoder Re-Ranking Generation.
- Parent-Child Chunking (Small-to-Big) là kỹ thuật tối ưu hóa tỷ lệ Search Match chính xác trong khi vẫn bảo tồn ngữ cảnh lớn cho LLM.
- GraphRAG (Microsoft) kết hợp Knowledge Graphs + Leiden Clustering để giải quyết triệt để bài toán Suy luận đa bước (Multi-Hop) và Bức tranh toàn cảnh (Global Sensemaking).
- Luôn đo lường chất lượng RAG bằng bộ chỉ số Ragas (Faithfulness, Answer Relevance, Context Precision, Context Recall).