1. Đặt vấn đề
FAISS là công cụ tìm kiếm vector rất mạnh trong hệ thống RAG. Tuy nhiên, FAISS không tự đảm bảo kết quả luôn đúng. Nếu embedding không phù hợp, chunking kém, metadata thiếu, tài liệu nhiễu hoặc câu hỏi người dùng mơ hồ, FAISS có thể tìm sai tài liệu. Khi đó, model nhận nguồn sai và trả lời sai.
Nhiều lỗi chatbot RAG thực chất là lỗi retrieval, không phải lỗi model.
2. Dấu hiệu nhận biết
- Người dùng hỏi quy trình A, hệ thống trả nguồn quy trình B.
- Câu trả lời có nguồn nhưng nguồn không liên quan.
- FAISS trả tài liệu cùng từ khóa nhưng sai ngữ cảnh.
- Tài liệu quan trọng không nằm trong top-k.
- Nhiều chunk trùng lặp chiếm kết quả.
- Câu hỏi tiếng Việt không tìm đúng tài liệu.
- Từ viết tắt làm truy xuất sai.
- Tài liệu cũ xuất hiện thay tài liệu mới.
3. Nguyên nhân do embedding model
Embedding model không tốt cho tiếng Việt hoặc lĩnh vực y tế có thể làm vector không phản ánh đúng nghĩa. Nếu embedding model chủ yếu mạnh tiếng Anh, câu hỏi tiếng Việt có thể tìm sai.
Cần chọn embedding model phù hợp tiếng Việt và benchmark bằng tài liệu bệnh viện.
4. Nguyên nhân do chunking
Chunking sai gây retrieval kém:
- Chunk quá nhỏ mất ngữ cảnh.
- Chunk quá lớn chứa nhiều ý không liên quan.
- Cắt giữa bảng.
- Mất tiêu đề mục.
- Mất mã tài liệu.
- Mất phần phạm vi áp dụng.
- Không giữ thông tin phiên bản.
Chunk phải đủ ngữ cảnh để FAISS hiểu nội dung.
5. Nguyên nhân do metadata không được dùng
Nếu FAISS chỉ tìm vector mà không lọc metadata, có thể trả:
- Tài liệu hết hiệu lực.
- Tài liệu sai khoa/phòng.
- Tài liệu sai loại.
- Tài liệu người dùng không có quyền.
- Tài liệu bản nháp.
Metadata filtering rất quan trọng trong bệnh viện.
6. Nguyên nhân do top-k và rerank
Nếu top-k quá thấp, tài liệu đúng có thể không được lấy. Nếu top-k quá cao, đưa nhiều nguồn nhiễu vào prompt. Reranking có thể giúp chọn lại đoạn phù hợp hơn sau khi FAISS tìm sơ bộ.
Cần thử nghiệm top-k phù hợp theo kho tài liệu.
7. Nguyên nhân do tài liệu trùng lặp
Nếu có nhiều bản gần giống nhau, FAISS có thể trả bản cũ hoặc bản nháp. Cần loại trùng, đánh dấu phiên bản và ưu tiên bản hiệu lực.
8. Nguyên nhân do câu hỏi người dùng
Người dùng có thể hỏi:
Cho tôi quy trình này.hoặc dùng từ viết tắt nội bộ. Hệ thống có thể cần:
- Gợi ý làm rõ.
- Mở rộng từ đồng nghĩa.
- Dùng keyword search kết hợp vector search.
- Sử dụng taxonomy/lĩnh vực.
9. Giải pháp cải thiện retrieval
Có thể áp dụng:
- Chọn embedding model tốt hơn.
- Cải thiện chunking.
- Giữ tiêu đề và metadata trong chunk.
- Lọc theo hiệu lực/quyền/lĩnh vực.
- Hybrid search: vector + keyword.
- Reranking.
- Tăng/giảm top-k.
- Loại tài liệu trùng.
- Tạo bộ câu hỏi kiểm thử retrieval.
- Ghi log chunk được truy xuất.
10. Kiểm thử FAISS độc lập với model
Cần test retrieval trước khi gọi model. Với mỗi câu hỏi, xem top 5 chunk FAISS trả về có đúng không. Nếu retrieval sai, model khó trả lời đúng.
Bảng kiểm thử:
| Câu hỏi | Tài liệu đúng | Top 1 đúng? | Top 5 có đúng? | Ghi chú |
|---|
11. Kết luận
FAISS tìm sai tài liệu là lỗi cốt lõi của hệ thống RAG. Nguyên nhân thường nằm ở embedding, chunking, metadata, tài liệu trùng, top-k, thiếu rerank hoặc câu hỏi mơ hồ. Muốn chatbot bệnh viện trả lời đúng, phải kiểm thử và tối ưu retrieval độc lập với model. RAG tốt bắt đầu từ tìm đúng nguồn.
- Đăng nhập để gửi ý kiến