1. Đặt vấn đề
Khi bệnh viện xây dựng hệ thống AI local để hỏi đáp tài liệu nội bộ, một câu hỏi kỹ thuật quan trọng là: sau khi chuyển tài liệu thành embedding vector, lưu các vector đó ở đâu và tìm kiếm như thế nào? Nếu kho tài liệu nhỏ, có thể tìm kiếm đơn giản. Nhưng khi có hàng nghìn, hàng chục nghìn hoặc hàng triệu đoạn văn bản, cần một hệ thống chuyên xử lý tìm kiếm vector nhanh và hiệu quả. Đây là vai trò của vector database hoặc vector index.
FAISS là một trong những công cụ phổ biến để lưu trữ và tìm kiếm vector, đặc biệt phù hợp với triển khai local. Trong bối cảnh bệnh viện, FAISS có thể là thành phần cốt lõi của hệ thống RAG: giúp tìm nhanh các đoạn tài liệu liên quan đến câu hỏi của người dùng, sau đó đưa các đoạn này cho LLM tạo câu trả lời có căn cứ.
2. Vector database là gì?
Vector database là hệ thống lưu trữ và tìm kiếm các vector. Mỗi vector thường đại diện cho một đoạn văn bản, một câu hỏi, một hình ảnh hoặc một đối tượng dữ liệu. Khi cần tìm nội dung liên quan, hệ thống so sánh vector truy vấn với các vector đã lưu và trả về những vector gần nhất.
Khác với cơ sở dữ liệu quan hệ truyền thống như MySQL hay PostgreSQL, vector database tập trung vào tìm kiếm tương đồng. Nó không chỉ trả lời câu hỏi “bản ghi nào có trường bằng giá trị này?”, mà trả lời câu hỏi “đoạn nào có ý nghĩa gần nhất với truy vấn này?”.
Trong hệ thống AI local bệnh viện, vector database giúp tìm:
- Quy trình liên quan đến câu hỏi.
- Biểu mẫu phù hợp.
- Đoạn văn bản trong quy định.
- Tiêu chí chất lượng liên quan.
- Phản ánh tương tự.
- Tài liệu đào tạo liên quan.
3. FAISS là gì?
FAISS, viết tắt của Facebook AI Similarity Search, là thư viện tìm kiếm vector hiệu quả. FAISS cho phép lưu trữ và tìm kiếm các vector với tốc độ cao. Nó có thể chạy local, phù hợp với hệ thống nội bộ, không bắt buộc phải dùng dịch vụ cloud.
FAISS thường được dùng như một vector index hơn là một hệ quản trị cơ sở dữ liệu đầy đủ. Điều này nghĩa là FAISS rất mạnh trong tìm kiếm vector, nhưng bệnh viện vẫn cần lưu metadata tài liệu ở nơi khác hoặc trong cấu trúc đi kèm, ví dụ file JSON, SQLite, PostgreSQL hoặc một cơ sở dữ liệu ứng dụng.
Trong RAG, FAISS thường đảm nhiệm nhiệm vụ: nhận vector của câu hỏi, tìm các vector tài liệu gần nhất, trả về ID của các chunk liên quan.
4. Vì sao FAISS phù hợp với AI local bệnh viện?
FAISS phù hợp với AI local bệnh viện vì nhiều lý do.
Thứ nhất, FAISS có thể chạy trong hạ tầng nội bộ. Dữ liệu vector và tài liệu không cần gửi lên dịch vụ bên ngoài.
Thứ hai, FAISS có hiệu năng tốt. Nó có thể tìm kiếm nhanh trên số lượng vector lớn nếu được cấu hình đúng.
Thứ ba, FAISS phù hợp với RAG. Nhiều framework hỗ trợ FAISS, dễ tích hợp với Python, embedding model và LLM local.
Thứ tư, FAISS giúp bệnh viện bắt đầu với chi phí thấp. Không cần triển khai ngay một vector database server phức tạp nếu quy mô chưa quá lớn.
Thứ năm, FAISS phù hợp với mô hình thử nghiệm và mở rộng dần. Bệnh viện có thể bắt đầu từ một kho tài liệu nhỏ, sau đó tăng dần số lượng tài liệu.
5. FAISS nằm ở đâu trong kiến trúc RAG?
Một kiến trúc RAG dùng FAISS thường gồm hai quy trình: quy trình tạo chỉ mục và quy trình hỏi đáp.
5.1. Quy trình tạo chỉ mục
Trước hết, bệnh viện thu thập tài liệu: quy trình, quy định, biểu mẫu, hướng dẫn, tiêu chí, báo cáo, văn bản pháp luật. Sau đó hệ thống làm sạch văn bản, chia thành chunk, tạo embedding cho từng chunk và lưu vector vào FAISS. Đồng thời, metadata của từng chunk được lưu lại: tên tài liệu, mã tài liệu, trang, mục, phiên bản, đường dẫn.
5.2. Quy trình hỏi đáp
Khi người dùng hỏi, hệ thống tạo embedding cho câu hỏi. Vector câu hỏi được đưa vào FAISS để tìm các chunk gần nhất. Các chunk này được lấy ra cùng metadata, có thể được reranker sắp xếp lại, sau đó đưa vào prompt cho LLM. LLM tạo câu trả lời dựa trên các đoạn tài liệu đã truy xuất.
Như vậy, FAISS không trực tiếp tạo câu trả lời. FAISS giúp tìm đúng tài liệu. LLM giúp diễn giải tài liệu thành câu trả lời.
6. FAISS khác gì tìm kiếm từ khóa?
Tìm kiếm từ khóa dựa trên chữ xuất hiện trong văn bản. Nếu người dùng hỏi khác từ với tài liệu, có thể không tìm được. FAISS tìm theo vector ngữ nghĩa, nên có thể tìm được nội dung liên quan dù không trùng từ khóa.
Ví dụ:
- Câu hỏi: “Khi bệnh nhân bị ngã thì xử lý thế nào?”
- Tài liệu: “Quy trình báo cáo và xử trí sự cố té ngã người bệnh.”
Tìm kiếm từ khóa có thể phụ thuộc vào từ “ngã” hoặc “té ngã”. FAISS có thể tìm được vì embedding biểu diễn ý nghĩa gần nhau.
Tuy nhiên, tìm kiếm từ khóa vẫn có giá trị, đặc biệt với mã văn bản, số hiệu, tên biểu mẫu, thuật ngữ chính xác. Vì vậy, trong hệ thống nâng cao, bệnh viện có thể dùng hybrid search: kết hợp tìm kiếm từ khóa và vector search.
7. Metadata quan trọng như thế nào?
FAISS lưu vector, nhưng câu trả lời bệnh viện cần nguồn. Vì vậy, metadata rất quan trọng. Mỗi chunk nên có thông tin:
- ID chunk.
- Tên tài liệu.
- Mã tài liệu.
- Loại tài liệu.
- Đơn vị ban hành.
- Ngày ban hành.
- Phiên bản.
- Tình trạng hiệu lực.
- Số trang hoặc mục.
- Đường dẫn file.
- Nội dung chunk.
Nếu không có metadata, hệ thống có thể tìm đúng đoạn nhưng người dùng không biết nguồn ở đâu. Điều này làm giảm độ tin cậy. Trong bệnh viện, câu trả lời không có nguồn thường không đủ để sử dụng trong công việc chính thức.
8. Những lỗi thường gặp khi dùng FAISS
Lỗi thứ nhất là đưa tài liệu kém chất lượng vào chỉ mục. Nếu văn bản bị lỗi font, lỗi OCR hoặc thiếu cấu trúc, FAISS sẽ tìm kém.
Lỗi thứ hai là chia chunk không hợp lý. Chunk quá dài gây nhiễu, chunk quá ngắn mất ngữ cảnh.
Lỗi thứ ba là không cập nhật chỉ mục khi tài liệu thay đổi. Nếu quy trình mới ban hành nhưng FAISS vẫn dùng bản cũ, AI sẽ trả lời sai.
Lỗi thứ tư là không lưu metadata hiệu lực. Hệ thống có thể trả lời dựa trên văn bản đã hết hiệu lực.
Lỗi thứ năm là chỉ dùng vector search mà bỏ qua từ khóa. Với mã văn bản, số hiệu, tên biểu mẫu, tìm kiếm từ khóa đôi khi chính xác hơn.
Lỗi thứ sáu là lấy quá nhiều chunk đưa vào prompt. Điều này làm prompt dài, chậm và có thể làm LLM trả lời lan man.
9. Quản trị FAISS trong bệnh viện
Để dùng FAISS hiệu quả, bệnh viện cần quản trị như một phần của hạ tầng tri thức.
Cần có quy trình cập nhật chỉ mục khi tài liệu thay đổi. Khi quy trình mới được ban hành, hệ thống phải thêm hoặc thay thế chunk tương ứng. Khi tài liệu hết hiệu lực, cần loại khỏi chỉ mục hoặc đánh dấu rõ.
Cần có backup chỉ mục FAISS và metadata. Nếu mất chỉ mục, có thể tạo lại từ tài liệu gốc, nhưng sẽ mất thời gian. Nếu mất metadata, hệ thống mất nguồn trích dẫn.
Cần kiểm tra định kỳ chất lượng truy xuất. Bệnh viện nên có bộ câu hỏi chuẩn và xem FAISS trả về tài liệu nào. Nếu kết quả kém, cần điều chỉnh chunking, embedding model hoặc bổ sung reranker.
Cần phân quyền theo kho tài liệu. Không phải mọi người dùng đều được truy xuất mọi vector. Hệ thống phải lọc tài liệu theo quyền trước hoặc sau khi tìm kiếm, tùy kiến trúc.
10. FAISS có thay thế cơ sở dữ liệu truyền thống không?
FAISS không thay thế MySQL, PostgreSQL, HIS, EMR hay hệ thống quản lý tài liệu. FAISS chỉ giải quyết bài toán tìm kiếm vector. Bệnh viện vẫn cần cơ sở dữ liệu truyền thống để lưu người dùng, phân quyền, lịch sử, metadata, cấu hình, log và dữ liệu nghiệp vụ.
Có thể hình dung:
- MySQL/PostgreSQL lưu dữ liệu có cấu trúc.
- Hệ thống file lưu tài liệu gốc.
- FAISS lưu vector của các chunk.
- LLM tạo câu trả lời.
- API trung gian điều phối, phân quyền và ghi log.
Mỗi thành phần có vai trò riêng.
11. Kết luận
Vector database là thành phần giúp lưu trữ và tìm kiếm vector ngữ nghĩa. FAISS là một công cụ phổ biến, hiệu quả và phù hợp với triển khai AI local trong bệnh viện. Trong hệ thống RAG, FAISS giúp tìm các đoạn tài liệu liên quan đến câu hỏi của người dùng, từ đó giúp LLM trả lời có căn cứ hơn.
Đối với bệnh viện, FAISS đặc biệt hữu ích khi cần khai thác kho quy trình, quy định, biểu mẫu, tiêu chí chất lượng, tài liệu đào tạo và văn bản nội bộ. Tuy nhiên, FAISS chỉ hiệu quả khi tài liệu được làm sạch, chia chunk hợp lý, embedding tốt, metadata đầy đủ, chỉ mục được cập nhật và người dùng được phân quyền đúng.
Một hệ thống AI local bệnh viện muốn đáng tin cậy không thể chỉ có LLM. Nó cần một lớp truy xuất tri thức vững chắc, và FAISS là một trong những lựa chọn thực tế để xây dựng lớp đó.
- Đăng nhập để gửi ý kiến