🎯 Bối cảnh dự án
Đây là dự án của học phần Đồ Án Chuyên Ngành học kỳ 1 năm 2025. Bài toán đặt ra: Sinh viên và giảng viên thường phải đọc hàng trăm trang tài liệu để tìm thông tin cần thiết. Làm sao để AI có thể "đọc hiểu" tài liệu và trả lời câu hỏi chính xác?
🏗️ Kiến trúc hệ thống
Tech Stack
- Backend: Python FastAPI
- AI Framework: LangChain
- LLM: Google Gemini Pro (miễn phí cho sinh viên)
- Vector Database: Pinecone (Free tier)
- Frontend: React.js + Tailwind CSS
Luồng hoạt động
- User upload PDF/DOCX
- Backend chia nhỏ document thành chunks (512 tokens, overlap 50)
- Sử dụng Sentence Transformers để tạo embeddings
- Lưu embeddings vào Pinecone
- User đặt câu hỏi → Vector search tìm chunks liên quan
- Gemini Pro generate câu trả lời dựa trên context
⚙️ Tính năng đã thực hiện
1. Document Processing
- Upload PDF, DOCX, TXT (max 10MB)
- Chunking thông minh với RecursiveCharacterTextSplitter
- Extract metadata (tên file, số trang, ngày tạo)
2. RAG Pipeline
- Vector similarity search với k=5 chunks most relevant
- Context window 2000 tokens
- Streaming response (hiển thị từng token)
3. Chat Interface
- History conversation (lưu trong session)
- Syntax highlighting cho code blocks
- Copy answer to clipboard
📊 Kết quả đạt được
Về chức năng:
- ✅ Xử lý thành công 95% documents được test (50 files)
- ✅ Trả lời chính xác với câu hỏi liên quan trực tiếp đến nội dung
- ✅ Response time trung bình: 3-5 giây
Về mặt học thuật:
- Đạt điểm 9/10 cho học phần Đồ Án Chuyên Ngành
- Được thầy đánh giá cao về khả năng apply lý thuyết vào thực tế
- Present trước lớp và nhận feedback tích cực
💡 Những gì đã học được
1. Technical Skills
- Hiểu rõ cách LLM hoạt động và limitations
- Học cách làm việc với Vector Database
- Tối ưu cost khi call API (cache, batch processing)
2. Problem Solving
- Vấn đề: Chunking không tốt làm mất ngữ cảnh
- Giải pháp: Thêm overlap và metadata cho mỗi chunk
- Vấn đề: Gemini đôi khi "hallucinate" (bịa đặt thông tin)
- Giải pháp: Thêm instruction "chỉ trả lời dựa trên context, nếu không biết thì nói không biết"
3. Soft Skills
- Làm việc nhóm 3 người, phân chia task rõ ràng
- Present demo trước 40+ bạn và 2 giảng viên
- Viết document kỹ thuật đầy đủ
