Phase 7: Hoàn thiện Modular RAG Backend với FastAPI và Đa LLM Provider

This commit is contained in:
2026-05-08 07:30:30 +00:00
commit 26d1298cf6
51 changed files with 5360 additions and 0 deletions

View File

@@ -0,0 +1,193 @@
# 13.PoC-Implementation-Checklist.md
> **Checklist triển khai PoC (Proof of Concept)** cho hệ thống tra cứu tài liệu SharePoint → Search → RAG Chat.
>
> ⚠️ Nguyên tắc của checklist này:
> - Dựa **100% trên các quyết định đã chốt trong file 112**
> - Dùng để **triển khai PoC thật**, không phải tài liệu lý thuyết
> - Checklist theo thứ tự **chuẩn kỹ thuật**, làm xong mục trước mới sang mục sau
> - Có thể dùng cho: Tech Lead, Dev, Vendor, AI Agent
---
## 0. Phạm vi PoC (BẮT BUỘC CHỐT TRƯỚC KHI LÀM)
### ✅ Mục tiêu PoC
- Tra cứu tài liệu nội bộ (SharePoint)
- Hỗ trợ **search + RAG chat**
- Đúng quyền người dùng
- Ưu tiên **tài liệu tiếng Việt**
### ❌ Ngoài phạm vi PoC
- Finetune OCR
- Phân tích bản vẽ kỹ thuật bằng AI
- Multitenant phức tạp
---
## 1. Chuẩn bị môi trường
- [ ] Tenant SharePoint test
- [ ] App Registration (Graph API apponly)
- [ ] Server PoC (CPU ≥ 16 cores, RAM ≥ 32GB)
- [ ] Docker / Container runtime
- [ ] OpenSearch cluster (dev size)
---
## 2. Ingestion SharePoint
- [ ] Kết nối Graph API thành công
- [ ] Lấy được site / library metadata
- [ ] Delta query hoạt động
- [ ] Persist delta token
- [ ] Detect create / update / delete file
---
## 3. Document Classification Engine (File 10)
- [ ] Parse extension + MIME type
- [ ] Header byte validation (chống giả extension)
- [ ] Gán `doc_type`
- [ ] Gán `processing_policy`
- [ ] Log lý do classify
---
## 4. PDF Inspection (File 11)
- [ ] Detect text layer PDF
- [ ] Calculate text density
- [ ] Detect vector / drawing layout
- [ ] Classify: TEXT_PDF / SCAN_PDF / DRAWING_PDF
- [ ] Log quyết định inspection
---
## 5. OCR Integration (File 12)
### 5.1 Điều kiện gọi OCR
- [ ] Chỉ OCR khi `SCAN_PDF`
- [ ] Skip DRAWING_PDF
- [ ] Skip nontextual documents
### 5.2 OCR Service
- [ ] PaddleOCR detector chạy ổn định
- [ ] VietOCR recognizer nhận tiếng Việt có dấu
- [ ] OCR pagewise
- [ ] OCR chạy được trên CPU
### 5.3 OCR Output
- [ ] Có page number
- [ ] Có text
- [ ] Có confidence
- [ ] OCR output chuẩn JSON contract
---
## 6. MarkItDown & Normalization
- [ ] Nhận text từ OCR hoặc textPDF
- [ ] Convert sang Markdown
- [ ] Giữ heading / paragraph / list
- [ ] Gắn page marker
---
## 7. Chunking
- [ ] Chunk theo heading / page
- [ ] Token size phù hợp cho search & RAG
- [ ] Gắn metadata: file_id, page, URL
---
## 8. Index & Search (OpenSearch)
- [ ] Mapping chunkfirst
- [ ] Index text field
- [ ] Index metadata field
- [ ] Index ACL
- [ ] Index embedding (nếu dùng)
---
## 9. Permission Enforcement
- [ ] Resolve user identity
- [ ] Resolve group membership
- [ ] Filter search theo ACL
- [ ] Không lộ file user không có quyền
---
## 10. Search Experience
- [ ] Keyword search hoạt động
- [ ] Search trả đúng file & page
- [ ] Highlight nội dung
- [ ] Click mở file gốc
---
## 11. RAG Chat (File 5)
### 11.1 Điều kiện vào RAG
- [ ] Có kết quả search
- [ ] OCR confidence đạt threshold
### 11.2 Prompt & Answer
- [ ] System prompt chặt (no hallucination)
- [ ] Chỉ dùng context search
- [ ] Trả câu trả lời + citation
### 11.3 Fallback
- [ ] Không có dữ liệu → trả lời chuẩn
---
## 12. Logging & Audit
- [ ] Log ingestion
- [ ] Log OCR
- [ ] Log search query
- [ ] Log RAG answer + context
---
## 13. User Validation (PoC Acceptance)
- [ ] User tìm được tài liệu mong muốn
- [ ] User hiểu citation
- [ ] AI không trả lời bịa
- [ ] UX dễ sử dụng
---
## 14. KPI PoC (Đủ/Không đủ)
- [ ] Search latency < 3s
- [ ] OCR Vietnamese readable
- [ ] RAG trả lời đúng phạm vi
- [ ] Không lộ quyền
---
## 15. Quyết định sau PoC
- [ ] Go Pilot
- [ ] Điều chỉnh OCR threshold
- [ ] Thêm loại document
- [ ] Finetune sau (nếu cần)
---
## Kết luận Checklist
- Checklist này hoàn thành → PoC **đã thành công về mặt kỹ thuật**
- Chưa hoàn thành → **không nên lên production**
---
*Tài liệu này là checklist thực thi, không phải tài liệu mô tả.*