🕸️ 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.

Knowledge Graph Neo4j Microsoft Multi-hop Reasoning
Sau bài này bạn sẽ
  • 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
Dành cho
AI engineers đã hiểu RAG cơ bản, muốn nâng cấp
Yêu cầu trước
Đọc bài RAG trước, Python, OpenAI API key
⏱️ Thời gian
~20 phút

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”
ví dụ knowledge graph
[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:

  1. Entity Extraction — LLM đọc documents, trích xuất entities + relationships
  2. Graph Construction — Xây dựng knowledge graph từ entities
  3. Community Detection — Phân cụm nodes liên quan chặt chẽ (Leiden algorithm)
  4. 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

terminal
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/
settings.yaml (cấu hình chính)
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]
terminal — build index
# Index documents (tốn thời gian + API costs)
python -m graphrag index --root .
📤 Kết quả indexing
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
terminal — query
# 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