1. Đặt vấn đề
Trong bệnh viện, AI local không chỉ cần trả lời hay, mà phải trả lời đúng theo tài liệu nội bộ. Nếu người dùng hỏi về quy trình báo cáo sự cố, AI phải dựa trên quy trình của bệnh viện. Nếu hỏi về biểu mẫu, AI phải tìm đúng biểu mẫu đang có hiệu lực. Nếu hỏi về tiêu chí chất lượng, AI phải dựa trên văn bản đúng. Để làm được điều đó, cần lớp truy xuất tri thức.
Lớp truy xuất tri thức là cầu nối giữa kho dữ liệu bệnh viện và model ngôn ngữ. Nó giúp tìm các đoạn tài liệu liên quan đến câu hỏi, sau đó đưa vào prompt để LLM trả lời có căn cứ. Các thành phần quan trọng gồm RAG, FAISS, embedding, reranker và hybrid search.
2. RAG là gì trong kiến trúc bệnh viện?
RAG là phương pháp kết hợp truy xuất tài liệu và sinh câu trả lời. Thay vì để LLM trả lời dựa trên kiến thức chung, hệ thống sẽ tìm tài liệu liên quan trong kho nội bộ rồi yêu cầu LLM trả lời dựa trên tài liệu đó.
Trong bệnh viện, RAG phù hợp vì:
- Tài liệu nội bộ thay đổi thường xuyên.
- Cần trả lời theo quy trình riêng.
- Cần trích dẫn nguồn.
- Cần giảm hallucination.
- Không nên fine-tune model bằng dữ liệu nhạy cảm.
- Cần cập nhật tài liệu nhanh.
RAG biến AI local từ chatbot chung thành trợ lý tra cứu nội bộ.
3. FAISS trong lớp truy xuất
FAISS lưu và tìm kiếm vector. Khi tài liệu được chia thành chunk và tạo embedding, vector của các chunk được lưu trong FAISS. Khi người dùng hỏi, câu hỏi cũng được chuyển thành vector. FAISS tìm những chunk gần nhất về ý nghĩa.
FAISS phù hợp với AI local vì có thể chạy trong hạ tầng nội bộ, không cần gửi dữ liệu ra cloud. Nó nhanh, phổ biến và dễ tích hợp với Python.
Tuy nhiên, FAISS chỉ tìm vector. Nó không tự quản lý đầy đủ metadata, phân quyền, phiên bản tài liệu và trạng thái hiệu lực. Các phần này cần được ứng dụng bên ngoài quản lý.
4. Hybrid search
Vector search rất tốt cho tìm kiếm ngữ nghĩa, nhưng không phải lúc nào cũng đủ. Trong bệnh viện, nhiều truy vấn cần chính xác theo từ khóa, mã văn bản, số biểu mẫu, tên thuốc, tên quy trình hoặc mã tiêu chí. Vì vậy, hybrid search là hướng quan trọng.
Hybrid search kết hợp:
- Tìm kiếm vector theo ý nghĩa.
- Tìm kiếm từ khóa theo chuỗi ký tự.
- Có thể thêm bộ lọc metadata.
- Có thể thêm reranker.
Ví dụ, nếu người dùng hỏi “mẫu BM-QLCL-05”, tìm kiếm từ khóa có thể tốt hơn vector. Nếu hỏi “mẫu dùng khi người bệnh té ngã”, vector search có thể tốt hơn. Hybrid search kết hợp cả hai để tăng độ chính xác.
5. Chunking trong truy xuất tri thức
Chunking là bước chia tài liệu thành các đoạn nhỏ. Đây là bước ảnh hưởng lớn đến chất lượng RAG. Trong bệnh viện, tài liệu thường có cấu trúc: chương, mục, điều, khoản, bước, biểu mẫu, phụ lục. Nên chia theo cấu trúc này thay vì cắt máy móc theo số ký tự.
Một chunk tốt nên:
- Có ý nghĩa tương đối hoàn chỉnh.
- Không quá dài.
- Không quá ngắn.
- Giữ được tiêu đề liên quan.
- Có metadata đầy đủ.
- Không trộn nhiều chủ đề khác nhau.
- Không tách rời điều kiện áp dụng khỏi nội dung chính.
Ví dụ, một bước quy trình nên đi cùng tiêu đề quy trình và vai trò chịu trách nhiệm. Nếu chỉ lấy một câu rời rạc, LLM có thể hiểu sai.
6. Reranking
Sau khi FAISS tìm ra các chunk liên quan, reranker có thể sắp xếp lại. Đây là bước nâng cao nhưng rất hữu ích khi kho tài liệu lớn.
Reranker giúp:
- Loại bỏ chunk nhiễu.
- Chọn đoạn phù hợp hơn với câu hỏi.
- Giảm số lượng tài liệu đưa vào prompt.
- Tăng chất lượng câu trả lời.
- Giảm hallucination do ngữ cảnh sai.
Trong bệnh viện, reranking đặc biệt hữu ích với các tài liệu có thuật ngữ gần nhau, như chất lượng, an toàn người bệnh, sự cố y khoa, phản ánh, cải tiến và kiểm tra giám sát.
7. Bộ lọc metadata
Không phải tài liệu nào cũng nên được truy xuất cho mọi câu hỏi. Lớp truy xuất cần dùng metadata để lọc:
- Theo quyền người dùng.
- Theo phòng ban.
- Theo loại tài liệu.
- Theo tình trạng hiệu lực.
- Theo ngày ban hành.
- Theo cơ sở bệnh viện.
- Theo chuyên khoa.
- Theo mức độ nhạy cảm.
Ví dụ, nếu người dùng chỉ có quyền xem tài liệu công khai nội bộ, hệ thống không được truy xuất báo cáo sự cố nhạy cảm. Nếu có quy trình mới thay thế quy trình cũ, hệ thống nên ưu tiên bản còn hiệu lực.
8. Prompt sau truy xuất
Sau khi tìm tài liệu, hệ thống cần đưa vào prompt theo cấu trúc rõ:
- Câu hỏi người dùng.
- Các đoạn tài liệu liên quan.
- Nguồn của từng đoạn.
- Hướng dẫn model chỉ trả lời dựa trên tài liệu.
- Hướng dẫn không tự suy diễn nếu thiếu thông tin.
- Yêu cầu nêu rõ khi không tìm thấy căn cứ.
- Yêu cầu trích dẫn nguồn hoặc liệt kê tài liệu tham khảo.
Prompt tốt giúp LLM sử dụng tài liệu đúng hơn. Nếu prompt lộn xộn, quá dài hoặc thiếu hướng dẫn, LLM có thể trả lời lan man.
9. Đánh giá chất lượng truy xuất
Bệnh viện cần đánh giá riêng lớp truy xuất, không chỉ đánh giá câu trả lời cuối. Cần có bộ câu hỏi kiểm thử:
- Câu hỏi về quy trình cụ thể.
- Câu hỏi về biểu mẫu.
- Câu hỏi về tiêu chí chất lượng.
- Câu hỏi có từ đồng nghĩa.
- Câu hỏi dùng mã văn bản.
- Câu hỏi cần lọc theo phiên bản.
- Câu hỏi mà hệ thống phải trả lời “không tìm thấy”.
Với mỗi câu hỏi, kiểm tra FAISS/hybrid search trả về tài liệu nào. Nếu truy xuất sai, cần sửa chunking, embedding, metadata hoặc reranker.
10. Kết luận
Lớp truy xuất tri thức là thành phần cốt lõi để AI local bệnh viện trả lời có căn cứ. RAG giúp đưa tài liệu nội bộ vào câu trả lời. FAISS giúp tìm kiếm vector nhanh. Hybrid search kết hợp ngữ nghĩa và từ khóa. Reranker cải thiện độ chính xác. Metadata giúp lọc đúng quyền và đúng tài liệu hiệu lực.
Một hệ thống AI local không có lớp truy xuất tốt sẽ dễ trở thành chatbot trả lời chung chung. Một hệ thống có RAG tốt có thể trở thành trợ lý tri thức nội bộ đáng tin cậy hơn nhiều.
- Đăng nhập để gửi ý kiến