File size: 7,273 Bytes
6b98b09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Quick Start: PDF-Based ChatbotRAG

## Tóm Tắt Nhanh

Bây giờ bạn có thể:
1. **Upload PDF** hướng dẫn sử dụng vào hệ thống
2. **Chatbot tự động trả lời** các câu hỏi dựa trên nội dung trong PDF
3. Không cần train model, chỉ cần upload PDF!

---

## Quy Trình Hoàn Chỉnh

### Bước 1: Tạo PDF Hướng Dẫn

Bạn có 2 cách:

**Cách 1: Sử dụng Template Có Sẵn**

File `chatbot_guide_template.md` đã sẵn sàng. Customize nội dung cho hệ thống của bạn, sau đó convert sang PDF:

```bash
# Cài pandoc (nếu chưa có)
# Windows: choco install pandoc
# Mac: brew install pandoc
# Linux: sudo apt-get install pandoc

# Convert markdown to PDF
pandoc chatbot_guide_template.md -o chatbot_user_guide.pdf --pdf-engine=xelatex
```

**Cách 2: Tự Viết Content**

Tạo file Word/Google Docs với nội dung hướng dẫn, sau đó:
- File → Export → PDF

**Nội dung nên bao gồm:**
- Giới thiệu hệ thống
- Các chức năng chính
- Hướng dẫn sử dụng từng tính năng
- FAQ (Câu hỏi thường gặp)
- Examples

### Bước 2: Upload PDF Vào Hệ Thống

```bash
# Khởi động server
cd ChatbotRAG
python main.py
```

Trong terminal khác:

```bash
# Upload PDF
curl -X POST "http://localhost:8000/upload-pdf" \
  -F "file=@chatbot_user_guide.pdf" \
  -F "title=Hướng dẫn sử dụng ChatbotRAG" \
  -F "description=Tài liệu hướng dẫn đầy đủ" \
  -F "category=user_guide"
```

Hoặc dùng Python:

```python
import requests

with open('chatbot_user_guide.pdf', 'rb') as f:
    response = requests.post(
        'http://localhost:8000/upload-pdf',
        files={'file': f},
        data={
            'title': 'Hướng dẫn sử dụng ChatbotRAG',
            'category': 'user_guide'
        }
    )

print(response.json())
# Output: {"success": true, "document_id": "pdf_...", "chunks_indexed": 45}
```

### Bước 3: Verify Upload

```bash
# Xem danh sách PDFs
curl http://localhost:8000/documents/pdf
```

### Bước 4: Chat!

```python
import requests

response = requests.post('http://localhost:8000/chat', json={
    'message': 'Làm sao để upload PDF vào ChatbotRAG?',
    'use_rag': True,
    'use_advanced_rag': True,
    'top_k': 5,
    'hf_token': 'your_huggingface_token'  # Get from https://huggingface.co/settings/tokens
})

result = response.json()
print("Answer:", result['response'])
print("\nSources:")
for ctx in result['context_used']:
    print(f"- Page {ctx['metadata']['page']}: Confidence {ctx['confidence']:.2%}")
```

---

## Test Script Mẫu

File `test_pdf_chatbot.py`:

```python
"""
Test PDF-based chatbot
"""
import requests
import time

BASE_URL = "http://localhost:8000"
HF_TOKEN = "your_huggingface_token"  # Replace with your token

def upload_pdf():
    """Upload PDF guide"""
    print("=== Uploading PDF ===")

    with open('chatbot_user_guide.pdf', 'rb') as f:
        response = requests.post(
            f'{BASE_URL}/upload-pdf',
            files={'file': f},
            data={
                'title': 'ChatbotRAG User Guide',
                'category': 'user_guide'
            }
        )

    result = response.json()
    print(f"✓ Uploaded: {result['chunks_indexed']} chunks")
    return result['document_id']

def chat(question):
    """Ask chatbot"""
    print(f"\n=== Question: {question} ===")

    response = requests.post(f'{BASE_URL}/chat', json={
        'message': question,
        'use_rag': True,
        'use_advanced_rag': True,
        'top_k': 5,
        'hf_token': HF_TOKEN
    })

    result = response.json()
    print(f"Answer: {result['response']}\n")

    print(f"Retrieved {len(result['context_used'])} documents:")
    for i, ctx in enumerate(result['context_used'], 1):
        print(f"{i}. Page {ctx['metadata'].get('page')}, Confidence: {ctx['confidence']:.2%}")

def main():
    # 1. Upload PDF
    doc_id = upload_pdf()

    # Wait for indexing to complete
    time.sleep(2)

    # 2. Test questions
    questions = [
        "Làm sao để upload PDF vào hệ thống?",
        "Chatbot có support tiếng Việt không?",
        "Tối đa bao nhiêu texts có thể index cùng lúc?",
        "Advanced RAG có những tính năng gì?"
    ]

    for q in questions:
        chat(q)
        time.sleep(1)

if __name__ == "__main__":
    main()
```

Chạy:
```bash
python test_pdf_chatbot.py
```

---

## Upload Nhiều PDFs Cùng Lúc

Nếu bạn có nhiều PDFs (FAQ, User Guide, Policies, etc.):

```bash
# Đặt tất cả PDFs vào thư mục
mkdir docs
# Copy PDFs vào docs/

# Batch index
python batch_index_pdfs.py ./docs --category=user_guide
```

Script sẽ tự động index tất cả PDFs và skip những file đã có.

---

## Câu Hỏi Test Mẫu

Sau khi upload PDF hướng dẫn, test với các câu hỏi:

**Về tính năng:**
- "ChatbotRAG có những tính năng gì?"
- "Làm sao để index dữ liệu?"
- "Advanced RAG là gì?"

**Hướng dẫn sử dụng:**
- "Làm sao để upload PDF?"
- "Cách chat với chatbot như thế nào?"
- "Làm sao để xem lịch sử chat?"

**FAQ:**
- "Chatbot không tìm thấy thông tin phải làm sao?"
- "Tối đa bao nhiêu images có thể upload?"
- "Token limit là bao nhiêu?"

**Technical:**
- "Score threshold là gì?"
- "Top_k trong chat request có ý nghĩa gì?"
- "Làm sao để cải thiện độ chính xác?"

---

## Tips Để Chatbot Trả Lời Tốt

### 1. PDF Content Quality
- Viết rõ ràng, có cấu trúc
- Mỗi section tập trung 1 topic
- Có examples cụ thể
- FAQ với câu hỏi thực tế

### 2. Chat Settings
```python
{
    'use_advanced_rag': True,      # Luôn bật
    'use_reranking': True,          # Rerank cho accuracy
    'use_compression': True,        # Nén context
    'score_threshold': 0.5,         # 0.4-0.6 là tốt
    'top_k': 5,                     # 3-7 tùy use case
    'temperature': 0.3              # Thấp cho factual answers
}
```

### 3. Query Tips
- Hỏi câu rõ ràng, cụ thể
- Tránh câu hỏi quá chung chung
- Nếu không tìm thấy, rephrase câu hỏi

---

## Monitoring

### Check Index Status
```bash
curl http://localhost:8000/stats
```

### View PDFs
```bash
curl http://localhost:8000/documents/pdf
```

### Check Chat History
```bash
curl "http://localhost:8000/history?limit=10"
```

---

## Kết Luận

Bây giờ bạn có thể:

✓ Tạo PDF hướng dẫn với nội dung của bạn
✓ Upload PDF vào hệ thống trong vài giây
✓ Chatbot tự động trả lời dựa trên PDF content
✓ Không cần train, không cần code phức tạp
✓ Update content? Chỉ cần upload PDF mới!

**Next Steps:**
1. Tạo PDF hướng dẫn của bạn (hoặc customize template)
2. Upload vào hệ thống
3. Test với câu hỏi thực tế
4. Fine-tune settings nếu cần
5. Add thêm PDFs (FAQ, policies, etc.)

---

## Files Quan Trọng

- `pdf_parser.py` - PDF parsing engine
- `batch_index_pdfs.py` - Batch indexing script
- `chatbot_guide_template.md` - Template PDF content
- `PDF_RAG_GUIDE.md` - Chi tiết về PDF RAG
- `ADVANCED_RAG_GUIDE.md` - Advanced RAG features

---

**Chúc bạn thành công! 🚀**