№ 60
Trong công tác đào tạo nhân lực ngành Y tế, việc quản lý danh mục và rà soát tài liệu chính thức luôn là một bài toán phức tạp. Năm 2026, Viện Đào tạo và Nghiên cứu Y dược - Bệnh viện Bạch Mai triển khai danh mục chương trình đào tạo mới với hàng loạt chuyên khoa từ Cơ bản, Nâng cao cho đến Chuyên sâu. Tuy nhiên, việc rà soát thủ công, kiểm tra tính pháp lý của nguồn tài liệu ban hành thường đối mặt với nguy cơ thất lạc thông tin hoặc nhầm lẫn giữa các phiên bản
🎯 TIÊU CHÍ 1: ĐỘ HOÀN THIỆN SẢN PHẨM (PRODUCT READINESS) Sản phẩm đã hoàn thiện 100% User Flow End-to-End và sẵn sàng chạy demo trực tiếp mà không gặp bất kỳ lỗi gián đoạn nào. Hệ thống được phát triển với hai phiên bản bổ trợ lẫn nhau, phục vụ linh hoạt các môi trường triển khai khác nhau:
💻 TIÊU CHÍ 2: CHẤT LƯỢNG KỸ THUẬT (TECHNICAL EXCELLENCE)
Kiến trúc Hệ thống (System Architecture) Hệ thống sử dụng mô hình lai (Hybrid Architecture) kết hợp giữa sức mạnh tính toán của Backend Python và sự cơ động, bảo mật của Frontend Web tĩnh: graph TD subgraph Streamlit_Backend["Phiên bản Dynamic (Backend Python)"] A[Streamlit UI] <--> B[AI Agent - ai_agent.py] B <-->|Gemini 2.5 Flash| C[Gemini API Client] A <-->|SQL Queries| D[(SQLite Database - documents.db)] D <-->|Import/Export| E[Excel Sheet - Danh mục 2026] A <-->|Storage| F[Uploaded Documents Directory] end
subgraph Static_Frontend["Phiên bản Portal (Web Tĩnh HTML5)"] G[index.html / style.css / app.js] <--> H[ai-chatbot.js] H <-->|Local Logic| I[data.js - Static JSON] H <-->|Gemini 1.5 Flash| J[Client-Side Gemini API] G <-->|Virtual Storage| K[(IndexedDB - Browser Storage)] end
D -.->|Exporter| I
Thiết kế RAG & Agent thông minh (Smart Agent & RAG Design) Dự án triển khai hai mô hình Agent độc đáo nhằm giải quyết bài toán tra cứu: • Text-to-SQL DB Agent (Trong App Python): • Mô hình gemini-2.5-flash được hướng dẫn chi tiết về lược đồ dữ liệu (schema) của bảng programs. • Khi nhận câu hỏi (ví dụ: "Có bao nhiêu chương trình hồi sức của BVBM còn thiếu tài liệu?"), Agent không tự bịa câu trả lời mà sinh ra câu lệnh SQL: SELECT COUNT(*) FROM programs WHERE name LIKE '%Hồi sức%' AND doc_status = 'Thiếu' AND doc_source = 'Của BVBM ban hành'; • Hệ thống thực thi lệnh SQL trên SQLite, trả về kết quả thô, sau đó Agent đóng vai trò tổng hợp để viết câu trả lời tự nhiên dạng bảng/danh sách gửi tới người dùng. • Context-Filtered Hybrid RAG Chatbot (Trong Web Tĩnh): • Để tối ưu hóa chi phí token và tốc độ phản hồi trên trình duyệt, chatbot thực hiện Local Keyword Pre-filtering trên mảng data.js để tìm ra ~20 chương trình liên quan nhất đến từ • Xanh, Thiếu - Cam, Chưa rõ - Đỏ), giúp cán bộ quản lý nhìn thấy ngay những "lỗ hổng" tài liệu. • Quản lý tệp cục bộ: Cho phép tải tài liệu lên thư mục riêng biệt của từng chương trình để lưu trữ tập trung, dễ dàng tải về kiểm khóa người dùng hỏi. • Danh sách thu gọn này cùng số liệu thống kê tổng quan được đưa vào System Prompt làm context để gemini-1.5-flash trả lời trực tuyến. • Sử dụng cú pháp thẻ định dạng tùy chỉnh [PROGRAM_LINK: id] để Agent đánh dấu liên kết. Trình phân tích cú pháp ở frontend sẽ biên dịch thẻ này thành các nút bấm HTML có sự kiện onclick="triggerOpenProgram(id)" nhằm điều khiển DOM của website.
Hệ thống Evaluation (Đánh giá) & Guardrails (Hàng rào bảo mật) • Evaluation: • Bộ máy tìm kiếm Offline được kiểm thử bằng các kịch bản kiểm thử tĩnh tự động, so khớp kết quả tìm kiếm với bộ lọc chính xác của hệ thống. • Xây dựng thuật toán fallback offline phòng trường hợp Gemini API gặp lỗi hoặc không có kết nối Internet để đảm bảo hệ thống luôn hoạt động bình thường. • Guardrails (Hàng rào bảo mật & an toàn dữ liệu): • Read-Only SQL Constraints: System Instruction của Agent quy định nghiêm ngặt chỉ được sinh câu lệnh SELECT. Các từ khóa thay đổi dữ liệu như INSERT, UPDATE, DELETE, DROP đều bị chặn triệt để nhằm bảo vệ tính toàn vẹn của cơ sở dữ liệu. • Bảo mật thông tin API Key: API Key của người dùng được lưu trữ cục bộ trong localStorage của trình duyệt người dùng hoặc biến môi trường cục bộ .env, hoàn toàn không gửi về bất kỳ máy chủ trung gian nào.
🏥 TIÊU CHÍ 3: MỨC ĐỘ GIẢI QUYẾT BÀI TOÁN THỰC TẾ (PAIN POINT & SOLUTION)