Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Bài 7. Tạo embedding cho tài liệu

1. Đặt vấn đề

Sau khi tài liệu được làm sạch và chia chunk, cần chuyển mỗi chunk thành vector embedding. Đây là bước biến văn bản thành dạng số để máy tính có thể tìm kiếm theo ý nghĩa. Nếu không có embedding, FAISS không thể tìm các đoạn tài liệu liên quan theo ngữ nghĩa.

Trong bệnh viện, embedding là nền tảng để người dùng hỏi tự nhiên mà vẫn tìm đúng tài liệu. Ví dụ, người dùng hỏi “bệnh nhân bị ngã thì báo cáo thế nào?”, hệ thống cần tìm được tài liệu có cụm “sự cố té ngã người bệnh” dù câu hỏi không dùng đúng từ.

2. Embedding là gì?

Embedding là vector số biểu diễn ý nghĩa của văn bản. Các đoạn văn có ý nghĩa gần nhau sẽ có vector gần nhau trong không gian vector. Khi người dùng hỏi, câu hỏi được chuyển thành vector. FAISS tìm các chunk có vector gần nhất với vector câu hỏi.

Có thể hình dung embedding như cách máy tính “định vị ý nghĩa” của văn bản.

3. Embedding model là gì?

Embedding model là model chuyên chuyển text thành vector. Nó khác với LLM sinh văn bản. Một model sinh văn bản tốt chưa chắc là embedding model tốt.

Tiêu chí chọn embedding model cho bệnh viện:

  • Hiểu tiếng Việt tốt.
  • Hiểu văn bản hành chính và y tế.
  • Tốc độ chấp nhận được.
  • Vector ổn định.
  • Dễ chạy local.
  • Phù hợp với FAISS.
  • Có giấy phép phù hợp.

4. Tạo embedding cho chunk

Quy trình:

  1. Lấy chunk text.
  2. Gửi chunk đến embedding model.
  3. Nhận vector.
  4. Lưu vector vào FAISS.
  5. Lưu metadata của chunk.

Ví dụ chunk:

 
Tài liệu: Quy trình báo cáo sự cố y khoa
Mục: Thời hạn báo cáo
Nội dung: Khoa/phòng phải gửi phiếu báo cáo sự cố về phòng Quản lý chất lượng trong vòng ...
 

Vector của chunk này sẽ giúp tìm khi người dùng hỏi về thời hạn báo cáo sự cố.

5. Tạo embedding cho câu hỏi

Khi người dùng hỏi, câu hỏi cũng phải dùng cùng embedding model để tạo vector. Sau đó vector câu hỏi được so sánh với vector chunk.

Điểm quan trọng: vector tài liệu và vector câu hỏi phải được tạo bằng cùng embedding model. Nếu đổi model, vector cũ và mới không tương thích.

6. Có nên đưa metadata vào text embedding?

Nên đưa một số metadata có ích vào nội dung embedding, đặc biệt là tiêu đề tài liệu và tiêu đề mục. Ví dụ:

 
Tên tài liệu: Quy trình phòng ngừa té ngã người bệnh
Mục: Đánh giá nguy cơ té ngã
Nội dung: ...
 

Điều này giúp model embedding hiểu ngữ cảnh. Nhưng không nên nhồi quá nhiều metadata không liên quan.

7. Batch embedding

Khi có nhiều chunk, nên tạo embedding theo batch để tăng hiệu quả. Tuy nhiên, batch quá lớn có thể làm model chậm hoặc lỗi bộ nhớ. Cần thử theo phần cứng.

Trong bệnh viện có hàng chục nghìn chunk, quá trình embedding có thể chạy nền và cần log tiến độ.

8. Lưu embedding kèm metadata

Vector tự nó không đủ. Cần map vector đến metadata. Ví dụ:

  • Vector index ID 12345 tương ứng chunk ID QT_QLCL_001_chunk_05.
  • Chunk này thuộc tài liệu nào.
  • Nội dung chunk là gì.
  • Người dùng nào được xem.

Nếu mất metadata, FAISS chỉ trả về vector ID nhưng không thể hiển thị nguồn.

9. Kiểm tra embedding bằng truy xuất thử

Sau khi tạo embedding, cần test:

  • Hỏi “té ngã người bệnh” có tìm đúng quy trình té ngã không?
  • Hỏi “mẫu báo cáo sự cố” có tìm đúng biểu mẫu không?
  • Hỏi “quy trình vệ sinh tay” có tìm đúng tài liệu KSNK không?
  • Hỏi “bàn giao người bệnh” có tìm đúng quy trình bàn giao không?

Nếu tìm sai nhiều, cần xem lại embedding model, chunking, metadata hoặc hybrid search.

10. Cập nhật embedding khi tài liệu thay đổi

Nếu một tài liệu thay đổi, cần:

  • Xác định chunk nào thay đổi.
  • Tạo embedding lại cho chunk đó.
  • Cập nhật FAISS.
  • Cập nhật metadata.
  • Đánh dấu bản cũ hết hiệu lực nếu cần.

Không nên để vector cũ tồn tại như tài liệu hiện hành.

11. Kết luận

Embedding là bước chuyển tài liệu bệnh viện thành vector để tìm kiếm ngữ nghĩa. Chất lượng embedding quyết định hệ thống RAG có tìm đúng tài liệu hay không. Bệnh viện cần chọn embedding model tốt cho tiếng Việt, tạo embedding cho chunk có ngữ cảnh, lưu metadata đầy đủ và kiểm tra bằng câu hỏi thực tế. Embedding là nền móng của RAG; nếu embedding yếu, toàn bộ chatbot sẽ trả lời kém dù LLM mạnh.