🕸️ Graph RAG — Knowledge Graph + RAG
Kết hợp Knowledge Graph với RAG để hiểu mối quan hệ giữa entities — trả lời câu hỏi phức tạp mà RAG truyền thống không làm được.
- Hiểu Knowledge Graph và Graph RAG khác RAG truyền thống thế nào
- Biết pipeline 4 bước của Microsoft GraphRAG
- Setup GraphRAG với Python
- Biết khi nào nên dùng Graph RAG (và khi nào không)
- Hiểu chi phí và trade-offs
1. RAG truyền thống thiếu gì?
RAG cơ bản tìm chunks “gần” câu hỏi theo vector similarity. Với câu hỏi cụ thể (“Chính sách nghỉ phép?”), RAG hoạt động tốt. Nhưng với câu hỏi cần suy luận qua nhiều bước, RAG thất bại:
- “Liệt kê tất cả dự án của team A có liên quan đến khách hàng X?” — cần hiểu quan hệ team → project → customer
- “Những themes chung trong tất cả báo cáo Q4?” — cần tổng hợp toàn bộ dataset
- “Ai là người có ảnh hưởng nhất trong tổ chức?” — cần phân tích mạng lưới
Quy tắc đơn giản: Nếu trả lời cần thông tin từ 1-2 đoạn văn → RAG đủ. Nếu cần hiểu mối quan hệ giữa nhiều entities hoặc tổng hợp toàn bộ dataset → Graph RAG.
2. Knowledge Graph & Graph RAG
Knowledge Graph là gì?
Là cách biểu diễn thông tin dưới dạng đồ thị gồm:
- Nodes (entities) — người, tổ chức, sản phẩm, khái niệm
- Edges (relationships) — “làm việc tại”, “sản xuất bởi”, “liên quan đến”
[Nguyễn Văn A] --làm_việc--> [Công ty X]
[Công ty X] --sản_xuất--> [Sản phẩm Y]
[Sản phẩm Y] --dùng_tech--> [React]
[Sản phẩm Y] --phục_vụ--> [Ngân hàng Z]
→ Query: "Nguyễn Văn A liên quan gì đến Ngân hàng Z?"
→ Trả lời: "A làm ở Công ty X, công ty này sản xuất
Sản phẩm Y, phục vụ Ngân hàng Z"
Graph RAG = RAG + Knowledge Graph
Thay vì chỉ search chunks, Graph RAG duyệt qua đồ thị quan hệ → hiểu ngữ cảnh sâu, trả lời câu hỏi multi-hop.
3. Pipeline 4 bước (Microsoft GraphRAG)
Microsoft open-source GraphRAG (2024), pipeline gồm:
- Entity Extraction — LLM đọc documents, trích xuất entities + relationships
- Graph Construction — Xây dựng knowledge graph từ entities
- Community Detection — Phân cụm nodes liên quan chặt chẽ (Leiden algorithm)
- Community Summarization — LLM tạo summary cho từng cụm
Khi query:
- Local Search — tìm entities liên quan → duyệt graph → trả lời (giống RAG nhưng theo graph)
- Global Search — dùng community summaries → map-reduce → trả lời tổng hợp
4. Setup GraphRAG
pip install graphrag
mkdir my-graphrag && cd my-graphrag
# Khởi tạo project
python -m graphrag init --root .
# Đặt documents vào thư mục input/
cp your-documents/*.txt ./input/
llm:
type: openai_chat
model: gpt-4o
api_key: ${OPENAI_API_KEY}
embeddings:
type: openai_embedding
model: text-embedding-3-small
chunks:
size: 1200
overlap: 100
entity_extraction:
max_gleanings: 1
entity_types: [person, org, project, tech]
# Index documents (tốn thời gian + API costs)
python -m graphrag index --root .
Processing 15 documents... Chunks created: 128 Entities extracted: 342 Relationships found: 567 Communities detected: 23 Community reports generated: 23 Index completed in 4m 32s API cost estimate: ~$2.50
# Local search (câu hỏi cụ thể)
python -m graphrag query --root . \
--method local \
--query "Những dự án nào liên quan đến React?"
# Global search (câu hỏi tổng hợp)
python -m graphrag query --root . \
--method global \
--query "Themes chung trong tất cả documents?"
5. Global vs Local Search
| Tiêu chí | Local Search | Global Search |
|---|---|---|
| Cách hoạt động | Tìm entity → duyệt graph | Dùng community summaries |
| Tốt cho | Câu hỏi cụ thể | Câu hỏi tổng hợp |
| Tốc độ | Nhanh | Chậm hơn (map-reduce) |
| Chi phí | Thấp | Cao (nhiều LLM calls) |
| Ví dụ | “A làm ở đâu?” | “Xu hướng chung là gì?” |
6. Chi phí & Trade-offs
⚠️ Chi phí indexing cao: GraphRAG cần LLM xử lý TOÀN BỘ documents để extract entities. 100 pages PDF có thể tốn $5-10 API costs cho indexing. RAG truyền thống chỉ tốn ~$0.10 cho embedding.
| Tiêu chí | RAG truyền thống | Graph RAG |
|---|---|---|
| Index cost (100 pages) | ~$0.10 | ~$5-10 |
| Index time | ~30 giây | ~5-15 phút |
| Query cost | $0.01-0.05 | $0.05-0.50 |
| Multi-hop reasoning | ❌ Kém | Tốt |
| Global questions | ❌ | |
| Complexity | Đơn giản | Phức tạp |
7. Khi nào & Bước tiếp theo
Nên dùng Graph RAG
- Dữ liệu có nhiều entities liên quan (tổ chức, dự án, con người)
- Cần trả lời câu hỏi tổng hợp (“themes chung là gì?”)
- Multi-hop queries (“A liên quan gì đến C qua B?”)
❌ Không cần
- FAQ chatbot đơn giản → RAG truyền thống đủ
- Budget hạn chế → indexing chi phí cao
- Dữ liệu ít entities (pure text documents)
🔜 Đọc tiếp
- Embedding — hiểu vector embeddings sâu hơn
- RAG cơ bản — nếu chưa đọc
- AI Security — bảo mật cho RAG systems