
Ngừng trả về văn bản thuần túy trong RAG: Sử dụng Hợp đồng Dữ liệu (Typed Answer Contract) để triệt tiêu ảo giác AI
Bài viết đi sâu vào kỹ thuật xây dựng hệ thống RAG doanh nghiệp bằng cách thay thế việc trả về văn bản tự do bằng các cấu trúc dữ liệu có kiểu (Typed Schema). Phương pháp này giúp kiểm soát chặt chẽ đầu ra của LLM, giảm thiểu ảo giác, hỗ trợ trích dẫn nguồn và cho phép pipeline tự động hóa quy trình kiểm chứng dữ liệu một cách chính xác.
Giới thiệu
Trong chuỗi bài viết về "Enterprise Document Intelligence", chúng ta tập trung vào khối xây dựng quan trọng nhất: Generation (Tạo sinh). Đây là phần cuối cùng trong quy trình RAG (Retrieval-Augmented Generation) gồm: phân tích tài liệu, phân tích câu hỏi, truy xuất và tạo sinh. Bài viết này sẽ hướng dẫn bạn cách thiết lập một "hợp đồng" dữ liệu (typed answer contract) để bắt mô hình AI phải tuân thủ, thay vì để nó tự do "sáng tạo" dẫn đến ảo giác (hallucination).
1. Tại sao mô hình lại ảo giác?
Ảo giác không phải là một lỗi cần vá, mà là bản chất của các mô hình ngôn ngữ lớn (LLM). Chúng dự đoán token tiếp theo dựa trên xác suất, không phải tra cứu dữ liệu. Khi đối mặt với tài liệu doanh nghiệp (thường chỉ xuất hiện một lần hoặc chưa bao giờ được huấn luyện), LLM sẽ tự tin đưa ra các câu trả lời trôi chảy nhưng sai lệch.
Cách giải quyết không phải là yêu cầu mô hình "đừng nói dối" trong prompt, mà là kiểm soát thực thi (controlled execution). Chúng ta cần ép mô hình trả về một đối tượng có cấu trúc (structured object) thay vì một chuỗi văn bản tự do.
2. Thiết kế Hợp đồng Dữ liệu (Typed Answer Contract)
Thay vì yêu cầu "một câu trả lời", chúng ta yêu cầu một schema cụ thể. Mỗi trường trong schema là một câu hỏi mà pipeline đặt ra cho mô hình.
2.1. Các kiểu dữ liệu cơ bản (Typed Values)
Thay vì trả về chuỗi "USD 1,200 per claim", hãy yêu cầu một object Amount:
class Amount(BaseModel):
value: float
currency: str
unit: str | None = None
Các kiểu dữ liệu khác bao gồm DateValue (ISO + original), TableValue (headers + rows), và bool cho các câu hỏi xác nhận. Việc này giúp mã nguồn phía sau không bao giờ phải xử lý lại chuỗi văn bản.
2.2. Trích dẫn đa điểm (Multi-span Citations)
Một câu trả lời thực tế thường cần bằng chứng từ nhiều đoạn văn không liên tục. Chúng ta sử dụng Span để định nghĩa phạm vi dòng trong tài liệu:
class Span(BaseModel):
line_start: int
line_end: int
quote: str | None = None
2.3. Tự đánh giá và phản hồi Pipeline (Self-assessment & Feedback)
Mỗi câu trả lời nên kế thừa từ AnswerBase để cung cấp tín hiệu cho pipeline:
confidence: Độ tự tin của mô hình.caveats: Các lưu ý (ví dụ: dữ liệu mâu thuẫn).extraction_method: Phương pháp trích xuất (verbatim, computed, inferred, na).complete_answer_found: Tín hiệu cho biết câu trả lời đã đầy đủ hay chưa.
class AnswerBase(BaseModel):
extraction_method: Literal['verbatim', 'computed', 'inferred', 'na']
confidence: float
caveats: list[str] = []
answer_found: bool
complete_answer_found: bool
# ... các trường khác như context_completeness_weak, conflicting_evidence
2.4. Tính hoàn chỉnh chương trình (Programmatic Completeness)
Đây là tín hiệu mạnh nhất. Pipeline sẽ tự tính toán xem câu trả lời có bị cắt cụt hay không bằng cách kiểm tra trang tiếp theo của tài liệu (overlap page). Nếu trang tiếp theo là một tiêu đề mục mới, câu trả lời đã đầy đủ. Nếu là nội dung tiếp nối, câu trả lời bị cắt cụt và pipeline sẽ tự động kích hoạt truy xuất lại.
3. Thực thi hợp đồng
Sử dụng Pydantic kết hợp với các API structured output (như responses.parse của OpenAI hoặc các thư viện như Outlines), chúng ta ép buộc mô hình phải trả về JSON đúng schema. Nếu mô hình không tuân thủ, yêu cầu sẽ bị từ chối hoặc báo lỗi ngay lập tức.

4. Kết luận
Việc chuyển đổi từ văn bản thuần túy sang các hợp đồng dữ liệu có kiểu giúp hệ thống RAG trở nên:
- Có thể kiểm chứng (Auditable): Mọi con số đều có nguồn gốc.
- Có thể lập trình (Programmatic): Dữ liệu trả về có thể đưa thẳng vào SQL.
- Giảm thiểu ảo giác: Mô hình không còn "chỗ trống" để tự bịa đặt thông tin vì mọi trường đều phải khớp với schema được định nghĩa.
Đây là bước đi tiên quyết để xây dựng các hệ thống AI doanh nghiệp đáng tin cậy.
Do you like this post?
Upvote to push this post higher on the community feed
