# 10.Appendix-Document-Type-Classification-and-Processing-Strategy.md > **Phụ lục chiến lược phân loại & xử lý tài liệu** cho toàn bộ hệ thống SharePoint → Search → RAG. > > ⚠️ **Nguyên tắc sử dụng** > - Đây là **phụ lục độc lập**, không chỉnh sửa các file 1–9. > - Được coi là **luật xử lý file của hệ thống**. > - Mọi pipeline hiện tại và mở rộng trong tương lai **PHẢI tuân theo phụ lục này**. > - Mục tiêu: an toàn, mở rộng được, không xử lý sai loại tài liệu. --- ## 1. Mục tiêu của phụ lục Phụ lục này nhằm: - Chuẩn hoá **cách hệ thống hiểu và xử lý từng loại file** - Ngăn việc: - OCR / MarkItDown bừa bãi - Đưa bản vẽ kỹ thuật vào RAG - Xử lý sai Excel/dữ liệu bảng - Tạo **luồng ngoại lệ có kiểm soát** cho file mới hoặc hiếm gặp --- ## 2. Nguyên tắc cốt lõi (BẮT BUỘC) 1. **Không có "one-size-fits-all" cho tài liệu** 2. **Phân loại file xảy ra TRƯỚC OCR và MarkItDown** 3. **Extension là rule đầu, KHÔNG phải rule cuối** 4. **Tài liệu không có giá trị ngôn ngữ → không RAG** 5. **File lạ vẫn được ingest, nhưng xử lý an toàn** --- ## 3. Document Classification Engine (DCE) ### 3.1 Vai trò DCE chịu trách nhiệm quyết định **file đi vào pipeline nào**. Nếu chưa quyết định được → file **KHÔNG được xử lý sâu hơn**. --- ### 3.2 Input của DCE - Extension (vd: `.pdf`, `.dwg`, `.xlsx`) - MIME type - File size - Header bytes (chống giả extension) - Với PDF: - Có text layer hay không - Pattern nhanh (drawing vs text) --- ### 3.3 Output của DCE (bắt buộc) ```json { "doc_type": "textual_document | technical_drawing | structured_data | binary_unsupported", "processing_policy": "text_pipeline | metadata_only | table_pipeline | skip", "confidence": 0.95, "reason": "PDF detected as engineering drawing based on layout" } ``` --- ## 4. Các nhóm tài liệu và chiến lược xử lý ## 4.1 Nhóm A – Textual Documents (Tài liệu ngôn ngữ) ### Ví dụ - PDF văn bản (scan hoặc text) - DOCX, PPTX - PDF quy định, hợp đồng ### Xử lý - ✅ OCR (nếu scan) - ✅ MarkItDown - ✅ Chunking - ✅ Search - ✅ RAG Chat ### Ghi chú - Đây là **nguồn chính cho RAG** --- ## 4.2 Nhóm B – Technical Drawings (Bản vẽ kỹ thuật) ### Ví dụ - PDF bản vẽ kỹ thuật - DWG / DXF / IFC ### Xử lý - ✅ Metadata indexing - ✅ Thumbnail / preview (nếu có) - ✅ OCR giới hạn title block (tuỳ chọn) ### KHÔNG làm - ❌ OCR toàn bộ - ❌ MarkItDown - ❌ RAG ### Lý do - Nội dung chính là hình học, không phải ngôn ngữ - RAG sẽ dễ hallucinate và gây rủi ro nghiệp vụ --- ## 4.3 Nhóm C – Structured Data Documents (Dữ liệu bảng) ### Ví dụ - Excel (XLSX) - CSV ### Sub-case 1: Excel có mô tả nghiệp vụ - ✅ Trích xuất giới hạn - ✅ Convert sang Markdown có kiểm soát - ✅ Search - ⚠️ RAG chỉ áp dụng phần text ### Sub-case 2: Excel số liệu / danh sách lớn - ✅ Extract header + key columns - ✅ Index theo field - ❌ MarkItDown toàn file - ❌ OCR - ❌ RAG ngôn ngữ tự do --- ## 4.4 Nhóm D – Binary / Unsupported Documents ### Ví dụ - `.acad`, `.psd`, `.step`, `.zip` ### Xử lý - ✅ Metadata-only ingestion - ✅ Search theo tên / project - ❌ Không OCR - ❌ Không convert - ❌ Không RAG --- ## 5. Luồng xử lý ngoại lệ (Exception Flow) ### 5.1 Khi nào kích hoạt - Extension chưa có rule - MIME / header không khớp extension - File có pattern bất thường --- ### 5.2 Luồng chi tiết ```text File mới ↓ Basic metadata ingest ↓ DCE classify = UNKNOWN ↓ Flag: Pending Classification ↓ Rule-based auto guess (nếu có) ↓ Manual admin review (hiếm) ↓ Update classification rule ↓ Optionally re-process file ``` --- ### 5.3 Nguyên tắc an toàn - ❌ Không OCR file chưa rõ loại - ❌ Không cho RAG đọc file pending - ✅ Vẫn search được theo metadata --- ## 6. Tác động tới Search & RAG - Search - Phải tôn trọng `processing_policy` - RAG - Chỉ dùng `textual_document` - Skip toàn bộ nhóm B, C(subcase 2), D --- ## 7. Lợi ích dài hạn của chiến lược này - ✅ Không phá pipeline khi có file mới - ✅ An toàn AI (no hallucination) - ✅ Tối ưu chi phí OCR - ✅ Mở rộng không cần sửa core - ✅ Dễ audit --- ## 8. Kết luận phụ lục - Phân loại tài liệu là **điểm quyết định sống còn** của hệ thống - Extension là **điểm bắt đầu**, không phải kết luận - OCR và MarkItDown **là công cụ, không phải mục tiêu** - RAG chỉ dùng khi **có giá trị ngôn ngữ thật** --- *Phụ lục này là tài liệu tham chiếu nền tảng khi mở rộng hoặc audit toàn hệ thống.*