Một trợ lý RAG (retrieval-augmented generation) mới trên nền tảng WhatsApp đã chấm dứt tình trạng "ảo giác" bằng cách yêu cầu mọi câu trả lời đều phải đi kèm với một trích dẫn được mã hóa dưới dạng JSON. Khi mô hình không thể chỉ ra một chunk cụ thể, nó sẽ trả về câu: “Tôi không có đủ thông tin để trả lời câu hỏi này,” biến một kẻ nói dối đầy tự tin thành một hệ thống “Tôi không biết” đáng tin cậy.
Tại sao sự tin cậy lại quan trọng trong RAG
Hầu hết các hướng dẫn về RAG đều quá chú trọng vào việc truy xuất (retrieval)—chọn embeddings, chia nhỏ tài liệu thành các chunk, hay xếp hạng lại kết quả (re-ranking). Họ bỏ qua những gì xảy ra sau khi tìm thấy văn bản liên quan. Người dùng sẽ mất niềm tin khi trợ lý đưa ra một câu trả lời khẳng định mà ngữ cảnh được truy xuất thực tế không hề hỗ trợ.
Khoảng cách về sự tự tin
Trong một bản mẫu (prototype) được xây dựng với PostgreSQL và tiện ích mở rộng pgvector, quy trình truy xuất diễn ra rất suôn sẻ. Thách thức thực sự chỉ xuất hiện khi đưa vào vận hành thực tế (production): mô hình ngôn ngữ nghe có vẻ rất chắc chắn ngay cả khi đoạn trích được truy xuất thiếu thông tin cần thiết. Một bản demo có thể che giấu vấn đề, nhưng người dùng thực tế đã bộc lộ khoảng cách giữa việc nghe có vẻ tự tin và việc thực sự chính xác.
Ép buộc trích dẫn bằng JSON
Thay vì cố gắng thuyết phục mô hình bằng các prompt như “chỉ trả lời nếu bạn có ngữ cảnh,” tác giả đã thay đổi định dạng đầu ra. Hệ thống hiện yêu cầu một đối tượng JSON, trong đó mỗi khẳng định đều bao gồm một tham chiếu đến chính xác chunk hỗ trợ khẳng định đó. Nếu mô hình không thể đính kèm trích dẫn, phản hồi sẽ bị từ chối và người dùng sẽ thấy thông báo “Tôi không biết” rõ ràng.
Việc thực thi đã chuyển từ các hướng dẫn bằng ngôn ngữ tự nhiên sang kiểm tra cấu trúc (schema validation). Mô hình vẫn tạo ra văn bản, nhưng mã nguồn xung quanh sẽ kiểm tra xem JSON có khớp với cấu trúc yêu cầu hay không trước khi gửi đến người dùng.
Những gì đã thay đổi
- Việc chia nhỏ (chunking) trở nên thận trọng hơn. Các chunk mơ hồ hoặc quá rộng giờ đây sẽ tạo ra các khẳng định mà không có trích dẫn, từ đó kích hoạt cơ chế dự phòng “Tôi không biết”.
- System prompt được rút gọn. Câu lệnh dài dòng cố gắng kiểm soát hành vi của mô hình đã được thay thế bằng một bộ hướng dẫn ngắn gọn, để schema đảm nhận phần việc nặng nhọc nhất.
- Các lỗi sai trở nên rõ ràng. Khi việc truy xuất trả về tài liệu không liên quan, trợ lý không còn che đậy lỗi bằng một câu trả lời tự tin nhưng sai lệch; thay vào đó, nó thẳng thắn thừa nhận sự không chắc chắn.
Bài học rút ra: Đối với các trợ lý RAG, việc đảm bảo rằng mọi khẳng định đều có thể truy xuất nguồn gốc từ nguồn dữ liệu đã lấy giúp xây dựng niềm tin của người dùng một cách đáng tin cậy hơn là chỉ tập trung cải thiện bước truy xuất. Bằng cách biến các trích dẫn bị thiếu thành thông báo “Tôi không biết” hiển thị rõ ràng, các nhà phát triển cho phép hệ thống thừa nhận giới hạn của mình thay vì bịa đặt câu trả lời.
