DynamicRAG
DynamicRAG là một ứng dụng web dựa trên React triển khai hệ thống Retrieval-Augmented Generation (RAG) động. Nó cho phép người dùng nhập văn bản, xử lý thành nhúng và thực hiện các tác vụ trả lời câu hỏi bằng cách kết hợp tìm kiếm vectơ và Mô hình ngôn ngữ lớn.
Thông tin
Mã nguồn đầy đủ và hướng dẫn chi tiết để thiết lập và chạy ví dụ này có thể được tìm thấy trong kho lưu trữ Gaia Cookbook .
Ảnh chụp màn hình
Nhập văn bản dựa trên Dynamic RAG
Github Repo đến Dynamic RAG
Đặc trưng
- Xử lý và phân đoạn văn bản theo thời gian thực
- Tạo cơ sở dữ liệu vector động bằng Qdrant
- Xử lý hàng loạt các đầu vào văn bản lớn
- Tích hợp với nút Gaia cục bộ
- Phân tích kho lưu trữ GitHub bằng GitIngest
- Theo dõi tiến độ và xử lý lỗi
- Giao diện người dùng sạch sẽ, phản hồi nhanh bằng cách sử dụng Tailwind CSS và các thành phần shadcn/ui
Điều kiện tiên quyết
- Node.js (v16 trở lên)
- Python (để cài đặt GitIngest)
- Một phiên bản Qdrant đang chạy (cục bộ hoặc từ xa)
- Máy chủ LLM cục bộ thông qua Gaia chạy trên cổng 8080 (Hướng dẫn: https://docs.gaianet.ai/node-guide/quick-start )
- Các
nhúng nomic
mô hình nhúng (tự động tải xuống trongGaianet
thư mục khi Gaia CLI được cài đặt) - Các
lạc đà không bướu 3.2
mô hình ngôn ngữ (tự động tải xuống trongGaianet
thư mục khi Gaia CLI được cài đặt. Bạn có thể thay thế mô hình tùy thuộc vào trường hợp sử dụng của bạn)
Cài đặt
- Sao chép kho lưu trữ:
git clone https://github.com/harishkotra/dynamic-rag-gaia
cd dynamic-rag
- Cài đặt các phụ thuộc:
Cài đặt npm
- Cài đặt GitIngest:
pip cài đặt gitingest
- Đảm bảo máy chủ Qdrant của bạn đang chạy và có thể truy cập tại http://localhost:6333
- Đảm bảo nút Gaia của bạn đang chạy và có thể truy cập tại http://localhost:8080 (Hướng dẫn: https://docs.gaianet.ai/node-guide/quick-start )
- Khởi động máy chủ phát triển:
npm chạy dev
Cách sử dụng
- Chọn chế độ nhập liệu:
- Nhập văn bản: Dán văn bản cơ sở kiến thức của bạn vào vùng văn bản đầu vào
- Kho lưu trữ GitHub: Nhập URL kho lưu trữ GitHub để phân tích nội dung của nó
- Đặt câu hỏi: Nhập câu hỏi của bạn vào trường câu hỏi.
- Tiến trình: Nhấp vào "Gửi" để xử lý truy vấn của bạn. Hệ thống sẽ:
- Đối với nhập văn bản: Chia văn bản đầu vào thành các phần có thể quản lý được
- Đối với kho lưu trữ GitHub: Lấy và xử lý nội dung kho lưu trữ bằng GitIngest
- Tạo nhúng cho từng khối
- Lưu trữ nhúng trong bộ sưu tập Qdrant tạm thời
- Tìm ngữ cảnh có liên quan bằng cách sử dụng tìm kiếm tương tự vector
- Tạo câu trả lời bằng cách sử dụng Gaia Node cục bộ
- Xem kết quả: Hệ thống sẽ hiển thị phản hồi được tạo dựa trên bối cảnh có liên quan tìm thấy.
Chi tiết kỹ thuật
Xử lý văn bản
- Kích thước khối tối đa: 2000 ký tự
- Kích thước xử lý hàng loạt: 3 khối cùng một lúc
- Các đoạn được tạo ra dựa trên ranh giới văn bản tự nhiên (đoạn văn và câu)
Cơ sở dữ liệu Vector
- Sử dụng Qdrant để lưu trữ vector và tìm kiếm sự tương đồng
- Tạo bộ sưu tập tạm thời cho mỗi phiên truy vấn
- Tự động dọn dẹp bộ sưu tập sau khi sử dụng
- Sử dụng các vector 768 chiều để nhúng
Tích hợp API
- Tương thích với các điểm cuối API theo phong cách OpenAI
- Hỗ trợ cả nhúng và điểm cuối hoàn thành trò chuyện
- Sử dụng
nhúng nomic
mô hình cho nhúng - Sử dụng
lạc đà không bướu
mô hình tạo văn bản - Tích hợp với GitIngest để phân tích kho lưu trữ
- Tuyến API NextJS để tích hợp công cụ dòng lệnh
Thành phần
DynamicRAG.js
: Thành phần chính thực hiện hệ thống RAGứng dụng/api/gitingest/route.js
: Tuyến API để xử lý kho lưu trữ GitHub- Xử lý và xác thực đầu vào
- Theo dõi tiến trình và hiển thị lỗi
- Quản lý cơ sở dữ liệu vector
- Tích hợp LLM
Xử lý lỗi
Hệ thống bao gồm xử lý lỗi toàn diện cho:
- Lỗi xử lý văn bản
- Lỗi tìm nạp và phân tích kho lưu trữ GitHub
- Nhúng lỗi tạo
- Hoạt động cơ sở dữ liệu vector
- Lỗi truy vấn LLM
- Các vấn đề về mạng
Phụ thuộc
- Phản ứng
- CSS của Tailwind
- thành phần shadcn/ui
- Lodash cho các hàm tiện ích
- Nhiều thành phần UI (@/components/ui/*)
Thông tin
Mã nguồn đầy đủ và hướng dẫn chi tiết để thiết lập và chạy ví dụ này có thể được tìm thấy trong kho lưu trữ Gaia Cookbook .