🔍 So Sánh Các Phương Pháp Xử Lý Excel Cho RAG
Tìm kiếm “công thức” tối ưu để trích xuất dữ liệu từ file Excel phục vụ hệ thống RAG
Giới thiệu
Trong thực tế, file Excel được sử dụng rộng rãi với nhiều định dạng phức tạp: bảng dữ liệu có màu sắc, biểu đồ, hình ảnh, và các cấu trúc đặc biệt. Khi xây dựng hệ thống RAG (Retrieval-Augmented Generation), câu hỏi đặt ra là: Làm thế nào để “nấu” dữ liệu Excel sao cho LLM hiểu được một cách tốt nhất?
Bài viết này so sánh 5 phương pháp xử lý Excel khác nhau, từ đơn giản đến phức tạp, dựa trên 4 kịch bản thực tế với các câu hỏi cụ thể để đánh giá độ chính xác.
🔧 Thiết lập thử nghiệm
Công cụ sử dụng:
- Ngôn ngữ: TypeScript
- LLM: Gemini 2.5 Pro
- Thư viện: XLSX, ExcelJS, JSZip, LibreOffice
4 kịch bản test:
- Bảng chấm công: Quản lý ngày làm việc/nghỉ phép hàng tháng
- Biểu đồ Gantt: Quản lý dự án với màu sắc phân chia thời gian
- Báo cáo doanh số: Bảng số liệu kèm biểu đồ
- Hướng dẫn sử dụng: Tài liệu có ảnh chụp màn hình
1. Phương pháp CSV (Plain Text)
33%
sheet_to_csv()
Ưu điểm
- ✓Triển khai đơn giản
- ✓Xử lý nhanh
- ✓Dung lượng nhỏ
Nhược điểm
- ✗Mất định dạng cell
- ✗Không có thông tin màu sắc
- ✗Không chứa hình ảnh
Kết quả: CSV hoạt động tốt với dữ liệu bảng đơn giản (50% câu đúng ở báo cáo doanh số) nhưng thất bại hoàn toàn với Gantt chart, biểu đồ và hình ảnh do không capture được thông tin visual.
2. Phương pháp JSON (Structured)
50%
sheet_to_json()
Ưu điểm
- ✓Cấu trúc rõ ràng
- ✓Dễ parse và query
- ✓Tốt cho bảng đơn giản
Nhược điểm
- ✗Không có styling
- ✗Không có hình ảnh
- ✗Mất context trực quan
Kết quả: JSON vượt trội CSV nhờ cấu trúc key-value, đạt 100% với bảng chấm công. Tuy nhiên vẫn không xử lý được màu sắc, biểu đồ và hình ảnh – thất bại hoàn toàn với Gantt chart và hướng dẫn.
3. Phương pháp HTML (Rich Format)
42%
Ưu điểm
- ✓Giữ được màu sắc
- ✓Bảo toàn formatting
- ✓Có font styles
Nhược điểm
- ✗Implementation phức tạp
- ✗Không có hình ảnh
- ✗File size lớn hơn
Kết quả: HTML capture được màu sắc nên có thể xử lý Gantt chart (33% thành công), nhưng độ chính xác không ổn định (ngày thường lệch 1). Vẫn không có biểu đồ và hình ảnh. Code implementation phức tạp nhưng có tiềm năng cải thiện.
4. Phương pháp PDF Image (Visual)
67%
Ưu điểm
- ✓Độ trung thực visual 100%
- ✓Có biểu đồ
- ✓Có hình ảnh gốc
Nhược điểm
- ✗Khó trích xuất bảng chi tiết
- ✗File size lớn
- ✗Cần OCR cho text
Kết quả: PDF xuất sắc với visual content – 100% chính xác với hướng dẫn có screenshot và báo cáo có biểu đồ. Tuy nhiên yếu với bảng dữ liệu chi tiết (0% với bảng chấm công) do LLM khó phân tích row/column từ image.
5. Phương pháp Hybrid (HTML + PDF) ⭐
100%
Ưu điểm
- ✓Tốt nhất trong mọi tình huống
- ✓Xử lý được mọi loại Excel
- ✓Độ chính xác cao nhất
- ✓Bù trừ nhược điểm lẫn nhau
Nhược điểm
- ✗Phức tạp nhất
- ✗Payload lớn nhất
- ✗Chi phí LLM cao hơn
Kết quả: Hybrid đạt 100% (24/24 câu đúng) bằng cách tận dụng điểm mạnh của cả hai: HTML cho cấu trúc bảng + màu sắc, PDF cho biểu đồ + hình ảnh. LLM có thể cross-reference giữa hai nguồn để đưa ra câu trả lời chính xác nhất.
📊 Bảng so sánh tổng hợp
| Kịch bản / Câu hỏi | CSV | JSON | HTML | Hybrid | |
|---|---|---|---|---|---|
| Bảng chấm công: Ai nghỉ ngày 15/10? | ✗ | ✓ | ✓ | ✗ | ✓ |
| Bảng chấm công: Mike nghỉ khi nào? | △ | ✓ | ✓ | ✗ | ✓ |
| Gantt: Thiết kế – ai & khi nào? | ✗ | ✗ | △ | ✓ | ✓ |
| Gantt: Testing khi nào? | ✗ | ✗ | △ | △ | ✓ |
| Doanh số: Vùng nào cao nhất Q3? | ✓ | ✓ | ✗ | ✓ | ✓ |
| Doanh số: Chart xanh-đỏ cách xa nhất? | ✗ | ✗ | ✗ | ✓ | ✓ |
| Hướng dẫn: Nút Save ở đâu? | ✗ | ✗ | ✗ | ✓ | ✓ |
| Hướng dẫn: Bước 3 có mấy nút? | ✗ | ✗ | ✗ | ✓ | ✓ |
| TỔNG ĐIỂM | 33% | 50% | 42% | 67% | 100% |
🔍 Phân tích chi tiết
CSV & JSON – Giới hạn rõ ràng
Triển khai đơn giản nhưng hoàn toàn không xử lý được màu sắc, hình ảnh, biểu đồ. JSON tốt hơn CSV một chút nhờ cấu trúc key-value rõ ràng, giúp các câu hỏi về bảng chấm công (row-based queries) chính xác hơn. Tuy nhiên, với Gantt chart và hướng dẫn có hình ảnh thì cả hai đều bất lực.
HTML (ExcelJS) – Một nửa thành công
Phương pháp này có thể trích xuất được màu nền, font style, text alignment… nên với Gantt chart có thể nhận diện màu sắc. Tuy nhiên độ chính xác không ổn định (ngày thường lệch 1), code implementation phức tạp. Nếu đầu tư thêm về xử lý date format và cell merging có thể cải thiện. Vẫn không xử lý được biểu đồ và hình ảnh.
PDF Image – Mạnh về visual
Điểm sáng lớn nhất là giữ nguyên 100% giao diện Excel: màu sắc, biểu đồ, hình ảnh, layout. Vì vậy xuất sắc với hướng dẫn có screenshot và báo cáo có chart. Tuy nhiên với bảng dữ liệu chi tiết (bảng chấm công) thì lại yếu – LLM khó phân tích quan hệ row/column từ image. Có thể trong tương lai khi LLM tốt hơn trong việc đọc image thì vấn đề này sẽ được cải thiện.
Hybrid (HTML + PDF) – Người chiến thắng 🏆
Bằng cách gửi cả HTML và PDF cho LLM, phương pháp này tận dụng được điểm mạnh của cả hai:
- HTML cung cấp cấu trúc bảng rõ ràng + thông tin màu sắc
- PDF cung cấp biểu đồ + hình ảnh + context trực quan
- LLM có thể cross-reference giữa hai nguồn để đưa ra câu trả lời chính xác nhất
Trong test này đạt 100% (24/24 câu đúng), xử lý tốt mọi loại Excel. Nhược điểm duy nhất là implementation phức tạp và chi phí API cao hơn do payload lớn.
💡 Kết luận & Khuyến nghị
- CSV/JSON: Prototype nhanh, bảng dữ liệu đơn giản không có định dạng
- HTML: Bảng có màu sắc, định dạng quan trọng, không có biểu đồ/hình ảnh
- PDF: Dashboard, báo cáo có chart, tài liệu có screenshot
- Hybrid: Hệ thống production cần độ chính xác cao, xử lý Excel phức tạp
Độ chính xác vs Chi phí implementation vs Chi phí runtime. Hybrid có độ chính xác cao nhất nhưng cũng tốn kém nhất. Với use case cụ thể cần cân nhắc kỹ.
- Xác định chiến lược chunking (table-level vs row-level)
- Tối ưu hóa embedding generation cho mixed content
- Implement vector search hiệu quả
- Thiết kế prompt engineering cho từng loại Excel
- Xây dựng fallback strategies cho edge cases
Bắt đầu với JSON cho prototype, chuyển sang HTML khi cần colors, và nâng cấp lên Hybrid cho production nếu budget cho phép. PDF đơn lẻ phù hợp cho dashboard/manual. Luôn test với dữ liệu thực tế của bạn vì mỗi tổ chức có cách dùng Excel khác nhau!
📝 Bài viết này dựa trên thử nghiệm thực tế với LLM Gemini 2.5 Pro
💬 Bạn đang dùng phương pháp nào cho RAG với Excel? Chia sẻ kinh nghiệm nhé!