0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khám Phá GraphRAG: Nâng Cấp Đột Phá Trong Kỹ Thuật RAG Truyền Thống

Đăng vào 3 tuần trước

• 4 phút đọc

Mở đầu

Chắc hẳn những ai làm trong lĩnh vực trí tuệ nhân tạo (AI) đều biết đến khái niệm RAG (Retrieval Augmented Generation). Trong bối cảnh công nghệ GPT của OpenAI được phổ biến rộng rãi, nhiều công ty lớn như Microsoft cũng đã đầu tư vào những dịch vụ trí tuệ nhân tạo như Azure OpenAI. Các dự án chatbot dựa trên hệ thống RAG đang ngày càng trở nên phổ biến, điều này cũng dẫn đến việc gia tăng các diễn đàn, bài viết, nghiên cứu và hội thảo xoay quanh chủ đề RAG do tính ứng dụng cao của nó.

Bản thân tôi đã thực hiện một vài dự án liên quan đến RAG và nhận thấy rằng thông tin về Azure AI Search còn khá thiếu. Mặc dù đã có nhiều tài liệu về RAG, song cơ hội được tìm hiểu và nghiên cứu GraphRAG đã cho tôi động lực để viết bài này. Tôi muốn chia sẻ một cái nhìn tổng quan về phương pháp này, và sẽ đi sâu vào chi tiết trong các bài viết sau.

GraphRAG là gì?

Trước hết, hãy nhắc lại về RAG - kỹ thuật này giúp cải thiện đầu ra của các mô hình ngôn ngữ lớn (LLM) nhờ việc sử dụng thông tin từ các tài liệu cụ thể, nhằm tạo ra câu trả lời tốt hơn trong các lĩnh vực cụ thể. Kỹ thuật này đã trở thành một phần quan trọng của hầu hết các công cụ dựa trên LLM, trong đó phần lớn đều sử dụng vector tương đồng (similarity vector) làm phương pháp tìm kiếm, được gọi là Baseline RAG.

Các kỹ thuật RAG đã chứng minh hiệu quả trong việc giúp các LLM lý luận dựa trên những tập dữ liệu riêng tư – các dữ liệu mà LLM chưa từng được đào tạo. Tuy nhiên, Baseline RAG cũng tồn tại một số hạn chế. Một số vấn đề thường gặp khi áp dụng Baseline RAG bao gồm:

  • Khó khăn trong việc nối kết các điểm thông tin, đặc biệt trong những câu hỏi cần tổng hợp thông tin từ nhiều mảnh khác nhau.
  • Hiệu suất kém khi yêu cầu tổng hợp thông tin trên các bộ dữ liệu lớn.

Để giải quyết những vấn đề này, Microsoft Research đã phát triển GraphRAG – một phương pháp mới sử dụng LLM để tạo ra đồ thị tri thức từ một tập hợp đầu vào. Thay vì lưu trữ các đoạn văn bản và embedding của chúng để tìm kiếm, GraphRAG thể hiện và lưu trữ dưới dạng đồ thị. Nhờ vào các kỹ thuật nâng cao như gom nhóm và tìm kiếm, GraphRAG có thể đưa ra câu trả lời tối ưu hơn và khắc phục những nhược điểm của Baseline RAG. Các nghiên cứu đã chỉ ra rằng GraphRAG mang lại cải thiện đáng kể so với các phương pháp trước đây trong xử lý tập dữ liệu riêng tư.

Quy Trình GraphRAG

Quy trình của GraphRAG bao gồm hai giai đoạn chính: IndexQuery.

Giai đoạn Index

Trích xuất thực thể và mối quan hệ

Trong giai đoạn này, dữ liệu được trích xuất và lưu trữ dưới dạng đồ thị. Các công việc bao gồm:

  1. Chia nhỏ dữ liệu thành các đơn vị văn bản (text units) có kích thước cố định.
  2. Sử dụng LLM để trích xuất các thực thể và mối quan hệ.
  3. Các thực thể trở thành các nút (nodes) trong đồ thị, còn các mối quan hệ là các cạnh (edges) nối các nút lại với nhau.

Phát hiện cộng đồng

Một đặc điểm quan trọng của GraphRAG là quy trình phát hiện cộng đồng (Community Detection) thông qua thuật toán Leiden. Quy trình này giúp nhóm các nút thành các cộng đồng dựa trên các mối quan hệ. Quá trình này diễn ra qua nhiều vòng lặp, trong đó mỗi nút được đánh giá để chuyển từ cộng đồng này sang cộng đồng khác nhằm tối ưu hóa hàm Modularilty của đồ thị. Cuối cùng, các cộng đồng này tạo thành một Knowledge graph có thể sử dụng cho việc truy vấn thông tin.

Giai đoạn Query

Sau khi đã hoàn tất giai đoạn Index, ta sẽ bước vào giai đoạn Query với hai phương pháp tìm kiếm chính: Global SearchLocal Search.

Phương pháp này thích hợp với những câu hỏi mang tính tổng quan. Bằng cách sử dụng các tóm tắt của cộng đồng, GraphRAG có thể tạo ra câu trả lời cho từng hạng mục và sử dụng cơ chế Map-Reduce để tổng hợp chúng thành câu trả lời tổng thể.

Phương pháp này được áp dụng cho các câu hỏi sâu và yêu cầu khai thác thông tin chi tiết hơn từ các thực thể và mối quan hệ trong đồ thị. Nó hoạt động bằng cách xác định các thực thể liên quan và trích xuất thông tin từ các tài liệu gốc có liên quan.

Kết luận

Bài viết này chỉ dừng lại ở việc đưa ra cái nhìn tổng quan về GraphRAG mà không đi sâu vào từng phần. Tôi tin rằng đây là một hướng tiếp cận thú vị cho các bài toán liên quan đến RAG. Tôi đã thử nghiệm GraphRAG và rất ấn tượng với độ chính xác cũng như tính chi tiết của các câu trả lời, mặc dù vẫn còn một số hạn chế về thời gian và chi phí. Trong tương lai, tôi sẽ tiếp tục nghiên cứu và giới thiệu thêm nhiều bài viết khác về GraphRAG. Cảm ơn các bạn đã đọc!

Tài liệu tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào