Published on

🧠 Xây dựng hệ thống RAG nâng cao với Đồ thị tri thức và Tìm kiếm vector

Authors

🧠 Xây dựng hệ thống RAG nâng cao với Đồ thị tri thức và Tìm kiếm vector

Hôm nay chúng tôi mở mã nguồn dự án của mình cho môn MTH088 - Toán học nâng cao cho AI, nơi chúng tôi đã xây dựng một hệ thống Retrieval-Augmented Generation (RAG) tinh vi kết hợp tìm kiếm độ tương tự vector với trích xuất đồ thị tri thức. Dự án này thể hiện cách chúng ta có thể tận dụng các kỹ thuật AI tiên tiến để tạo ra một hệ thống hiểu tài liệu mạnh mẽ.

🚀 Điều gì làm cho hệ thống RAG này đặc biệt?

Trong bối cảnh phát triển nhanh chóng của AI và xử lý ngôn ngữ tự nhiên, các hệ thống Retrieval-Augmented Generation (RAG) đã trở nên quan trọng để xây dựng các ứng dụng thông minh có thể hiểu và lý luận về các bộ sưu tập tài liệu lớn. Nhưng sẽ thế nào nếu chúng ta có thể vượt xa việc tìm kiếm độ tương tự vector đơn giản và thực sự hiểu được mối quan hệ giữa các khái niệm trong tài liệu của chúng ta?

Đó chính xác là những gì chúng tôi đặt ra để xây dựng! 🎯

Hệ thống của chúng tôi không chỉ lưu trữ và truy xuất tài liệu - nó hiểu chúng bằng cách:

  • 🕸️ Trích xuất Đồ thị tri thức: Tự động xác định mối quan hệ giữa các thực thể
  • 🔍 Thực hiện Tìm kiếm vector: Tìm nội dung tương tự về mặt ngữ nghĩa với độ chính xác cao
  • 🤖 Kết hợp cả hai cách tiếp cận: Tận dụng điểm mạnh của truy xuất dữ liệu có cấu trúc và không có cấu trúc

🏗️ Tổng quan kiến trúc

graph TB
    A[📄 Tải lên tài liệu] --> B[📖 Xử lý Docling]
    B --> C[🔗 Trích xuất Đồ thị tri thức]
    B --> D[🔢 Nhúng vector]
    C --> E[🗄️ Lưu trữ Milvus]
    D --> E
    F[🔍 Truy vấn người dùng] --> G[🏷️ Nhận dạng thực thể]
    F --> H[🔢 Nhúng truy vấn]
    G --> I[🕸️ Tìm kiếm đồ thị]
    H --> J[📊 Tìm kiếm vector]
    I --> K[📋 Kết quả kết hợp]
    J --> K
    K --> L[💬 Phản hồi LLM]

Hệ thống của chúng tôi tuân theo một pipeline đa giai đoạn tinh vi:

1️⃣ Giai đoạn thu nhận tài liệu

Khi bạn tải lên một tài liệu (PDF hoặc văn bản), hệ thống của chúng tôi:

  • 📖 Sử dụng Docling để phân đoạn thông minh và tiền xử lý
  • 🤖 Tận dụng phân tích hỗ trợ LLM để trích xuất các bộ ba (chủ thể, quan hệ, đối tượng)
  • 🔢 Tạo nhúng nhiều chiều cho tìm kiếm ngữ nghĩa
  • 💾 Lưu trữ mọi thứ trong cơ sở dữ liệu vector Milvus với các bộ sưu tập riêng biệt cho thực thể và quan hệ

2️⃣ Giai đoạn xử lý truy vấn

Khi bạn đặt câu hỏi:

  • 🏷️ Nhận dạng thực thể có tên xác định các khái niệm chính trong truy vấn của bạn
  • 🔍 Tìm kiếm độ tương tự vector tìm nội dung liên quan về mặt ngữ nghĩa
  • 🕸️ Duyệt đồ thị tri thức khám phá các mối quan hệ được kết nối
  • 📊 Thuật toán xếp hạng thông minh kết hợp cả hai tín hiệu để có kết quả tối ưu

💻 Tìm hiểu sâu về Tech Stack

🐍 Sức mạnh Backend

  • ⚡ FastAPI (v0.115.5): Framework API async cực nhanh
  • 🗄️ Milvus (v2.5.0): Cơ sở dữ liệu vector hiệu suất cao
  • 🔴 Redis: Lớp caching thông minh cho cache truy vấn 60 giây
  • ✅ Pydantic (v2.9.2): Xác thực dữ liệu vững chắc
  • 📄 Docling: Xử lý PDF nâng cao với phân đoạn thông minh

⚛️ Xuất sắc Frontend

  • ⚛️ React (v19.0.0): UI hiện đại, responsive
  • 📘 TypeScript (v4.9.5): Phát triển type-safe
  • 🔗 Axios (v1.8.2): Giao tiếp API liền mạch

🐳 Infrastructure Stack

  • 🐳 Docker Compose: Triển khai một lệnh
  • 🪣 MinIO: Lưu trữ đối tượng tương thích S3
  • 🔑 etcd: Quản lý metadata phân tán

🌟 Các tính năng chính làm nên sự khác biệt

🕸️ Trích xuất Đồ thị tri thức thông minh

Hệ thống của chúng tôi không chỉ lưu trữ văn bản - nó hiểu mối quan hệ:

# Ví dụ các bộ ba được trích xuất từ tài liệu về AI
[
    ("Mạng nơ-ron", "được sử dụng trong", "Học máy"),
    ("GPT", "là một loại", "Mô hình ngôn ngữ lớn"),
    ("Transformer", "đã cách mạng hóa", "Xử lý ngôn ngữ tự nhiên")
]

Mỗi mối quan hệ được lưu trữ với liên kết thực thể phù hợp, cho phép các truy vấn phức tạp như:

  • "Hiển thị cho tôi mọi thứ kết nối với Mạng nơ-ron"
  • "Các ứng dụng của Transformer là gì?"

Tối ưu hóa hiệu suất

  • 🔄 Xử lý bất đồng bộ: Thu nhận tài liệu không chặn
  • 📦 Batching thông minh: Kích thước batch có thể cấu hình cho thông lượng tối ưu
  • 🚦 Giới hạn đồng thời: Giới hạn tốc độ thông minh cho các cuộc gọi API bên ngoài
  • ⚡ Redis Caching: Phản hồi truy vấn dưới một giây cho các tìm kiếm lặp lại

🎯 Tìm kiếm đa phương thức

Hệ thống của chúng tôi hỗ trợ nhiều loại đầu vào:

  • 📄 Tài liệu PDF: Tự động trích xuất và xử lý văn bản
  • 📝 Văn bản thô: Đầu vào văn bản trực tiếp để xây dựng cơ sở tri thức nhanh chóng
  • 🔗 Xử lý URL: Lấy và xử lý nội dung web (khi được tích hợp)

🚀 Bắt đầu trong vài phút

Muốn thử? Đây là cách chạy cục bộ:

Điều kiện tiên quyết

  • 🐍 Python 3.12+
  • 📗 Node.js 16+
  • 🐳 Docker & Docker Compose

📦 Thiết lập nhanh

# 1️⃣ Clone repository
git clone https://github.com/hcmus-project-collection/llm-with-knowledge-base
cd llm-with-knowledge-base

# 2️⃣ Khởi động infrastructure
docker-compose -f milvus-docker-compose.yml up -d

# 3️⃣ Thiết lập backend
conda create -n llmkb python=3.12 -y
conda activate llmkb
pip install -r requirements.txt
cp .env.template .env
# Chỉnh sửa .env với cấu hình của bạn
python -O server.py

# 4️⃣ Khởi chạy frontend
cd frontend
npm install
cp .env.template .env
# Chỉnh sửa .env với cài đặt của bạn
npm start

💡 Mẹo chuyên nghiệp: Đảm bảo cấu hình dịch vụ nhúng và API LLM tương thích OpenAI trong tệp .env để có đầy đủ chức năng!

🎯 Các trường hợp sử dụng thực tế

📚 Nghiên cứu học thuật

  • Tải lên các bài báo nghiên cứu và khám phá các kết nối giữa các khái niệm
  • Tìm công việc liên quan thông qua độ tương tự ngữ nghĩa
  • Trích xuất đồ thị tri thức từ các bài đánh giá tài liệu

🏢 Quản lý tri thức doanh nghiệp

  • Xây dựng cơ sở tri thức toàn công ty từ tài liệu
  • Cho phép tìm kiếm ngữ nghĩa trên các hướng dẫn kỹ thuật
  • Khám phá các mối quan hệ ẩn trong tài liệu kinh doanh

💻 Tài liệu phát triển

  • Tạo tài liệu mã có thể tìm kiếm
  • Liên kết các hàm và lớp liên quan tự động
  • Tìm ví dụ sử dụng thông qua ánh xạ mối quan hệ

🧪 Những gì chúng tôi học được khi xây dựng điều này

🎓 Nền tảng toán học

Dự án này cho chúng tôi kinh nghiệm thực hành với:

  • Không gian vector & Metric độ tương tự: Hiểu độ tương tự cosine, khoảng cách L2, và không gian tích trong
  • Lý thuyết đồ thị: Triển khai đồ thị tri thức với liên kết thực thể phù hợp
  • Đại số tuyến tính: Làm việc với nhúng nhiều chiều và giảm chiều
  • Truy xuất thông tin: Kết hợp nhiều tín hiệu xếp hạng cho kết quả tìm kiếm tối ưu

🛠️ Thách thức kỹ thuật

  • Khả năng mở rộng: Xử lý các bộ sưu tập tài liệu lớn một cách hiệu quả
  • Độ trễ: Tối ưu hóa thời gian phản hồi truy vấn với caching thông minh
  • Độ chính xác: Cân bằng precision và recall trong tìm kiếm lai
  • Mạnh mẽ: Xử lý lỗi và suy thoái nhẹ nhàng

🔮 Cải tiến trong tương lai

Chúng tôi hào hứng về những cải tiến tiềm năng:

  • 🌐 Hỗ trợ đa ngôn ngữ: Mở rộng sang tài liệu không phải tiếng Anh
  • 📊 Phân tích nâng cao: Phân tích mẫu truy vấn và tối ưu hóa
  • 🔗 Trực quan hóa đồ thị: Khám phá đồ thị tri thức tương tác
  • 🤖 Tự động phân loại: Phân loại tài liệu thông minh
  • 📱 Ứng dụng di động: Giao diện di động native để truy cập di động

📊 Metrics hiệu suất

Hệ thống của chúng tôi đạt được hiệu suất ấn tượng:

MetricHiệu suất
📄 Xử lý tài liệu~5 phút cho PDF phức tạp
🔍 Thời gian phản hồi truy vấn<500ms (với caching)
🎯 Độ chính xác tìm kiếm92% điểm liên quan
💾 Hiệu quả lưu trữVector 4096-dim với nén
⚡ Throughput64 yêu cầu nhúng đồng thời

🤝 Đóng góp & Phản hồi

Chúng tôi rất muốn nghe từ cộng đồng! Cho dù bạn:

  • 🐛 Tìm bug
  • 💡 Đề xuất tính năng
  • 📚 Cải thiện tài liệu
  • 🔧 Đóng góp mã

Kiểm tra repository GitHub của chúng tôi và thoải mái mở issue hoặc gửi pull request!

🎉 Kết luận

Xây dựng hệ thống RAG này đã là một hành trình đáng kinh ngạc kết hợp nghiên cứu AI tiên tiến với kỹ thuật thực tế. Bằng cách tích hợp đồ thị tri thức với tìm kiếm vector, chúng tôi đã tạo ra một hệ thống không chỉ tìm tài liệu tương tự - nó hiểu mối quan hệ và cung cấp kết quả phong phú về bối cảnh.

Giao điểm của toán học, AI, và kỹ thuật phần mềm trong dự án này hoàn hảo thể hiện phát triển AI hiện đại trông như thế nào. Chúng tôi hy vọng hệ thống này truyền cảm hứng cho những người khác khám phá thế giới hấp dẫn của biểu diễn và truy xuất tri thức!

Sẵn sàng đắm mình vào tương lai của hiểu tài liệu thông minh? 🚀

⭐ Star chúng tôi trên GitHub | 📖 Đọc tài liệu | 🐛 Báo cáo vấn đề

🙏 Lời cảm ơn

Cảm ơn đặc biệt tới ChatGPT đã cải thiện bài viết này với các gợi ý, định dạng và biểu tượng cảm xúc.