minhvtt commited on
Commit
2f50e28
·
verified ·
1 Parent(s): 21d5352

Delete PDF_RAG_GUIDE.md

Browse files
Files changed (1) hide show
  1. PDF_RAG_GUIDE.md +0 -390
PDF_RAG_GUIDE.md DELETED
@@ -1,390 +0,0 @@
1
- # Hướng Dẫn Sử Dụng PDF với ChatbotRAG
2
-
3
- ## Tổng Quan
4
-
5
- Hệ thống ChatbotRAG hiện đã hỗ trợ **tải lên và index PDF** để chatbot có thể trả lời câu hỏi dựa trên nội dung trong PDF. Điều này rất hữu ích cho:
6
- - Hướng dẫn sử dụng sản phẩm
7
- - Tài liệu FAQ
8
- - Chính sách, quy định
9
- - Tài liệu kỹ thuật
10
-
11
- ## Cách Thức Hoạt Động
12
-
13
- 1. **Upload PDF** → Hệ thống parse PDF thành text
14
- 2. **Chunking** → Text được chia thành các chunks (mặc định: 500 words/chunk, overlap 50 words)
15
- 3. **Embedding** → Mỗi chunk được convert thành vector embedding
16
- 4. **Indexing** → Lưu vào Qdrant + MongoDB
17
- 5. **Chat** → Chatbot tìm kiếm chunks liên quan và trả lời câu hỏi
18
-
19
- ## Cách 1: Upload PDF Qua API
20
-
21
- ### Endpoint: `POST /upload-pdf`
22
-
23
- **Request:**
24
- ```bash
25
- curl -X POST "http://localhost:8000/upload-pdf" \
26
- -F "file=@huong_dan_su_dung.pdf" \
27
- -F "title=Hướng dẫn sử dụng ChatbotRAG" \
28
- -F "description=Tài liệu hướng dẫn đầy đủ về ChatbotRAG" \
29
- -F "category=user_guide"
30
- ```
31
-
32
- **Python:**
33
- ```python
34
- import requests
35
-
36
- with open('huong_dan_su_dung.pdf', 'rb') as f:
37
- files = {'file': f}
38
- data = {
39
- 'title': 'Hướng dẫn sử dụng ChatbotRAG',
40
- 'description': 'Tài liệu hướng dẫn đầy đủ',
41
- 'category': 'user_guide'
42
- }
43
-
44
- response = requests.post(
45
- 'http://localhost:8000/upload-pdf',
46
- files=files,
47
- data=data
48
- )
49
-
50
- print(response.json())
51
- ```
52
-
53
- **Response:**
54
- ```json
55
- {
56
- "success": true,
57
- "document_id": "pdf_20251029_143022",
58
- "filename": "huong_dan_su_dung.pdf",
59
- "chunks_indexed": 45,
60
- "message": "PDF 'huong_dan_su_dung.pdf' đã được index thành công với 45 chunks"
61
- }
62
- ```
63
-
64
- ### Tham Số:
65
- - `file` (required): File PDF
66
- - `document_id` (optional): ID tùy chỉnh, mặc định auto-generate
67
- - `title` (optional): Tiêu đề tài liệu
68
- - `description` (optional): Mô tả
69
- - `category` (optional): Danh mục (user_guide, faq, policy, etc.)
70
-
71
- ## Cách 2: Batch Index Nhiều PDFs
72
-
73
- Nếu bạn có nhiều PDF files, sử dụng script batch:
74
-
75
- ```bash
76
- # Index tất cả PDFs trong thư mục
77
- python batch_index_pdfs.py ./docs/user_guides
78
-
79
- # Với category tùy chỉnh
80
- python batch_index_pdfs.py ./docs/policies --category=policy
81
-
82
- # Force reindex (ghi đè nếu đã có)
83
- python batch_index_pdfs.py ./docs/faq --category=faq --force
84
- ```
85
-
86
- Script sẽ tự động:
87
- - Scan tất cả file .pdf trong thư mục
88
- - Index từng file với metadata phù hợp
89
- - Skip những file đã index (trừ khi dùng --force)
90
- - Hiển thị progress và summary
91
-
92
- ## Quản Lý PDF Documents
93
-
94
- ### Xem Danh Sách PDFs
95
-
96
- ```bash
97
- curl http://localhost:8000/documents/pdf
98
- ```
99
-
100
- **Response:**
101
- ```json
102
- {
103
- "documents": [
104
- {
105
- "document_id": "pdf_user_guide",
106
- "type": "pdf",
107
- "filename": "huong_dan_su_dung.pdf",
108
- "num_chunks": 45,
109
- "metadata": {
110
- "title": "Hướng dẫn sử dụng",
111
- "category": "user_guide"
112
- }
113
- }
114
- ],
115
- "total": 1
116
- }
117
- ```
118
-
119
- ### Xóa PDF Document
120
-
121
- ```bash
122
- # Xóa document và tất cả chunks của nó
123
- curl -X DELETE http://localhost:8000/documents/pdf/pdf_user_guide
124
- ```
125
-
126
- ## Chat Với PDF Content
127
-
128
- Sau khi index PDF, bạn có thể chat như bình thường:
129
-
130
- ```python
131
- import requests
132
-
133
- response = requests.post('http://localhost:8000/chat', json={
134
- 'message': 'Làm sao để upload PDF vào ChatbotRAG?',
135
- 'use_rag': True,
136
- 'use_advanced_rag': True,
137
- 'top_k': 5,
138
- 'hf_token': 'your_hf_token'
139
- })
140
-
141
- result = response.json()
142
- print("Answer:", result['response'])
143
-
144
- # Xem sources
145
- for ctx in result['context_used']:
146
- print(f"- Page {ctx['metadata']['page']}: {ctx['metadata']['text'][:100]}...")
147
- ```
148
-
149
- Chatbot sẽ tự động tìm kiếm trong PDF và trả lời dựa trên nội dung đã index.
150
-
151
- ## Tạo PDF Hướng Dẫn Sử Dụng
152
-
153
- ### Template Nội Dung
154
-
155
- Dưới đây là cấu trúc đề xuất cho PDF hướng dẫn ChatbotRAG:
156
-
157
- ```
158
- HƯỚNG DẪN SỬ DỤNG CHATBOTRAG
159
-
160
- 1. GIỚI THIỆU
161
- - ChatbotRAG là gì?
162
- - Tính năng chính
163
- - Use cases
164
-
165
- 2. BẮT ĐẦU NHANH
166
- 2.1. Cài đặt
167
- 2.2. Khởi động server
168
- 2.3. Truy cập API
169
-
170
- 3. INDEX DỮ LIỆU
171
- 3.1. Index text đơn giản
172
- 3.2. Index với images
173
- 3.3. Index nhiều texts và images cùng lúc
174
- 3.4. Upload PDF
175
-
176
- 4. TÌM KIẾM
177
- 4.1. Search bằng text
178
- 4.2. Search bằng image
179
- 4.3. Hybrid search
180
-
181
- 5. CHAT VỚI CHATBOT
182
- 5.1. Chat cơ bản
183
- 5.2. Chat với RAG
184
- 5.3. Advanced RAG options
185
- 5.4. Tùy chỉnh LLM parameters
186
-
187
- 6. QUẢN LÝ DOCUMENTS
188
- 6.1. Xem danh sách documents
189
- 6.2. Xóa documents
190
- 6.3. Quản lý PDF files
191
-
192
- 7. CÂU HỎI THƯỜNG GẶP (FAQ)
193
- - Làm sao để upload PDF?
194
- - Chatbot không tìm thấy thông tin?
195
- - Làm sao để cải thiện độ chính xác?
196
- - Token limit là bao nhiêu?
197
-
198
- 8. API REFERENCE
199
- - POST /index
200
- - POST /search
201
- - POST /chat
202
- - POST /upload-pdf
203
- - GET /documents/pdf
204
- ```
205
-
206
- ### Tạo PDF Từ Markdown
207
-
208
- Bạn có thể tạo PDF từ Markdown bằng nhiều tools:
209
-
210
- **1. Pandoc (Recommended):**
211
- ```bash
212
- pandoc guide.md -o guide.pdf --pdf-engine=xelatex
213
- ```
214
-
215
- **2. Online Tools:**
216
- - https://www.markdowntopdf.com/
217
- - https://md2pdf.netlify.app/
218
-
219
- **3. VS Code Extension:**
220
- - Install "Markdown PDF" extension
221
- - Right-click file .md → "Markdown PDF: Export (pdf)"
222
-
223
- ### Ví Dụ Markdown Content
224
-
225
- Tạo file `chatbot_guide.md`:
226
-
227
- ```markdown
228
- # Hướng Dẫn Sử Dụng ChatbotRAG
229
-
230
- ## 1. Upload PDF
231
-
232
- Để upload PDF vào hệ thống:
233
-
234
- ### Bước 1: Chuẩn bị file PDF
235
- - File phải có định dạng .pdf
236
- - Nội dung nên rõ ràng, có cấu trúc
237
-
238
- ### Bước 2: Upload qua API
239
-
240
- \`\`\`bash
241
- curl -X POST "http://localhost:8000/upload-pdf" \
242
- -F "file=@your_file.pdf" \
243
- -F "title=Tên tài liệu"
244
- \`\`\`
245
-
246
- ### Bước 3: Kiểm tra
247
- Sau khi upload, hệ thống sẽ trả về số chunks đã được index.
248
-
249
- ## 2. Chat Với Chatbot
250
-
251
- Sau khi upload PDF, bạn có thể hỏi chatbot:
252
-
253
- **Ví dụ:**
254
- - "Làm sao để upload PDF?"
255
- - "Các bước tạo event là gì?"
256
- - "Tính năng nào trong hệ thống?"
257
-
258
- Chatbot sẽ tìm kiếm trong PDF và trả lời dựa trên nội dung đã index.
259
-
260
- ## 3. FAQ
261
-
262
- ### Câu hỏi 1: Upload PDF tối đa bao nhiêu trang?
263
- Không giới hạn, nhưng PDF càng lớn thì thời gian index càng lâu.
264
-
265
- ### Câu hỏi 2: Có thể upload nhiều PDFs không?
266
- Có, bạn có thể upload nhiều PDFs. Mỗi PDF sẽ có document_id riêng.
267
-
268
- ### Câu hỏi 3: Làm sao để xóa PDF đã upload?
269
- Sử dụng endpoint DELETE /documents/pdf/{document_id}
270
- ```
271
-
272
- Sau đó convert sang PDF:
273
- ```bash
274
- pandoc chatbot_guide.md -o chatbot_guide.pdf
275
- ```
276
-
277
- ## Best Practices
278
-
279
- ### 1. Cấu Trúc PDF
280
- - ✓ Có tiêu đề rõ ràng
281
- - ✓ Chia sections/chapters
282
- - ✓ Sử dụng bullet points
283
- - ✓ Tránh quá nhiều hình ảnh phức tạp (text extraction khó)
284
-
285
- ### 2. Nội Dung
286
- - ✓ Viết câu ngắn gọn, dễ hiểu
287
- - ✓ Mỗi section tập trung 1 chủ đề
288
- - ✓ Có ví dụ cụ thể
289
- - ✗ Tránh văn xuôi dài, khó tách câu
290
-
291
- ### 3. Metadata
292
- - Luôn đặt `title` rõ ràng
293
- - Sử dụng `category` để phân loại
294
- - Thêm `description` cho dễ quản lý
295
-
296
- ### 4. Chunking
297
- Mặc định:
298
- - Chunk size: 500 words
299
- - Overlap: 50 words
300
-
301
- Có thể tùy chỉnh trong `pdf_parser.py`:
302
- ```python
303
- parser = PDFParser(
304
- chunk_size=500, # Tăng nếu muốn context dài hơn
305
- chunk_overlap=50, # Tăng để giữ context tốt hơn
306
- min_chunk_size=50 # Min words cho 1 chunk
307
- )
308
- ```
309
-
310
- ## Troubleshooting
311
-
312
- ### Lỗi: "Error reading PDF"
313
- - Kiểm tra file PDF có bị corrupt không
314
- - Thử mở bằng PDF reader để verify
315
- - Convert lại PDF nếu cần
316
-
317
- ### Lỗi: "No text extracted"
318
- - PDF có thể là scanned images (không có text layer)
319
- - Cần OCR trước khi index (dùng tools như Tesseract)
320
-
321
- ### Chatbot không tìm thấy thông tin
322
- - Kiểm tra `score_threshold` - thử giảm xuống (e.g., 0.3)
323
- - Tăng `top_k` để retrieve nhiều documents hơn
324
- - Rephrase câu hỏi
325
-
326
- ### Chunks quá ngắn/dài
327
- - Điều chỉnh `chunk_size` trong `pdf_parser.py`
328
- - Reindex PDF với settings mới
329
-
330
- ## Complete Example
331
-
332
- ```python
333
- # 1. Upload PDF
334
- import requests
335
-
336
- with open('user_guide.pdf', 'rb') as f:
337
- response = requests.post(
338
- 'http://localhost:8000/upload-pdf',
339
- files={'file': f},
340
- data={
341
- 'title': 'Hướng dẫn sử dụng',
342
- 'category': 'user_guide'
343
- }
344
- )
345
-
346
- doc_id = response.json()['document_id']
347
- print(f"Uploaded: {doc_id}")
348
-
349
- # 2. List PDFs
350
- response = requests.get('http://localhost:8000/documents/pdf')
351
- print(response.json())
352
-
353
- # 3. Chat
354
- response = requests.post('http://localhost:8000/chat', json={
355
- 'message': 'Làm sao để tạo event mới?',
356
- 'use_rag': True,
357
- 'use_advanced_rag': True,
358
- 'hf_token': 'your_token'
359
- })
360
-
361
- print("Answer:", response.json()['response'])
362
-
363
- # 4. Delete PDF (if needed)
364
- response = requests.delete(f'http://localhost:8000/documents/pdf/{doc_id}')
365
- print(response.json())
366
- ```
367
-
368
- ## Next Steps
369
-
370
- 1. **Tạo PDF hướng dẫn của bạn** với nội dung về hệ thống của bạn
371
- 2. **Upload PDF** vào hệ thống
372
- 3. **Test chatbot** - hỏi các câu hỏi về nội dung trong PDF
373
- 4. **Fine-tune** - điều chỉnh parameters nếu cần
374
- 5. **Add more PDFs** - thêm FAQs, policies, etc.
375
-
376
- ## Support
377
-
378
- Nếu có vấn đề, check:
379
- - Server logs để xem errors
380
- - MongoDB để xem documents đã được lưu chưa
381
- - Qdrant collection để verify chunks đã được index
382
-
383
- ## Conclusion
384
-
385
- Hệ thống PDF RAG giúp chatbot của bạn trả lời câu hỏi dựa trên tài liệu có sẵn, không cần train lại model. Bạn chỉ cần:
386
- 1. Upload PDF
387
- 2. Chat như bình thường
388
- 3. Chatbot sẽ tìm kiếm và trả lời dựa trên PDF content
389
-
390
- Đơn giản và hiệu quả!