Hallucination: rủi ro số một của AI chăm sóc khách hàng

Mô hình ngôn ngữ lớn được huấn luyện để dự đoán token tiếp theo có xác suất cao nhất. Khi không có thông tin, mô hình không “im lặng” mà sinh ra câu trả lời nghe hợp lý nhất. Đó là hallucination: AI tự tin báo giá sai, bịa một chương trình khuyến mãi, hoặc hứa một chính sách bảo hành không tồn tại. Với doanh nghiệp, đây không phải lỗi kỹ thuật nhỏ mà là rủi ro pháp lý và uy tín.

Giải pháp chuẩn là Retrieval-Augmented Generation (RAG): trước khi trả lời, hệ thống truy xuất các đoạn tài liệu liên quan từ kho tri thức của doanh nghiệp và yêu cầu mô hình chỉ trả lời dựa trên đó. Nhưng RAG “cơ bản” (nhúng tài liệu, tìm top-k theo cosine, nhét vào prompt) vẫn hở rất nhiều lỗ. Bài viết này trình bày kiến trúc Enterprise RAG nhiều lớp mà BEEDONI áp dụng.

Lớp 1. Xử lý tài liệu: chunking quyết định chất lượng

Doanh nghiệp tải lên đủ loại tài liệu: bảng giá Excel, brochure PDF, chính sách dạng Word, FAQ trên website. Cắt tài liệu theo số ký tự cố định là cách nhanh nhất để phá hỏng ngữ cảnh: một dòng bảng giá bị tách khỏi tiêu đề cột, một điều khoản bị chia đôi giữa chừng.

  • Structure-aware chunking: tách theo tiêu đề, đoạn văn và hàng bảng; mỗi hàng bảng giá giữ kèm tên cột.
  • Contextual chunk header: mỗi đoạn được gắn tiền tố mô tả nguồn (“Bảng giá dịch vụ niềng răng 2026, mục Mắc cài sứ”) trước khi nhúng.
  • Chồng lấn có kiểm soát (overlap) giữa các đoạn văn xuôi để không mất ý ở ranh giới.
  • Metadata: ngày hiệu lực, chi nhánh áp dụng, mức độ ưu tiên, dùng để lọc trước khi tìm kiếm.

Lớp 2. Hybrid Retrieval: vector và từ khóa bổ sung cho nhau

Tìm kiếm vector (dense retrieval) mạnh với câu hỏi diễn đạt tự nhiên: “răng bị ê buốt khi uống nước lạnh thì làm gì” khớp với tài liệu về “điều trị nhạy cảm ngà”. Nhưng nó yếu với mã sản phẩm, số hiệu căn hộ hay tên riêng hiếm, những thứ khách hỏi hàng ngày. Tìm kiếm từ khóa BM25 (sparse retrieval) thì ngược lại.

BEEDONI kết hợp cả hai. Mô hình nhúng đa ngôn ngữ như BGE-M3 hỗ trợ tốt tiếng Việt và văn bản dài; BM25 chạy trên văn bản đã tách âm tiết tiếng Việt. Hai danh sách kết quả được hợp nhất bằng Reciprocal Rank Fusion (RRF), phương pháp không cần chuẩn hóa điểm số giữa hai hệ thống khác nhau:

text
RRF(d) = Σ  1 / (k + rank_i(d))      với k ≈ 60
         i ∈ {dense, sparse}

Ở tầng lưu trữ, chỉ mục vector dùng cấu trúc đồ thị HNSW (Hierarchical Navigable Small World), cho tìm kiếm láng giềng gần đúng với độ phức tạp xấp xỉ logarit. Bộ lọc metadata (chi nhánh, ngày hiệu lực) được áp dụng trước khi tìm kiếm để không bao giờ trả về bảng giá đã hết hạn.

Lớp 3. Reranking và ngưỡng tin cậy

Bộ truy xuất ban đầu (bi-encoder) nhanh nhưng thô: câu hỏi và tài liệu được nhúng độc lập. Cross-encoder đưa cặp (câu hỏi, đoạn văn) vào cùng một mô hình transformer để chấm điểm liên quan, chính xác hơn nhiều nhưng chậm hơn, nên chỉ áp dụng cho khoảng vài chục ứng viên hàng đầu.

Điểm số reranking còn có vai trò quan trọng hơn: nó là tín hiệu để AI biết mình không biết. Nếu không đoạn nào vượt ngưỡng tin cậy, AI không được phép tự trả lời mà phải nói rõ sẽ chuyển câu hỏi cho nhân viên, đồng thời tạo một yêu cầu xử lý trong hộp thư. Đây là khác biệt cốt lõi giữa chatbot “cố trả lời mọi thứ” và trợ lý AI có trách nhiệm.

Điểm tin cậyHành vi của AI
CaoTrả lời trực tiếp, kèm trích dẫn nội bộ để nhân viên kiểm tra khi cần
Trung bìnhTrả lời thận trọng, xác nhận lại nhu cầu, đề xuất kết nối tư vấn viên
Thấp / không có nguồnKhông trả lời nội dung; chuyển người và ghi nhận câu hỏi để bổ sung tri thức

Lớp 4. Dữ liệu động từ Bee CRM qua Function Calling

Giá khuyến mãi tuần này, lịch trống của bác sĩ chiều mai, căn hộ nào còn hàng: những dữ liệu thay đổi theo giờ không nên nằm trong kho tài liệu tĩnh. Thay vào đó, mô hình được cấp một tập công cụ (tools) có schema chặt chẽ, và gọi công cụ khi cần dữ liệu thời gian thực từ Bee CRM hoặc CRM doanh nghiệp đang dùng.

json
{
  "name": "check_availability",
  "description": "Tra lịch trống theo chi nhánh và dịch vụ",
  "parameters": {
    "type": "object",
    "properties": {
      "branch_id": { "type": "string" },
      "service":   { "type": "string", "enum": ["kham_tong_quat", "nieng_rang", "implant"] },
      "date":      { "type": "string", "format": "date" }
    },
    "required": ["branch_id", "service", "date"]
  }
}

Mọi lệnh gọi công cụ đi qua một lớp policy engine: kiểm tra quyền, giới hạn tần suất, và yêu cầu xác nhận của khách trước các thao tác ghi (tạo lịch hẹn, cập nhật thông tin). AI không bao giờ có quyền truy cập trực tiếp cơ sở dữ liệu.

Lớp 5. Constrained Decoding và Guardrails đầu ra

Khi AI cần trả về dữ liệu có cấu trúc (thông tin lead, tham số đặt lịch), BEEDONI dùng constrained decoding: tại mỗi bước sinh token, các token không hợp lệ theo JSON Schema hoặc ngữ pháp định nghĩa trước bị che (mask) khỏi phân phối xác suất. Kết quả luôn parse được, không còn tình trạng “JSON thiếu dấu ngoặc” làm hỏng luồng đồng bộ CRM.

Với câu trả lời văn bản cho khách, lớp guardrails hậu kiểm thực hiện:

  • Kiểm tra căn cứ (groundedness): mọi con số (giá, diện tích, thời gian bảo hành) trong câu trả lời phải xuất hiện trong nguồn đã truy xuất.
  • Danh sách cam kết cấm: AI không được tự hứa giảm giá, hoàn tiền hay cam kết kết quả điều trị nếu doanh nghiệp không cho phép.
  • Phát hiện prompt injection: chặn các tin nhắn cố tình yêu cầu AI “bỏ qua hướng dẫn trước đó”.
  • Ẩn dữ liệu nhạy cảm (PII redaction) trước khi ghi log phục vụ phân tích.

Lớp 6. Cô lập dữ liệu Multi-tenant

Trên một nền tảng phục vụ nhiều doanh nghiệp, câu hỏi “AI có lỡ dùng bảng giá của công ty khác để trả lời khách của tôi không?” phải có câu trả lời tuyệt đối. Mỗi truy vấn truy xuất đều mang tenant ID bắt buộc ở tầng hạ tầng chứ không chỉ ở tầng ứng dụng; chính sách bảo mật mức hàng (Row-Level Security) đảm bảo kể cả khi có lỗi lập trình, dữ liệu của doanh nghiệp này cũng không thể lọt sang doanh nghiệp khác. Bộ nhớ đệm (cache) và prompt cache cũng được phân vùng theo tenant.

Đánh giá liên tục: không đo thì không cải thiện

Mỗi doanh nghiệp có một bộ câu hỏi kiểm thử (golden set) xây từ hội thoại thực tế. Mỗi khi tài liệu được cập nhật hoặc cấu hình thay đổi, hệ thống chạy lại bộ kiểm thử và đo các chỉ số: Recall@k của bộ truy xuất, độ trung thực (faithfulness) của câu trả lời so với nguồn, và tỷ lệ chuyển người đúng lúc. Những câu hỏi AI chưa trả lời được trở thành danh sách đề xuất bổ sung tri thức cho doanh nghiệp, tạo vòng lặp cải thiện khép kín.

“Một trợ lý AI đáng tin không phải là AI biết mọi thứ, mà là AI biết rõ giới hạn của mình và nói thật khi chưa có câu trả lời.”

Kết luận

Chống hallucination không đến từ một mô hình “thông minh hơn”, mà từ kiến trúc nhiều lớp: tài liệu được xử lý đúng cấu trúc, truy xuất lai, reranking có ngưỡng, dữ liệu động từ CRM, sinh có ràng buộc và hậu kiểm trước khi gửi. Đó là cách BEEDONI giúp doanh nghiệp tự động hóa chăm sóc khách hàng mà vẫn kiểm soát được từng lời AI nói ra.