RAG trên pgvector, embedding chạy cục bộ trên CPU
Vì sao vector store nằm trong chính PostgreSQL, hai schema tách quyền, và vì sao nội dung tài liệu không rời hệ thống khi tìm kiếm.
Đồ án AI20K · Mã dự án BO-02
Trợ lý AI trả lời dựa hoàn toàn trên tài liệu chính sách do HR kiểm duyệt. Thiếu căn cứ thì nói không biết, gặp việc nhạy cảm thì chuyển người thật — không suy đoán.
Bắt đầu hỏi →Xây trên nền tảng mã nguồn mở, embedding chạy cục bộ trên CPU — nội dung tài liệu nhân sự không rời khỏi hệ thống khi tìm kiếm
Khác biệt cốt lõi
Khác với một chatbot LLM thông thường, agent này bị ràng buộc vào đúng bộ tài liệu chính sách do HR upload và kiểm duyệt. Mọi câu trả lời truy vết được tới tài liệu, điều/khoản và ngày hiệu lực — không phải “AI nói vậy” mà là “văn bản nào nói vậy”. Không đủ căn cứ thì từ chối; câu hỏi rơi vào vùng nhạy cảm thì nhường lại cho người thật.
Nguyên tắc thiết kế
Năng lực
Chat streaming bằng tiếng Việt tự nhiên. Câu trả lời có căn cứ luôn kèm tên tài liệu, điều/khoản và ngày hiệu lực để nhân viên tự kiểm chứng, thay vì phải tin “AI nói vậy”.
Citation Verifier đối chiếu từng con số — số ngày phép, mức tiền, thời hạn — với nguyên văn tài liệu nguồn. Không khớp thì câu trả lời bị chặn trước khi tới người dùng.
Query Triage gán mỗi câu hỏi vào một nhãn an toàn trước khi trả lời. Câu hỏi gắn dữ liệu cá nhân, khiếu nại hay tranh chấp được dừng ngay và tự động thành ticket giao cho HR.
Mỗi tài liệu gắn phạm vi áp dụng: toàn công ty hoặc từng phòng ban cụ thể. Nhân viên chỉ truy vấn được phần thuộc phạm vi của mình, kể cả qua trích dẫn và cache.
Upload PDF/DOCX bất đồng bộ, tự động bóc tách và chấm chất lượng. Tài liệu nghi ngờ lỗi bóc tách phải qua bước review của HR trước khi được đưa vào phục vụ.
Confidence trung bình, tỷ lệ từ chối, tỷ lệ escalate, chi phí token và audit log bất biến. Admin chỉ xem số liệu tổng hợp, không đọc được nội dung câu hỏi hay ticket.
Luồng xử lý
Query Triage gán câu hỏi vào một trong ba nhãn an toàn. Nhóm dữ liệu cá nhân, khiếu nại và tranh chấp bị chặn ngay tại đây — agent không suy đoán, không có ngoại lệ.
Câu hỏi được embed cục bộ trên CPU rồi tìm trên pgvector, đã lọc sẵn theo phòng ban của người hỏi. Nội dung tài liệu nhân sự không được gửi tới API embedding bên ngoài.
Câu trả lời chỉ được dựng từ các đoạn tài liệu vừa truy xuất. Citation Verifier đối chiếu lại từng con số và từng trích dẫn với nguồn; sai lệch là chặn, không đưa ra ngoài.
Bốn loại phản hồi tách bạch: trả lời có căn cứ, từ chối vì ngoài phạm vi, từ chối vì thiếu tài liệu, hoặc thông báo đã chuyển HR. Không bao giờ trộn suy đoán vào câu từ chối.
Bài toán
Cùng một nhóm câu hỏi về nghỉ phép, bảo hiểm, phúc lợi quay đi quay lại, kéo HR khỏi tuyển dụng và phát triển nhân sự.
Thông tin lẽ ra tra cứu được ngay lại phải hỏi qua người; nhiều người chọn cách đoán hoặc hỏi đồng nghiệp.
Cùng một câu hỏi, mỗi nhân viên HR trả lời một kiểu — tiềm ẩn hiểu sai chính sách và tranh chấp lao động.
Một LLM không có tài liệu nội bộ vẫn trả lời trôi chảy nhưng không truy vết được — rủi ro còn lớn hơn việc không có công cụ nào.
“Agent được thiết kế để tự nhận biết giới hạn của mình và nói ‘tôi không biết’ thay vì bịa — mọi câu trả lời truy vết được tới đúng tài liệu, điều khoản và ngày hiệu lực.”Xem cách đo chất lượng
Hồ sơ dự án
Vì sao vector store nằm trong chính PostgreSQL, hai schema tách quyền, và vì sao nội dung tài liệu không rời hệ thống khi tìm kiếm.
Ba nhãn an toàn, quy tắc dừng ngay với nhóm dữ liệu cá nhân, và cách một câu hỏi nhạy cảm được bàn giao thành ticket cho HR.
Cách từng con số được đối chiếu với nguyên văn nguồn, cùng ngưỡng Recall@5, Faithfulness và Citation accuracy dùng để nghiệm thu.