Spaces:
Sleeping
Sleeping
| # 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 `` hoặc HTML `<img src>` | |
| - Test regex: | |
| ```python | |
| from multimodal_pdf_parser import MultimodalPDFParser | |
| parser = MultimodalPDFParser() | |
| urls = parser.extract_image_urls("") | |
| 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! 🚀📄🤖** | |