EBD_Fest / chatbot_guide_template.md
minhvtt's picture
Upload 20 files
cb93402 verified
# 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****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``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! 🤖**