File size: 13,482 Bytes
cb93402
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
# ChatbotRAG - Complete Summary

## Tổng Quan Hệ Thống

Hệ thống ChatbotRAG hiện đã được nâng cấp toàn diện với các tính năng advanced:

### ✨ Tính Năng Chính

1. **Multiple Inputs Support** (/index)
   - Index tối đa 10 texts + 10 images cùng lúc
   - Average embeddings tự động

2. **Advanced RAG Pipeline** (/chat)
   - Query Expansion
   - Multi-Query Retrieval
   - Reranking with semantic similarity
   - Contextual Compression
   - Better Prompt Engineering

3. **PDF Support** (/upload-pdf)
   - Parse PDF thành chunks
   - Auto chunking với overlap
   - Index vào RAG system

4. **Multimodal PDF** (/upload-pdf-multimodal) ⭐ NEW
   - Extract text + image URLs từ PDF
   - Link images với text chunks
   - Return images cùng text trong chat
   - Perfect cho user guides với screenshots

---

## Kiến Trúc Hệ Thống

```
┌─────────────────────────────────────────────────────────────┐
│                    FastAPI Application                       │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   Indexing   │  │   Search     │  │   Chat       │      │
│  │   Endpoints  │  │   Endpoints  │  │   Endpoint   │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
│                                                               │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌──────────────────────────────────────────────────────┐   │
│  │            Advanced RAG Pipeline                      │   │
│  │  • Query Expansion                                    │   │
│  │  • Multi-Query Retrieval                              │   │
│  │  • Reranking                                          │   │
│  │  • Contextual Compression                             │   │
│  └──────────────────────────────────────────────────────┘   │
│                                                               │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   Jina CLIP  │  │   Qdrant     │  │   MongoDB    │      │
│  │   v2         │  │   Vector DB  │  │   Documents  │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
│                                                               │
│  ┌──────────────┐  ┌──────────────┐                         │
│  │   PDF        │  │  Multimodal  │                         │
│  │   Parser     │  │  PDF Parser  │                         │
│  └──────────────┘  └──────────────┘                         │
│                                                               │
└─────────────────────────────────────────────────────────────┘
```

---

## Files Quan Trọng

### Core System
- **main.py** - FastAPI application với tất cả endpoints
- **embedding_service.py** - Jina CLIP v2 embedding
- **qdrant_service.py** - Qdrant vector DB operations
- **advanced_rag.py** - Advanced RAG pipeline

### PDF Processing
- **pdf_parser.py** - Basic PDF parser (text only)
- **multimodal_pdf_parser.py** - Multimodal PDF parser (text + images)
- **batch_index_pdfs.py** - Batch indexing script

### Documentation
- **ADVANCED_RAG_GUIDE.md** - Advanced RAG features guide
- **PDF_RAG_GUIDE.md** - PDF usage guide
- **MULTIMODAL_PDF_GUIDE.md** - Multimodal PDF guide ⭐
- **QUICK_START_PDF.md** - Quick start for PDF
- **chatbot_guide_template.md** - Template for user guide PDF

### Testing
- **test_advanced_features.py** - Test advanced features
- **test_pdf_chatbot.py** - Test PDF chatbot (example in docs)

---

## API Endpoints

### 1. Indexing

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/index` | POST | Index texts + images (max 10 each) |
| `/documents` | POST | Add text document |
| `/upload-pdf` | POST | Upload PDF (text only) |
| `/upload-pdf-multimodal` | POST | Upload PDF with images ⭐ |

### 2. Search

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/search` | POST | Hybrid search (text + image) |
| `/search/text` | POST | Text-only search |
| `/search/image` | POST | Image-only search |
| `/rag/search` | POST | RAG knowledge base search |

### 3. Chat

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/chat` | POST | Chat with Advanced RAG |

### 4. Management

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/documents/pdf` | GET | List all PDFs |
| `/documents/pdf/{id}` | DELETE | Delete PDF document |
| `/delete/{doc_id}` | DELETE | Delete document |
| `/document/{doc_id}` | GET | Get document by ID |
| `/history` | GET | Get chat history |
| `/stats` | GET | Collection statistics |
| `/` | GET | Health check + API docs |

---

## Use Cases & Recommendations

### Case 1: PDF Hướng Dẫn Chỉ Có Text

**Scenario:** FAQ, policy document, text guide

**Solution:** `/upload-pdf`

```bash
curl -X POST "http://localhost:8000/upload-pdf" \
  -F "file=@faq.pdf" \
  -F "title=FAQ"
```

### Case 2: PDF Hướng Dẫn Có Hình Ảnh ⭐ (Your Case)

**Scenario:** User guide với screenshots, tutorial với diagrams

**Solution:** `/upload-pdf-multimodal`

```bash
curl -X POST "http://localhost:8000/upload-pdf-multimodal" \
  -F "file=@user_guide_with_images.pdf" \
  -F "title=User Guide" \
  -F "category=guide"
```

**Benefits:**
- ✓ Extract text + image URLs
- ✓ Link images với text chunks
- ✓ Chatbot return images in response
- ✓ Visual context for users

### Case 3: Multiple Social Media Posts

**Scenario:** Index nhiều posts với texts và images

**Solution:** `/index` with multiple inputs

```python
data = {
    'id': 'post123',
    'texts': ['Post text 1', 'Post text 2', ...],  # Max 10
}
files = [
    ('images', open('img1.jpg', 'rb')),
    ('images', open('img2.jpg', 'rb')),  # Max 10
]
requests.post('http://localhost:8000/index', data=data, files=files)
```

### Case 4: Complex Queries

**Scenario:** Câu hỏi phức tạp, cần độ chính xác cao

**Solution:** Advanced RAG with full options

```python
{
    'message': 'Complex question',
    'use_rag': True,
    'use_advanced_rag': True,
    'use_reranking': True,
    'use_compression': True,
    'score_threshold': 0.5,
    'top_k': 5
}
```

---

## Workflow Đề Xuất Cho Bạn

### Setup Ban Đầu

1. **Tạo PDF hướng dẫn sử dụng**
   - Dùng template: `chatbot_guide_template.md`
   - Customize nội dung cho hệ thống của bạn
   - Thêm image URLs (screenshots, diagrams)
   - Convert to PDF: `pandoc template.md -o guide.pdf`

2. **Upload PDF**
   ```bash
   curl -X POST "http://localhost:8000/upload-pdf-multimodal" \
     -F "file=@chatbot_user_guide.pdf" \
     -F "title=Hướng dẫn sử dụng ChatbotRAG" \
     -F "category=user_guide"
   ```

3. **Verify**
   ```bash
   curl http://localhost:8000/documents/pdf
   # Check "type": "multimodal_pdf" và "total_images"
   ```

### Sử Dụng Hàng Ngày

1. **Chat với user**
   ```python
   response = requests.post('http://localhost:8000/chat', json={
       'message': user_question,
       'use_rag': True,
       'use_advanced_rag': True,
       'hf_token': 'your_token'
   })
   ```

2. **Display response + images**
   ```python
   # Text answer
   print(response.json()['response'])

   # Images (if any)
   for ctx in response.json()['context_used']:
       if ctx['metadata'].get('has_images'):
           for url in ctx['metadata']['image_urls']:
               # Display image in your UI
               print(f"Image: {url}")
   ```

### Cập Nhật Content

1. **Update PDF** - Edit và re-export
2. **Xóa PDF cũ**
   ```bash
   curl -X DELETE http://localhost:8000/documents/pdf/old_doc_id
   ```
3. **Upload PDF mới**
   ```bash
   curl -X POST http://localhost:8000/upload-pdf-multimodal -F "file=@new_guide.pdf"
   ```

---

## Performance Tips

### 1. Chunking

**Default:**
- chunk_size: 500 words
- chunk_overlap: 50 words

**Tối ưu:**
```python
# In multimodal_pdf_parser.py
parser = MultimodalPDFParser(
    chunk_size=400,      # Shorter for faster retrieval
    chunk_overlap=40,
    min_chunk_size=50
)
```

### 2. Retrieval

**Settings tốt:**
```python
{
    'top_k': 5,              # 3-7 is optimal
    'score_threshold': 0.5,   # 0.4-0.6 is good
    'use_reranking': True,    # Always enable
    'use_compression': True   # Keeps context relevant
}
```

### 3. LLM

**For factual answers:**
```python
{
    'temperature': 0.3,   # Low for accuracy
    'max_tokens': 512,    # Concise answers
    'top_p': 0.9
}
```

---

## Troubleshooting

### Issue 1: Images không được detect

**Solution:**
- Verify PDF có image URLs (http://, https://)
- Check format: markdown `![](url)` hoặc HTML `<img src>`
- Test regex:
  ```python
  from multimodal_pdf_parser import MultimodalPDFParser
  parser = MultimodalPDFParser()
  urls = parser.extract_image_urls("![](https://example.com/img.png)")
  print(urls)  # Should return ['https://example.com/img.png']
  ```

### Issue 2: Chatbot không tìm thấy thông tin

**Solution:**
- Lower score_threshold: `0.3-0.5`
- Increase top_k: `5-10`
- Enable Advanced RAG
- Rephrase question

### Issue 3: Response quá chậm

**Solution:**
- Giảm top_k
- Disable compression nếu không cần
- Use basic RAG thay vì advanced for simple queries

---

## Next Steps

### Immediate (Bây Giờ)

1. ✓ System đã ready!
2. Tạo PDF hướng dẫn của bạn
3. Upload qua `/upload-pdf-multimodal`
4. Test với câu hỏi thực tế

### Short Term (1-2 tuần)

1. Collect user feedback
2. Fine-tune parameters (top_k, threshold)
3. Add more PDFs (FAQ, tutorials, etc.)
4. Monitor chat history để improve content

### Long Term (Sau này)

1. **Hybrid Search với BM25**
   - Combine dense + sparse retrieval
   - Better for keyword queries

2. **Cross-Encoder Reranking**
   - Replace embedding similarity
   - More accurate ranking

3. **Image Processing**
   - Download và process actual images
   - Use Jina CLIP for image embeddings
   - True multimodal embeddings (text + image vectors)

4. **RAG-Anything Integration** (Nếu cần)
   - For complex PDFs with tables, charts
   - Vision encoder for embedded images
   - Advanced document understanding

---

## Comparison Matrix

| Approach | Text | Images | URLs | Complexity | Your Case |
|----------|------|--------|------|------------|-----------|
| Basic RAG | ✓ | ✗ | ✗ | Low | ✗ |
| PDF Parser | ✓ | ✗ | ✗ | Low | ✗ |
| **Multimodal PDF** | ✓ | ✗ | ✓ | **Medium** | **✓** |
| RAG-Anything | ✓ | ✓ | ✓ | High | Overkill |

**Recommendation:** **Multimodal PDF** là perfect cho case của bạn!

---

## Kết Luận

### Bạn Có Gì?**Multiple Inputs**: Index 10 texts + 10 images
✅ **Advanced RAG**: Query expansion, reranking, compression
✅ **PDF Support**: Parse và index PDFs
✅ **Multimodal PDF**: Extract text + image URLs, link together
✅ **Complete Documentation**: Guides, examples, troubleshooting

### Làm Gì Tiếp?

1. **Tạo PDF** hướng dẫn với nội dung của bạn (có image URLs)
2. **Upload** qua `/upload-pdf-multimodal`
3. **Test** với câu hỏi thực tế
4. **Iterate** - fine-tune based on feedback

### Files Cần Đọc

**Cho PDF với hình ảnh (Your case):**
- [MULTIMODAL_PDF_GUIDE.md](MULTIMODAL_PDF_GUIDE.md) ⭐⭐⭐
- [PDF_RAG_GUIDE.md](PDF_RAG_GUIDE.md)

**Cho Advanced RAG:**
- [ADVANCED_RAG_GUIDE.md](ADVANCED_RAG_GUIDE.md)

**Quick Start:**
- [QUICK_START_PDF.md](QUICK_START_PDF.md)

---

**Hệ thống của bạn bây giờ rất mạnh! Chỉ cần upload PDF và chat thôi! 🚀📄🤖**