LÀM CHỦ RAG ĐỂ XÂY DỰNG CÁC HỆ THỐNG AI THÔNG MINH HƠN, DỰA TRÊN DỮ LIỆU - BÀI 2: NỀN TẢNG CỦA RAG

Để làm chủ Retrieval-Augmented Generation (RAG), bạn cần hiểu sâu những nguyên tắc cơ bản làm nền tảng cho nó.

Bài này cung cấp phần kiến thức lý thuyết và khái niệm mà tất cả các pipeline RAG đều dựa trên đó.


Chúng ta sẽ khám phá:

  • Cách mô hình ngôn ngữ (LLM) hoạt động.
  • Truy xuất thông tin vận hành ra sao.
  • Embeddings là gì và cách chúng giúp AI hiểu văn bản.
  • Vector databases hoạt động như thế nào để lưu trữ và truy xuất dữ liệu hiệu quả.
  • Và cuối cùng, làm thế nào tất cả những mảnh ghép này kết hợp lại để tạo nên RAG pipeline.

2.1 Hiểu về Mô hình Ngôn ngữ

Mô hình ngôn ngữ (Language Models – LMs) là nền tảng của hệ thống RAG.
Trước khi thêm thành phần “retrieval” (truy xuất), bạn cần hiểu cách chúng hoạt động.

Mô hình ngôn ngữ là gì?

Một mô hình ngôn ngữ là một hệ thống học máy được huấn luyện để dự đoán từ tiếp theo trong một chuỗi từ.

Qua việc huấn luyện trên một tập dữ liệu văn bản khổng lồ, mô hình học được:

  • Mẫu cú pháp (syntax patterns)
  • Ngữ nghĩa (semantics)
  • Quan hệ ngữ cảnh (contextual relationships)

👉 Kết quả là mô hình có thể tạo ra văn bản trông tự nhiên, trả lời câu hỏi, tóm tắt thông tin, dịch ngôn ngữ, và thậm chí viết code.

Ví dụ:

  • Khi bạn nhập: “Trí tuệ nhân tạo đang…” → mô hình sẽ dự đoán các từ có khả năng tiếp theo như “thay đổi thế giới”, “phát triển nhanh chóng”, “được ứng dụng trong y tế”.

Mô hình Ngôn ngữ Lớn (LLMs)

Các Large Language Models (LLMs) như GPT, BERT, LLaMA, Claude là những phiên bản mở rộng, huấn luyện trên hàng tỷ (thậm chí hàng nghìn tỷ) tham số.

  • Sức mạnh: Khả năng tạo văn bản mượt mà, chính xác, và đa dạng.
  • Hạn chế:
    • Kiến thức tĩnh (bị giới hạn bởi dữ liệu huấn luyện).
    • Có thể tạo ra hallucinations (ảo tưởng thông tin).
    • Không thể dễ dàng cập nhật tri thức mới.

📌 Đây chính là điểm RAG xuất hiện để khắc phục hạn chế.

Quá trình sinh văn bản

Một LLM tạo ra phản hồi qua quy trình:

  1. Người dùng đưa vào prompt (truy vấn hoặc yêu cầu).
  2. Mô hình xử lý văn bản, biểu diễn nó bằng embedding vector (chúng ta sẽ tìm hiểu ở phần sau).
  3. Mô hình dự đoán từng token kế tiếp dựa trên ngữ cảnh.
  4. Quá trình lặp lại cho đến khi tạo ra văn bản hoàn chỉnh.

Ví dụ:

Prompt: "Viết một câu về AI trong giáo dục."

Output: "AI đang giúp cá nhân hóa trải nghiệm học tập cho sinh viên."

2.2 Truy xuất Thông tin

Thành phần “retrieval” trong RAG được xây dựng dựa trên các nguyên tắc Information Retrieval (IR) – một lĩnh vực nghiên cứu đã tồn tại từ hàng thập kỷ, cốt lõi của các công cụ tìm kiếm như Google.

Truy xuất Thông tin là gì?

Đó là quá trình tìm kiếm dữ liệu liên quan đến một truy vấn trong một tập hợp lớn các tài liệu.

Các bước cơ bản:

  1. Người dùng nhập truy vấn (ví dụ: “triệu chứng thiếu sắt”).
  2. Hệ thống so khớp truy vấn với cơ sở dữ liệu tài liệu.
  3. Các tài liệu liên quan nhất được trả về.

Từ từ khóa đến Semantic Retrieval

  • IR truyền thống: Dựa trên so khớp từ khóa → hệ thống tìm những tài liệu có chứa chính xác từ trong truy vấn.
  • Semantic Retrieval (truy xuất ngữ nghĩa): Dùng embeddings vector để hiểu ngữ nghĩa của từ và câu, thay vì chỉ so khớp chính tả.

Ví dụ:

  • Truy vấn: “bệnh về máu gây mệt mỏi”
  • IR truyền thống: Có thể bỏ lỡ tài liệu về thiếu sắt nếu từ khóa không khớp.
  • Semantic Retrieval: Nhận ra rằng thiếu sắt có liên quan đến “bệnh về máu gây mệt mỏi” và trả về đúng tài liệu.

👉 Đây chính là sức mạnh mà RAG tận dụng.

2.3 Embeddings: Cầu nối giữa Ngữ nghĩa và Số học

Để AI “hiểu” văn bản, chúng ta phải biến đổi ngôn ngữ tự nhiên thành biểu diễn số học mà máy có thể xử lý.

Đây là nơi embeddings xuất hiện.

Embeddings là gì?

  • Embedding là vector số chiều cao đại diện cho một từ, câu, hoặc tài liệu.
  • Vị trí của embedding trong không gian vector mã hóa ý nghĩa của văn bản.

👉 Văn bản có nghĩa tương tự → embeddings gần nhau.

Ví dụ:

  • doctorphysician có embeddings rất gần nhau.
  • “doctor”banana thì cách xa nhau.

Ứng dụng trong RAG

  • Khi người dùng nhập truy vấn, nó được chuyển thành embedding vector.
  • Hệ thống so sánh vector này với embeddings của tài liệu đã lưu.
  • Các tài liệu có độ tương đồng cosine cao nhất sẽ được trả về.

Ví dụ Code với Embeddings (Python + OpenAI API)

from openai import OpenAI

client = OpenAI()

# Văn bản cần nhúng

texts = [

    "Iron deficiency can cause fatigue and weakness.",

    "Vitamin D is important for bone health."

]

# Tạo embeddings

response = client.embeddings.create(

    model="text-embedding-ada-002",

    input=texts

)

for i, emb in enumerate(response.data):

    print(f"Văn bản {i+1} có embedding chiều dài {len(emb.embedding)}")

👉 Kết quả: Mỗi câu được biểu diễn thành một vector 1536 chiều.

2.4 Vector Databases

Với hàng nghìn (hoặc hàng triệu) embeddings, chúng ta cần cách lưu trữ và truy xuất hiệu quả.
Đây là vai trò của Vector Database (Cơ sở dữ liệu vector).

Vector Database là gì?

  • Là một loại cơ sở dữ liệu được tối ưu hóa cho việc lưu trữ và tìm kiếm embeddings.
  • Hỗ trợ tìm kiếm tương tự (similarity search) bằng các thuật toán như:

Ví dụ:

  • Truy vấn: embedding của “bệnh thiếu máu”
  • Vector DB: trả về 5 tài liệu có embeddings gần nhất.

Các Vector DB phổ biến

👉 Trong các chương thực hành, chúng ta sẽ xây dựng pipeline RAG dùng FAISS (miễn phí, mã nguồn mở).

2.5 RAG Pipeline: Tích hợp tất cả lại với nhau

Đến giờ, bạn đã thấy các mảnh ghép:

  • Mô hình ngôn ngữ (LLM): sinh phản hồi.
  • Retriever: tìm tài liệu liên quan.
  • Embeddings: chuyển văn bản thành vector số học.
  • Vector Database: lưu trữ và tìm kiếm dữ liệu.

Quy trình từng bước của RAG

  1. Người dùng nhập query.
  2. Query → embedding.
  3. Embedding được gửi đến vector database.
  4. DB trả về tài liệu liên quan nhất.
  5. Query + tài liệu → được ghép lại thành prompt.
  6. Prompt đưa vào LLM để sinh phản hồi cuối cùng.

👉 Chính sự kết hợp này làm cho RAG mạnh mẽ hơn so với chỉ dùng mô hình ngôn ngữ thuần túy.

2.6 Kết bài:

Bài này đã cung cấp nền tảng để hiểu cách RAG hoạt động từ trong ra ngoài.

  • Mô hình ngôn ngữ có sức mạnh tạo sinh nhưng bị giới hạn tri thức tĩnh.
  • Truy xuất thông tin và embeddings cho phép kết nối mô hình với dữ liệu động.
  • Vector databases là chìa khóa để lưu trữ và tìm kiếm dữ liệu nhanh chóng.
  • Kết hợp tất cả → chúng ta có một RAG pipeline hoàn chỉnh.

Tác giả: Hoàng Thơ - Tổng hợp và biên soạn


BÀI 1 - BÀI 2 - BÀI 3 - BÀI 4 BÀI 5 - BÀI 6 - BÀI 7 - BÀI 8 BÀI 9 - BÀI 10

1 Comments

Post a Comment

Previous Post Next Post