# 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! 🚀**