AI Hunter
Member
GraphRAG là gì? Tại sao Microsoft nói Vector Database là chưa đủ?
Bạn xây dựng một con chatbot RAG để chat với tài liệu nội bộ.
User hỏi: "Quy trình xin nghỉ phép thế nào?" -> AI trả lời ngon lành (vì nó tìm thấy văn bản chứa từ khóa "nghỉ phép").
User hỏi: "Tinh thần làm việc chung của team Marketing và team Sales đang bị ảnh hưởng bởi những chính sách nào?" -> AI trả lời sai hoặc chung chung.
Tại sao? Vì câu trả lời không nằm trong một đoạn văn bản cụ thể nào cả. Nó nằm rải rác ở: Chính sách lương (file A), Biên bản họp (file B) và Email phàn nàn (file C).
Vector Search truyền thống thất bại ở đây vì nó không biết kết nối các mảnh ghép rời rạc. Đó là lúc chúng ta cần Knowledge Graph (Đồ thị tri thức).
Bước 1: Indexing (Lập chỉ mục)
* Dùng LLM đọc qua toàn bộ tài liệu.
* Trích xuất Thực thể (Người, Nơi chốn, Tổ chức) và Mối quan hệ.
* Điểm đặc biệt: Gom nhóm các thực thể thành các "Cộng đồng" (Communities) theo thứ bậc (Hierarchical Community Detection).
* Dùng LLM tóm tắt ý nghĩa của từng cộng đồng đó.
Bước 2: Query (Truy vấn)
* Khi có câu hỏi, hệ thống không chỉ tìm từ khóa. Nó quét qua các bản tóm tắt cộng đồng để có cái nhìn tổng quan.
* Kết quả là AI có thể trả lời các câu hỏi dạng: "Chủ đề chính xuyên suốt tập dữ liệu này là gì?" - điều mà RAG truyền thống bó tay.
Điều gì xảy ra bên dưới?
1. LLM nhận câu hỏi.
2. LLM dịch nó sang ngôn ngữ truy vấn Cypher:
3. Neo4j chạy câu lệnh và trả về kết quả chính xác 100%.
Năm 2026, sự kết hợp giữa Vector + Graph (Hybrid RAG) sẽ là tiêu chuẩn mới cho các ứng dụng AI doanh nghiệp.
Bạn xây dựng một con chatbot RAG để chat với tài liệu nội bộ.
User hỏi: "Quy trình xin nghỉ phép thế nào?" -> AI trả lời ngon lành (vì nó tìm thấy văn bản chứa từ khóa "nghỉ phép").
User hỏi: "Tinh thần làm việc chung của team Marketing và team Sales đang bị ảnh hưởng bởi những chính sách nào?" -> AI trả lời sai hoặc chung chung.
Tại sao? Vì câu trả lời không nằm trong một đoạn văn bản cụ thể nào cả. Nó nằm rải rác ở: Chính sách lương (file A), Biên bản họp (file B) và Email phàn nàn (file C).
Vector Search truyền thống thất bại ở đây vì nó không biết kết nối các mảnh ghép rời rạc. Đó là lúc chúng ta cần Knowledge Graph (Đồ thị tri thức).
1. GraphRAG là gì?
GraphRAG (Graph-based Retrieval Augmented Generation) là kỹ thuật sử dụng LLM để trích xuất các thực thể (Entities) và mối quan hệ (Relationships) từ văn bản, sau đó lưu trữ dưới dạng Đồ thị (Graph) thay vì chỉ là các Vector vô hồn.- Vector RAG: Coi dữ liệu là các điểm trong không gian. Gần nhau thì liên quan. (Tốt cho tra cứu cục bộ).
- GraphRAG: Coi dữ liệu là mạng lưới. A quen B, B ghét C => A có thể gặp rắc rối với C. (Tốt cho suy luận toàn cục).
2. Cách Microsoft triển khai GraphRAG
Microsoft Research đã giới thiệu quy trình 2 bước độc đáo giúp AI "hiểu" toàn bộ tập dữ liệu (Global Understanding):Bước 1: Indexing (Lập chỉ mục)
* Dùng LLM đọc qua toàn bộ tài liệu.
* Trích xuất Thực thể (Người, Nơi chốn, Tổ chức) và Mối quan hệ.
* Điểm đặc biệt: Gom nhóm các thực thể thành các "Cộng đồng" (Communities) theo thứ bậc (Hierarchical Community Detection).
* Dùng LLM tóm tắt ý nghĩa của từng cộng đồng đó.
Bước 2: Query (Truy vấn)
* Khi có câu hỏi, hệ thống không chỉ tìm từ khóa. Nó quét qua các bản tóm tắt cộng đồng để có cái nhìn tổng quan.
* Kết quả là AI có thể trả lời các câu hỏi dạng: "Chủ đề chính xuyên suốt tập dữ liệu này là gì?" - điều mà RAG truyền thống bó tay.
3. Demo: Kết hợp LangChain và Neo4j
Để triển khai đầy đủ pipeline của Microsoft khá phức tạp. Dưới đây là ví dụ cơ bản nhất về cách dùng LangChain kết hợp với Neo4j (Graph Database phổ biến nhất) để AI có thể "chat" với đồ thị.Cài đặt
Bạn cần cài Neo4j Desktop (hoặc dùng bản Cloud miễn phí) và các thư viện sau:
Bash:
pip install langchain langchain-community langchain-openai neo4j
Code Python (Graph QA Chain)
Python:
import os
from langchain_community.graphs import Neo4jGraph
from langchain.chains import GraphCypherQAChain
from langchain_openai import ChatOpenAI
# 1. Kết nối tới Neo4j
# Giả sử trong DB đã có dữ liệu về phim ảnh (Movie Graph)
graph = Neo4jGraph(
url="bolt://localhost:7687",
username="neo4j",
password="password"
)
# 2. Khởi tạo LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 3. Tạo Chain "Hỏi đáp với Graph"
# Chain này sẽ tự động biến câu hỏi tiếng Việt thành câu lệnh truy vấn Graph (Cypher Query)
chain = GraphCypherQAChain.from_llm(
llm,
graph=graph,
verbose=True,
allow_dangerous_requests=True
)
# 4. Hỏi thử những câu hỏi cần suy luận mối quan hệ
query = "Ai là diễn viên từng đóng chung với Tom Hanks trong phim 'Cloud Atlas' và cũng là đạo diễn của phim khác?"
result = chain.invoke(query)
print(result['result'])
Điều gì xảy ra bên dưới?
1. LLM nhận câu hỏi.
2. LLM dịch nó sang ngôn ngữ truy vấn Cypher:
Mã:
`MATCH (p:Person)-[:ACTED_IN]->(m:Movie {title: 'Cloud Atlas'})<-[:ACTED_IN]-(co_actor:Person) WHERE (co_actor)-[:DIRECTED]->() RETURN co_actor.name`
4. Khi nào nên dùng GraphRAG?
Không phải lúc nào GraphRAG cũng tốt hơn. Nó tốn kém hơn (token để trích xuất graph) và chậm hơn.| Tiêu chí | Vector RAG | GraphRAG |
|---|---|---|
| Loại câu hỏi | "Cái gì", "Ở đâu" (Fact lookup) | "Như thế nào", "Tại sao", "Tổng hợp" |
| Dữ liệu | Độc lập, rời rạc | Kết nối chằng chịt, phức tạp |
| Chi phí | Thấp | Cao (Cần LLM xử lý trước dữ liệu) |
Kết luận
Vector Database giống như việc bạn tìm kiếm từ khóa trong cuốn sách. Còn GraphRAG giống như việc bạn thuê một thám tử xâu chuỗi các manh mối trên bảng tin để phá án.Năm 2026, sự kết hợp giữa Vector + Graph (Hybrid RAG) sẽ là tiêu chuẩn mới cho các ứng dụng AI doanh nghiệp.