GraphRAG
GraphRAG xây dựng knowledge graph từ tài liệu, sau đó truy xuất thực thể, quan hệ và bản tóm tắt cộng đồng để trả lời câu hỏi nhiều bước và câu hỏi tổng quát.
GraphRAG (tạo sinh tăng cường truy xuất bằng đồ thị) là một dạng tạo sinh tăng cường truy xuất (RAG), truy xuất từ đồ thị tri thức thay cho hoặc song song với các đoạn văn bản tìm được bằng tìm kiếm vector. Trước tiên, một mô hình ngôn ngữ lớn (LLM) trích xuất các thực thể trong tập tài liệu, chẳng hạn người, công ty, bộ phận và địa điểm, cùng các mối quan hệ giữa chúng. Khi nhận câu hỏi, hệ thống truy xuất các thực thể có kết nối, đường quan hệ hoặc bản tóm tắt của toàn bộ cụm trong đồ thị rồi cung cấp cho LLM làm ngữ cảnh. Tên gọi này chủ yếu gắn liền với phương pháp GraphRAG của Microsoft Research để tóm tắt tập trung vào truy vấn, được công bố năm 2024 cùng một bản triển khai mã nguồn mở; tên gọi này cũng được dùng cho mọi hệ thống RAG truy xuất thông tin trên đồ thị.
Vì sao RAG vector cần đồ thị#
RAG tiêu chuẩn mã hóa các đoạn tài liệu thành embedding, lưu trữ chúng trong cơ sở dữ liệu vector và truy xuất một vài đoạn giống câu hỏi nhất. Cách này hiệu quả với các câu hỏi có thể được trả lời bằng một đoạn văn, nhưng gặp khó khăn với hai loại câu hỏi khác:
- Câu hỏi nhiều bước: Câu trả lời phụ thuộc vào các dữ kiện trải rộng trong nhiều tài liệu và chỉ được liên kết thông qua những thực thể chung, chẳng hạn nhà máy nào phụ thuộc vào một nhà cung cấp gần cảng bị bão đóng cửa. Không có đoạn văn đơn lẻ nào giống toàn bộ câu hỏi.
- Câu hỏi tổng quát: Các câu hỏi về toàn bộ kho dữ liệu, chẳng hạn "Các chủ đề chính trong 5,000 báo cáo sự cố này là gì?", cần thông tin từ mọi tài liệu, trong khi truy xuất vector chỉ trả về một vài đoạn có thứ hạng cao nhất.
Đồ thị lưu rõ ràng các liên kết giữa những dữ kiện để quá trình truy xuất có thể lần theo chúng; bản tóm tắt các cộng đồng trong đồ thị bao quát toàn bộ kho dữ liệu.
Cách GraphRAG hoạt động#
GraphRAG của Microsoft xây dựng chỉ mục qua bốn bước. Hệ thống chia tài liệu thành các đơn vị văn bản và yêu cầu LLM trích xuất thực thể, quan hệ và nhận định từ từng đơn vị; đây là một dạng nhận dạng thực thể có tên và trích xuất quan hệ do LLM điều khiển. Hệ thống hợp nhất mô tả của những thực thể xuất hiện trong nhiều đơn vị thành một nút cho mỗi thực thể. Tiếp đó, hệ thống chạy thuật toán phát hiện cộng đồng Leiden phân cấp để nhóm các thực thể có kết nối dày đặc thành những cộng đồng lồng nhau, rồi yêu cầu LLM viết báo cáo tóm tắt cho từng cộng đồng ở mỗi cấp.
Sau đó, truy vấn đi theo một trong hai hướng:
- Tìm kiếm cục bộ: Bắt đầu từ các thực thể được nêu trong câu hỏi rồi thu thập các nút lân cận, quan hệ, báo cáo cộng đồng và các đơn vị văn bản gốc có nhắc đến những thực thể đó.
- Tìm kiếm toàn cục: Xử lý các báo cáo cộng đồng theo kiểu map-reduce: mỗi báo cáo tạo ra một câu trả lời từng phần kèm điểm liên quan, rồi kết hợp các câu trả lời từng phần liên quan nhất thành phản hồi cuối cùng.
Trên các dataset có quy mô khoảng một triệu token, bài báo báo cáo rằng tìm kiếm toàn cục tạo ra câu trả lời toàn diện và đa dạng hơn đáng kể cho các câu hỏi về toàn bộ kho dữ liệu so với baseline RAG thông thường.
Trọng tâm của tìm kiếm cục bộ là duyệt đồ thị. Ví dụ Python này sử dụng NetworkX, lưu các bộ ba mà LLM có thể trích xuất từ nhiều tài liệu riêng biệt rồi lần theo các quan hệ bắt đầu từ thực thể trong câu hỏi:
import networkx as nx
# Entity-relationship triples that an LLM extracted from separate documents
triples = [
("Typhoon", "closed", "Kaohsiung port"),
("Kaohsiung port", "ships parts for", "Supplier A"),
("Supplier A", "makes", "bearing B-17"),
("bearing B-17", "is used at", "Ohio plant"),
("Texas plant", "uses", "motor M-4"),
]
graph = nx.DiGraph()
for head, relation, tail in triples:
graph.add_edge(head, tail, relation=relation)
# Question: "Which plants could the typhoon disrupt?"
# Local search: follow relationships outward from the entity named in the question
edges = nx.bfs_edges(graph, "Typhoon")
context = [f"{head} {graph[head][tail]['relation']} {tail}" for head, tail in edges]
print("\n".join(context))Kết quả in ra chuỗi bốn bước từ "Typhoon closed Kaohsiung port" đến "bearing B-17 is used at Ohio plant", một mối liên hệ không được nêu trong bất kỳ tài liệu nguồn đơn lẻ nào, đồng thời loại bỏ nhà máy Texas không liên quan. LLM nhận các dòng này làm ngữ cảnh bổ trợ thông tin và có thể trả lời rằng nhà máy Ohio đang gặp rủi ro.
GraphRAG và các phương pháp liên quan#
- Knowledge graph: Cấu trúc dữ liệu gồm các thực thể và mối quan hệ có kiểu. GraphRAG xây dựng hoặc tái sử dụng knowledge graph chuyên biệt để truy xuất ngữ cảnh cho LLM.
- Tìm kiếm kết hợp: Kết hợp truy xuất theo từ khóa và vector trên các đoạn văn bản. Nhiều hệ thống GraphRAG trong môi trường production chạy duyệt đồ thị song song với tìm kiếm kết hợp.
- RAG tác tử: Một agent quyết định cần truy xuất nội dung gì và vào thời điểm nào qua nhiều bước. Truy vấn đồ thị có thể là một trong các công cụ của agent.
- Mạng nơ-ron đồ thị (GNNs): Học từ cấu trúc đồ thị thông qua quá trình training để thực hiện các tác vụ như dự đoán liên kết. GraphRAG sử dụng đồ thị tại thời điểm truy xuất mà không cần training.
Ứng dụng thực tế#
- Khám phá thuốc: Đồ thị liên kết gene, protein, hợp chất và bệnh giúp nhà nghiên cứu đặt câu hỏi bao quát hàng nghìn bài báo, chẳng hạn thuốc đã được phê duyệt nào nhắm đến protein trong một con đường bệnh lý.
- Điều tra tài chính: Chuyên viên phân tích lần theo các chuỗi sở hữu qua công ty bình phong và các giám đốc chung, rồi yêu cầu LLM tóm tắt mạng lưới đứng sau một giao dịch đáng ngờ.
- Rủi ro chuỗi cung ứng: Liên kết nhà cung cấp, linh kiện, địa điểm và tuyến vận chuyển giúp trả lời những câu hỏi như sản phẩm nào phụ thuộc vào một nhà máy duy nhất.
- Tri thức doanh nghiệp: Các bộ sưu tập lớn gồm báo cáo, ticket và ghi chú cuộc họp có thể được tìm kiếm theo chủ đề, trong đó các bản tóm tắt cộng đồng trả lời câu hỏi về toàn bộ bộ sưu tập.
Đồ thị cũng có thể lưu trữ những gì camera nhìn thấy, tạo nền tảng cho RAG đa phương thức trên video. Phân giải thực thể—xác định hai lượt nhắc đến có cùng chỉ một đối tượng hay không—là bước mà theo dõi đối tượng thực hiện trên video: tính năng tracking của Ultralytics YOLO26 gán cho mỗi người hoặc phương tiện một ID cố định qua các frame, nhờ đó đồ thị video có thể lưu một node cho mỗi đối tượng được theo dõi, cùng các cạnh ghi lại vị trí và thời điểm đối tượng xuất hiện cạnh những đối tượng khác, thay vì một node cho mỗi frame.
Chi phí và các đánh đổi#
Lập chỉ mục là khoản chi phí chính, vì LLM phải đọc mọi đơn vị văn bản để trích xuất thực thể rồi viết mọi báo cáo cộng đồng; do đó, lập chỉ mục kho ngữ liệu lớn tốn kém hơn nhiều so với embedding. Lỗi trích xuất, chẳng hạn gộp nhầm hai người khác nhau trùng tên, sẽ lan truyền vào mọi câu trả lời liên quan; khi tài liệu thay đổi, cần trích xuất lại và tóm tắt lại các phần đồ thị bị ảnh hưởng. LazyGraphRAG của Microsoft giải quyết chi phí này bằng cách xây dựng đồ thị khái niệm từ quá trình trích xuất cụm danh từ và thống kê đồ thị, đồng thời trì hoãn toàn bộ việc sử dụng LLM đến thời điểm truy vấn; nhờ đó, chi phí lập chỉ mục tương đương với vector RAG và chỉ bằng 0,1% so với GraphRAG đầy đủ.










