Spaces:
Running
Running
| # 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 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! 🤖** | |