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,194 @@
# 14.Project-Bridge-Context-for-New-Chat.md
> Mục tiêu file này: **cầu nối ngữ cảnh** để mở New Chat và tiếp tục dự án mà **không cần attach lại toàn bộ 13 file**.
>
> ⚠️ Lưu ý quan trọng:
> - File này là **bản tóm lược có cấu trúc**, **KHÔNG thay thế** hoàn toàn cho các file 113.
> - Dùng khi giới hạn số file đính kèm thấp.
> - Nếu cần chi tiết kỹ thuật sâu cho một mô-đun, vẫn nên attach thêm file gốc liên quan.
---
## 1. Dự án đang làm là gì?
Xây dựng hệ thống tra cứu tài liệu nội bộ theo pipeline:
```text
SharePoint → Ingestion → Document Classification → PDF Inspection → OCR (có điều kiện) → MarkItDown → Chunking → Search → RAG Chat
```
Mục tiêu:
- Tra cứu nhanh nội dung tài liệu công ty lưu trong SharePoint
- Tìm đúng file, đúng trang, đúng quyền truy cập
- Hỗ trợ Search và RAG Chat có dẫn nguồn
---
## 2. Các quyết định kiến trúc đã CHỐT (không thay đổi)
### 2.1 Phân loại tài liệu là bắt buộc trước xử lý
- Không có one-size-fits-all cho mọi file
- Mỗi file phải đi qua **Document Classification Engine (DCE)** trước
### 2.2 PDF phải được inspect trước OCR
PDF được chia thành 3 loại:
- `TEXT_PDF` → không OCR, đưa thẳng vào MarkItDown
- `SCAN_PDF` → OCR bắt buộc, page-wise
- `DRAWING_PDF` → không OCR đại trà, không MarkItDown, không RAG
### 2.3 Bản vẽ kỹ thuật / CAD / binary không đi vào RAG
- DWG/DXF/IFC/CAD/Binary → metadata search only
- Drawing PDF → metadata + optional title-block OCR, không RAG
### 2.4 OCR chính thức được chọn
- **PaddleOCR (Detection) + VietOCR (Recognition)**
- On-prem, open-source, không lock-in cloud
- OCR chỉ gọi khi:
- `doc_type = textual_document`
- `pdf_type = SCAN_PDF`
### 2.5 RAG là tầng sau Search, có điều kiện
- Search-first, LLM-second
- Không có context tốt → không trả lời
- Trả lời phải có citation
- OCR confidence thấp → không đưa vào RAG
---
## 3. Các file gốc đã tồn tại trước đó
### Nhóm kiến trúc lõi
1. Kiến trúc tổng thể
2. SharePoint ingestion playbook
3. Extraction & normalization playbook
4. OpenSearch index & search playbook
5. RAG chat application playbook
6. Operations / monitoring / governance playbook
### Nhóm review & điều phối
7. Review / double-check / gap analysis
8. End-to-end processing flows bullets
### Nhóm phụ lục kỹ thuật quan trọng
9. Appendix Vietnamese OCR strategy
10. Appendix Document type classification and processing strategy
11. Appendix PDF inspection and text-layer detection
12. Appendix OCR integration strategy and flow
13. PoC implementation checklist
---
## 4. Trạng thái hiện tại của dự án
- Đã chốt kiến trúc end-to-end
- Đã chốt luật xử lý tài liệu
- Đã chốt chiến lược OCR tiếng Việt
- Đã có checklist PoC chi tiết
- Đang chuyển sang giai đoạn **bắt tay triển khai PoC thật**
Trọng tâm hiện tại:
> Tạo / dùng **SharePoint Team Site test** làm nguồn dữ liệu đầu vào cho PoC.
---
## 5. Site SharePoint test dự kiến / khuyến nghị
### Loại site
- **Team site**
- Privacy: Private
### Tên gợi ý
- `SP-RAG-Test`
### Cấu trúc thư mục test khuyến nghị
```text
/Documents
/01-PDF-Text
/02-PDF-Scan
/03-PDF-Drawing
/04-DOCX
/05-XLSX-Textual
/06-XLSX-Structured
/07-CAD-Binary
/99-Pending-Classification
```
### ACL test
- Có ít nhất 1 thư mục/folder restricted để test permission filtering
---
## 6. Thứ tự triển khai PoC đã chốt
1. Tạo SharePoint site test
2. Upload bộ dữ liệu test nhỏ nhưng đủ loại
3. Kiểm tra quyền truy cập khác nhau giữa user
4. Bắt đầu ingestion
5. Chạy document classification
6. Chạy PDF inspection
7. Chỉ OCR cho SCAN_PDF
8. MarkItDown / normalization / chunking
9. Index vào OpenSearch
10. Bật search
11. Chỉ bật RAG sau khi search + ACL + citation ổn
---
## 7. Các ngưỡng / guardrails đã chốt
### OCR confidence
- `>= 0.90` → có thể dùng cho RAG
- `0.80 0.90` → search only
- `< 0.80` → flag review
### Không được làm
- Không OCR drawing PDF đại trà
- Không đưa CAD/binary vào RAG
- Không bỏ qua bước classification/PDF inspection
- Không để AI tự thay đổi kiến trúc đã chốt
---
## 8. Khi mở New Chat, AI cần tuân thủ gì?
### Bắt buộc
1. Không thay đổi các quyết định đã chốt ở trên
2. Không đề xuất đi ngược các guardrails
3. Nếu mở rộng thì chỉ tạo phụ lục mới hoặc ghi rõ là đề xuất mở rộng
4. Tiếp tục đúng ngữ cảnh: **từ SharePoint site test → PoC triển khai**
### Câu mở đầu gợi ý cho New Chat
```text
Tôi đang tiếp tục dự án SharePoint → Search → RAG.
Hãy coi file bridge context này là source of truth tạm thời.
Mục tiêu hiện tại: dùng SharePoint site test làm input cho PoC và đi tiếp đúng theo roadmap đã chốt.
Không thay đổi kiến trúc, không nhảy bước.
```
---
## 9. Gợi ý attach file khi chỉ được add ít file
### Tối thiểu nên attach
1. **File bridge này**
2. `10.Appendix-Document-Type-Classification-and-Processing-Strategy.md`
3. `13.PoC-Implementation-Checklist.md`
### Nếu cần đi sâu OCR
Thay file 13 hoặc attach tiếp ở lượt sau:
- `11.Appendix-PDF-Inspection-and-TextLayer-Detection.md`
- `12.Appendix-OCR-Integration-Strategy-and-Flow.md`
---
## 10. Mục tiêu thảo luận tiếp theo sau khi mở New Chat
Một trong các hướng sau:
- Chuẩn bị dataset test cho SharePoint site
- Map SharePoint site test vào PoC pipeline
- Lập execution plan theo checklist PoC
- Bắt đầu dựng skeleton triển khai kỹ thuật
---
*Kết thúc file bridge. Đây là file cầu nối ngữ cảnh, tối ưu cho trường hợp giới hạn số file đính kèm.*