Giải mã GenAI Stack

Thiết kế phần mềm truyền thống dựa trên tính xác định (determinism). Bạn gửi một đầu vào, xác thực nó dựa trên một schema, và mong đợi một đầu ra có thể dự đoán được.

Generative AI thay đổi điều này. Các Mô hình Ngôn ngữ Lớn (LLMs) là các công cụ xác suất. Chúng dự đoán văn bản dựa trên xác suất.

Nếu bạn coi LLM như một chiếc hộp ma thuật, các ứng dụng production của bạn sẽ thất bại. Nếu bạn coi nó như một API bên thứ ba không ổn định và không xác định, bạn có thể xây dựng được các hệ thống đáng tin cậy.

Một LLM có những ràng buộc cụ thể mà bạn phải quản lý:

  • Kích thước Payload: Các mô hình có những giới hạn cứng được gọi là cửa sổ ngữ cảnh (context windows). Bạn không thể gửi dữ liệu không giới hạn.
  • Độ trễ (Latency): Việc đọc cơ sở dữ liệu chỉ mất vài mili giây. Việc suy luận (inference) của LLM mất vài giây. Bạn cần các hàng đợi bất đồng bộ (asynchronous queues) hoặc streaming để xử lý việc này.
  • Ảo giác (Hallucinations): Nếu một mô hình thiếu dữ liệu cụ thể, nó sẽ tự tạo ra một câu trả lời nghe có vẻ hợp lý nhưng lại sai.

Để giải quyết vấn đề dữ liệu mà không cần tái huấn luyện (retraining) tốn kém, chúng ta sử dụng Retrieval-Augmented Generation (RAG).

RAG tương đương với việc mang cơ sở dữ liệu của riêng bạn đến với API. Thay vì mong đợi mô hình biết dữ liệu của bạn, backend của bạn sẽ truy xuất ngữ cảnh liên quan và chèn nó vào prompt.

Quy trình làm việc của RAG:

  1. Người dùng gửi một prompt.
  2. Hệ thống của bạn truy vấn một Vector Database.
  3. Hệ thống tìm các đoạn văn bản tương đồng về mặt ngữ nghĩa.
  4. Hệ thống chèn các đoạn văn bản này vào prompt.
  5. LLM xử lý ngữ cảnh có căn cứ (grounded context).

Điều này biến LLM từ một công cụ tạo kiến thức thành một bộ xử lý ngữ cảnh. Nó giúp giảm thiểu sai sót một cách đáng kể.

Để làm cho đầu ra của LLM hữu ích cho các dịch vụ tự động, bạn cần Structured Outputs (Đầu ra có cấu trúc). Bạn không thể sử dụng regex để phân tích văn bản hội thoại cho một microservice. Bạn phải truyền các định nghĩa schema chính xác như JSON. Điều này đảm bảo mô hình tuân theo một bố cục nghiêm ngặt mà mã nguồn của bạn có thể đọc được.

Xây dựng AI cho môi trường production đòi hỏi sự chuyển dịch từ các prompt tuyến tính sang thiết kế hệ thống mạnh mẽ.

Nguồn: https://dev.to/ingit_bhatnagar/de-mystifying-the-genai-stack-from-llms-to-rag-a-systems-perspective-4jp8

Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi