Skip to content

letuandatt/chatbot_cusc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUSC CHATBOT

Python FastAPI Vue.js LangChain Model License: MIT

Một chatbot RAG (Retrieval-Augmented Generation) full-stack, production-ready được thiết kế để truy vấn tài liệu nội bộ tại CUSC. Hệ thống được xây dựng với kiến trúc FastAPI (Backend), Vue.js (Frontend), và lõi RAG mạnh mẽ (LangChain, Gemini, ChromaDB).

Trao quyền cho đội ngũ của bạn với câu trả lời tức thì, chính xác từ tài liệu nội bộ—không cần tìm kiếm thủ công.

🏛️ Kiến trúc Hệ thống

Dự án này là một ứng dụng full-stack, đa thành phần, bao gồm:

  1. Frontend (Vue.js): Giao diện người dùng (UI) hiện đại, phản ứng nhanh, quản lý trạng thái bằng Pinia.
  2. Backend (FastAPI): API Gateway mạnh mẽ, xử lý xác thực (JWT), streaming câu trả lời, và quản lý các tác vụ nền.
  3. Chatbot Core (LangChain): Lõi RAG "thông minh", sử dụng router để quyết định nguồn tri thức (database chung hoặc file người dùng tải lên).
  4. Database (MongoDB): Lưu trữ thông tin người dùng, lịch sử trò chuyện (persistent), và metadata của file.
  5. Vector Store (ChromaDB Server): Chạy như một dịch vụ độc lập (chế độ client-server) để lưu trữ và truy vấn vector.
flowchart LR
    A[Frontend - Vue<br>Port 5173] --> B[Backend - FastAPI<br>Port 8000]
    B --> C[(MongoDB<br>Users, History)]
    B --> D[(ChromaDB Server<br>Port 8001)]
    B --> E[(Background Tasks<br>PDF Processing)]

Loading

✨ Tính năng Nổi bật

  • Kiến trúc Full-Stack: Giao diện Vue.js mượt mà kết nối với backend FastAPI hiệu suất cao.
  • RAG Động & Định tuyến: Tự động quyết định sử dụng kho tri thức chung (global) hay kho tri thức "động" (từ file PDF người dùng vừa tải lên).
  • Xử lý PDF Tối ưu (Nhanh): Sử dụng PyMuPDF để xử lý PDF local cực nhanh, thay thế cho các API bên ngoài, chạy trong BackgroundTasks để không block server.
  • Hỗ trợ Đa phương thức: Xử lý câu hỏi văn bản hoặc kết hợp văn bản + hình ảnh (text + images) thông qua Gemini Vision.
  • Truy vấn Chính xác (Reranking): Lấy K-chunk lớn và sau đó dùng Cohere Rerank để lọc lại top N, tăng độ chính xác của ngữ cảnh.
  • Kiến trúc Production:
    • Backend: Tái cấu trúc (refactored) thành các router độc lập.
    • Frontend: Sử dụng Polling để kiểm tra trạng thái xử lý PDF mà không cần tải lại trang.
    • VectorDB: Chạy Chroma ở chế độ client-server để tránh lỗi "database is locked".

📂 Cấu trúc Dự án

Dự án này được chia thành các mô-đun chính. Mỗi thư mục bên dưới chứa file README.md riêng với hướng dẫn chi tiết:

graph TD
    A[/Project Root/] --> B[backend/]
    A --> C[chatbot/]
    A --> D[frontend/]
    A --> E[.env]

    B --> B1[README.md<br>Backend Guide]
    C --> C1[data/]
    C --> C2[README.md<br>Build Knowledge Base]
    D --> D1[README.md<br>Frontend Guide]


Loading

🚀 Hướng dẫn Khởi động Nhanh (Full-Stack)

Để chạy toàn bộ hệ thống (Dev mode):

  1. Cài đặt Điều kiện tiên quyết:

    • Python 3.12+
    • Node.js 18+ (cho Frontend)
    • MongoDB Server (phải đang chạy)
  2. Khởi động ChromaDB (Server Vector):

    • Mở Terminal 1 và chạy server ChromaDB (nó sẽ chiếm terminal này).
    • Xem chi tiết tại: chatbot/README.md.
    chroma run --host 127.0.0.1 --port 8001 --path "./chatbot/vectorstores/chroma_db_2"
  3. Khởi động Backend (Server API):

    • Mở Terminal 2, cài đặt dependencies và chạy uvicorn.
    • Xem chi tiết tại: backend/README.md.
    # (Đã kích hoạt .venv)
    pip install -r requirements.txt
    uvicorn backend.main:app --reload --port 8000
  4. Khởi động Frontend (UI):

    • Mở Terminal 3, cài đặt dependencies và chạy vite.
    • Xem chi tiết tại: frontend/README.md.
    # (cd vào thư mục frontend)
    npm install
    npm run dev
  5. Xây dựng Kho tri thức (Lần đầu):

    • Nếu là lần đầu chạy, mở Terminal 4 để nạp các file PDF vào ChromaDB.
    • Xem chi tiết tại: chatbot/README.md.
    # (Đã kích hoạt .venv)
    python chatbot/agents.py

Bây giờ, bạn có thể truy cập http://localhost:5173 (cổng Vite) để sử dụng ứng dụng.

About

A chatbot for asking about internal information

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published