RAG chỉ đúng khi index phản ánh nguồn hiện tại. Re-embed toàn bộ mỗi lần đổi là quá tốn — cần incremental indexing.
Xử lý thay đổi theo loại:
- Thêm tài liệu mới → chunk, embed, upsert.
- Sửa tài liệu → re-chunk phần đổi, thay các vector cũ (nếu không, đáp án sẽ dẫn nội dung lỗi thời).
- Xóa tài liệu → phải xóa vector tương ứng khỏi index (quên bước này là lỗ rò rỉ dữ liệu đã gỡ — vẫn bị retrieve).
Kỹ thuật:
1. Ổn định ID & dùng hash nội dung — mỗi chunk có id ổn định gắn với source doc; lưu hash nội dung để chỉ re-embed chunk thực sự đổi (change detection), bỏ qua chunk không đổi.
2. Upsert theo doc — khi doc đổi: xóa mọi chunk cũ của doc rồi chèn chunk mới, tránh vector mồ côi.
3. Đồng bộ tăng dần — CDC/webhook/scheduled job kéo delta từ nguồn (CMS, Drive, DB) thay vì quét lại toàn bộ.
4. Metadata thời gian & versioning — gắn updated_at/version để lọc/ưu tiên bản mới; hỗ trợ time-travel khi cần.
5. Reindex nền khi đổi embedding model — bắt buộc re-embed toàn bộ; làm blue/green trên index song song rồi chuyển, tránh downtime.
Kiểm chứng: giám sát độ trễ đồng bộ (nguồn đổi → index cập nhật) và định kỳ đối soát số lượng/So sánh index với nguồn để bắt vector rơi rớt.