# Hướng Dẫn Sử Dụng ChatbotRAG *Version 2.0 - Tháng 10, 2025* --- ## 1. Giới Thiệu ### ChatbotRAG là gì? ChatbotRAG là hệ thống chatbot thông minh sử dụng công nghệ RAG (Retrieval-Augmented Generation) để trả lời câu hỏi dựa trên cơ sở dữ liệu kiến thức của bạn. ### Tính năng chính - **Multimodal Search**: Tìm kiếm bằng text và hình ảnh - **Advanced RAG**: Query expansion, reranking, context compression - **PDF Support**: Upload PDF và chat về nội dung trong PDF - **Multiple Inputs**: Index nhiều texts và images cùng lúc (tối đa 10 mỗi loại) - **Chat History**: Lưu lịch sử chat để theo dõi --- ## 2. Bắt Đầu Nhanh ### Bước 1: Khởi động server ```bash cd ChatbotRAG python main.py ``` Server sẽ chạy tại: `http://localhost:8000` ### Bước 2: Truy cập API Documentation Mở trình duyệt và truy cập: - API Docs: `http://localhost:8000/docs` - ReDoc: `http://localhost:8000/redoc` ### Bước 3: Test với câu hỏi đơn giản ```bash curl -X POST "http://localhost:8000/chat" \ -H "Content-Type: application/json" \ -d '{"message": "Xin chào, bạn là ai?"}' ``` --- ## 3. Index Dữ Liệu ### 3.1. Index Text Đơn Giản ```bash curl -X POST "http://localhost:8000/index" \ -F "id=doc1" \ -F "texts=Đây là text nội dung 1" \ -F "texts=Đây là text nội dung 2" ``` ### 3.2. Index Với Images ```bash curl -X POST "http://localhost:8000/index" \ -F "id=event123" \ -F "texts=Sự kiện âm nhạc tại Hà Nội" \ -F "images=@poster1.jpg" \ -F "images=@poster2.jpg" ``` **Lưu ý**: Tối đa 10 texts và 10 images mỗi request. ### 3.3. Upload PDF Để upload tài liệu PDF vào hệ thống: ```bash curl -X POST "http://localhost:8000/upload-pdf" \ -F "file=@user_guide.pdf" \ -F "title=Hướng dẫn sử dụng" \ -F "category=user_guide" ``` Sau khi upload, chatbot có thể trả lời câu hỏi về nội dung trong PDF. --- ## 4. Tìm Kiếm Dữ Liệu ### 4.1. Search Bằng Text ```bash curl -X POST "http://localhost:8000/search/text" \ -F "text=sự kiện âm nhạc" \ -F "limit=5" ``` ### 4.2. Search Bằng Image ```bash curl -X POST "http://localhost:8000/search/image" \ -F "image=@query_image.jpg" \ -F "limit=5" ``` ### 4.3. Hybrid Search (Text + Image) ```bash curl -X POST "http://localhost:8000/search" \ -F "text=festival music" \ -F "image=@query.jpg" \ -F "text_weight=0.6" \ -F "image_weight=0.4" ``` --- ## 5. Chat Với Chatbot ### 5.1. Chat Cơ Bản (Không RAG) ```python import requests response = requests.post('http://localhost:8000/chat', json={ 'message': 'Xin chào!', 'use_rag': False, 'hf_token': 'your_huggingface_token' }) print(response.json()['response']) ``` ### 5.2. Chat Với RAG (Recommended) ```python response = requests.post('http://localhost:8000/chat', json={ 'message': 'Festival âm nhạc diễn ra khi nào?', 'use_rag': True, 'use_advanced_rag': True, 'top_k': 5, 'hf_token': 'your_token' }) result = response.json() print("Answer:", result['response']) print("Sources:", result['context_used']) ``` ### 5.3. Advanced RAG Options ```python response = requests.post('http://localhost:8000/chat', json={ 'message': 'Câu hỏi của bạn', 'use_rag': True, 'use_advanced_rag': True, # Advanced RAG settings 'use_query_expansion': True, # Mở rộng câu hỏi 'use_reranking': True, # Rerank kết quả 'use_compression': True, # Nén context 'score_threshold': 0.5, # Ngưỡng relevance (0-1) 'top_k': 5, # Số documents retrieve # LLM settings 'max_tokens': 512, 'temperature': 0.7, 'hf_token': 'your_token' }) ``` --- ## 6. Quản Lý Documents ### 6.1. Xem Danh Sách Documents ```bash # Xem stats collection curl http://localhost:8000/stats # Xem PDFs curl http://localhost:8000/documents/pdf ``` ### 6.2. Get Document By ID ```bash curl http://localhost:8000/document/doc123 ``` ### 6.3. Xóa Document ```bash curl -X DELETE http://localhost:8000/delete/doc123 ``` ### 6.4. Xóa PDF Document ```bash curl -X DELETE http://localhost:8000/documents/pdf/pdf_20251029_143022 ``` --- ## 7. Câu Hỏi Thường Gặp (FAQ) ### Q1: Làm sao để upload PDF vào hệ thống? **A:** Sử dụng endpoint `/upload-pdf`: ```bash curl -X POST "http://localhost:8000/upload-pdf" \ -F "file=@your_file.pdf" \ -F "title=Tên tài liệu" ``` ### Q2: Chatbot không tìm thấy thông tin phù hợp? **A:** Thử các cách sau: 1. Giảm `score_threshold` xuống (0.3 - 0.5) 2. Tăng `top_k` lên (5-10) 3. Sử dụng `use_advanced_rag=True` 4. Rephrase câu hỏi rõ ràng hơn ### Q3: Làm sao để cải thiện độ chính xác của chatbot? **A:** - Bật Advanced RAG: `use_advanced_rag=True` - Bật tất cả RAG features: `use_reranking=True`, `use_compression=True` - Index nhiều documents với nội dung chi tiết - Sử dụng metadata phù hợp khi index ### Q4: Token limit của LLM là bao nhiêu? **A:** Mặc định `max_tokens=512`. Bạn có thể tăng lên trong request: ```python { 'message': 'Your question', 'max_tokens': 1024, # Tăng lên 'hf_token': 'your_token' } ``` ### Q5: Có thể upload bao nhiêu texts/images cùng lúc? **A:** Tối đa **10 texts** và **10 images** mỗi request tại endpoint `/index`. ### Q6: Chatbot có support tiếng Việt không? **A:** Có! Hệ thống sử dụng Jina CLIP v2 hỗ trợ đa ngôn ngữ, bao gồm tiếng Việt. ### Q7: Làm sao để xem lịch sử chat? **A:** ```bash curl "http://localhost:8000/history?limit=10&skip=0" ``` ### Q8: PDF của tôi có nhiều hình ảnh, có vấn đề gì không? **A:** Hệ thống hiện chỉ extract text từ PDF. Hình ảnh trong PDF chưa được xử lý. Nếu cần xử lý hình ảnh trong PDF, có thể integrate RAG-Anything sau. --- ## 8. API Reference ### Endpoints Chính | Endpoint | Method | Mô tả | |----------|--------|-------| | `/` | GET | Health check & API docs | | `/index` | POST | Index texts + images (tối đa 10 mỗi loại) | | `/search` | POST | Hybrid search (text + image) | | `/search/text` | POST | Search chỉ bằng text | | `/search/image` | POST | Search chỉ bằng image | | `/chat` | POST | Chat với RAG | | `/documents` | POST | Add text document | | `/upload-pdf` | POST | Upload và index PDF | | `/documents/pdf` | GET | List PDFs | | `/documents/pdf/{id}` | DELETE | Delete PDF | | `/history` | GET | Get chat history | | `/stats` | GET | Collection statistics | ### Request Examples **Index with multiple texts:** ```json POST /index { "id": "doc123", "texts": ["Text 1", "Text 2", "Text 3"] } ``` **Chat with Advanced RAG:** ```json POST /chat { "message": "Your question", "use_rag": true, "use_advanced_rag": true, "use_reranking": true, "top_k": 5, "score_threshold": 0.5, "hf_token": "hf_xxxxx" } ``` --- ## 9. Best Practices ### Index Dữ Liệu ✓ Chia nhỏ nội dung thành các chunks có nghĩa ✓ Thêm metadata đầy đủ (title, category, source) ✓ Sử dụng texts array cho multiple paragraphs ✗ Tránh index text quá dài trong 1 chunk ### Chat ✓ Bật Advanced RAG cho câu hỏi phức tạp ✓ Điều chỉnh `top_k` và `score_threshold` phù hợp ✓ Sử dụng `temperature` thấp (0.3-0.5) cho câu trả lời factual ✗ Tránh đặt `score_threshold` quá cao (>0.8) ### PDF ✓ PDF có text layer (không phải scanned image) ✓ Cấu trúc rõ ràng với headings, paragraphs ✓ Nội dung ngắn gọn, dễ hiểu ✗ Tránh PDF quá nhiều hình ảnh phức tạp --- ## 10. Troubleshooting ### Server không khởi động - Kiểm tra dependencies: `pip install -r requirements.txt` - Kiểm tra MongoDB connection string - Kiểm tra Qdrant service ### Upload PDF lỗi - Verify file là PDF hợp lệ - Check file không bị corrupt - Thử convert lại PDF nếu cần ### Chatbot không trả lời đúng - Kiểm tra documents đã được index chưa: `/stats` - Thử giảm `score_threshold` - Bật Advanced RAG options - Check LLM token (Hugging Face) ### Out of memory - Giảm `chunk_size` trong PDF parser - Giảm `top_k` trong chat request - Index ít documents hơn mỗi lần --- ## 11. Liên Hệ & Support Nếu có thắc mắc hoặc vấn đề: - Check server logs - Review API documentation tại `/docs` - Xem GitHub issues --- **Happy Chatting! 🤖**