Spaces:
Sleeping
Sleeping
File size: 8,678 Bytes
500cf95 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 |
# 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 "[email protected]" \
-F "[email protected]"
```
**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 "[email protected]" \
-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! 🤖**
|