Hướng dẫn

RAG Là Gì? Retrieval-Augmented Generation Giải Thích Đơn Giản

RAG (retrieval-augmented generation) là cách giúp mô hình AI trả lời câu hỏi bằng chính thông tin của bạn. Khi có người hỏi, ứng dụng của bạn trước hết tìm trong tài liệu các đoạn liên quan nhất, rồi đưa những đoạn đó cùng câu hỏi cho mô hình. Mô hình viết câu trả lời từ đoạn văn đó thay vì chỉ dựa vào những gì nó tình cờ học được trong lúc huấn luyện.

Vì sao RAG quan trọng khi bạn xây dựng với AI

Một mô hình ngôn ngữ lớn biết nhiều về thế giới nói chung, nhưng không biết gì về công việc kinh doanh của bạn: giá cả, chính sách, sách hướng dẫn sản phẩm, các ticket hỗ trợ tuần trước. Nó cũng có một mốc cắt dữ liệu huấn luyện, nên không biết những gì mới xảy ra. Nếu cứ hỏi, nó có thể đưa ra một câu trả lời nghe rất tự tin, hợp lý nhưng sai.

Bạn có ba hướng chính để khắc phục:

Cách làmNó làm gìPhù hợp với
Dán tất cả vào promptGửi toàn bộ tài liệu cùng mỗi câu hỏiLượng văn bản nhỏ — vài trang
RAGTìm trong tài liệu, chỉ gửi phần liên quanBộ tài liệu lớn hoặc thường thay đổi: trung tâm trợ giúp, sách hướng dẫn, ghi chú
Fine-tuningHuấn luyện thêm mô hình trên các ví dụGiọng văn, định dạng và các tác vụ lặp lại — không dùng cho dữ kiện thay đổi

Các mô hình hiện đại chấp nhận prompt dài, nên với một FAQ ngắn thì cách đầu tiên thường đủ. RAG đáng dùng khi bạn có nhiều văn bản hơn mức muốn gửi mỗi lần — vì mỗi từ bạn gửi đều tốn tiền và thời gian (xem cách LLM API tính phí).

Nếu bạn đang xây dựng tính năng “trò chuyện với tài liệu của chúng tôi”, trợ lý hỗ trợ khách hàng hay công cụ tri thức nội bộ, gần như chắc chắn bạn đang xây dựng một dạng RAG nào đó.

Một ví dụ đời thường

Hãy tưởng tượng một bài thi mở sách. Một học sinh phải trả lời từ trí nhớ có thể nhớ sai hoặc nói bừa. Một học sinh được phép lật đúng trang trước, đọc rồi mới trả lời sẽ đáng tin hơn nhiều — miễn là tìm đúng trang.

  • Học sinh là mô hình ngôn ngữ.
  • Cuốn sách giáo khoa là tài liệu của bạn.
  • Lật đúng trang là bước truy xuất (retrieval).
  • Viết câu trả lời từ những trang đó là bước sinh (generation).

RAG là phiên bản mở sách. Và cũng như trong bài thi, chất lượng câu trả lời phụ thuộc rất nhiều vào việc có tìm đúng trang hay không.

RAG hoạt động thế nào, từng bước

Một thiết lập RAG thông thường có hai giai đoạn.

Chuẩn bị tài liệu (làm trước):

  1. Thu thập nguồn — bài viết trợ giúp, PDF, chính sách, dữ liệu sản phẩm.
  2. Chia nhỏ (chunk): tách tài liệu dài thành các phần nhỏ hơn, thường vài đoạn văn mỗi phần, để tìm kiếm chỉ trả về đúng phần liên quan.
  3. Tạo embedding cho mỗi đoạn: gửi đoạn văn đến một mô hình embedding, để biến văn bản thành một embedding — một dãy số dài thể hiện ý nghĩa của nó. Các văn bản nói về điều tương tự sẽ có các dãy số gần nhau.
  4. Lưu trữ các đoạn và embedding trong cơ sở dữ liệu có thể tìm theo độ tương đồng (thường gọi là vector database hoặc vector index).

Trả lời một câu hỏi (làm mỗi lần):

  1. Tạo embedding cho câu hỏi bằng cùng mô hình embedding.
  2. Truy xuất các đoạn có embedding gần nhất với câu hỏi — ví dụ năm đoạn đầu.
  3. Xây dựng prompt: chỉ dẫn, các đoạn đã tìm được và câu hỏi.
  4. Sinh câu trả lời: mô hình viết đáp án dựa trên các đoạn đó, lý tưởng nhất là nêu rõ đã dùng đoạn nào.

Tìm kiếm theo ý nghĩa chính là điều khiến cách này hiệu quả: một câu hỏi về “lấy lại tiền” có thể tìm được đoạn có tiêu đề “Chính sách hoàn tiền” dù hai cụm này không có từ nào giống nhau.

Ví dụ minh họa: trợ lý hỗ trợ của một phòng gym

Giả sử một phòng gym có 40 bài viết trợ giúp và muốn đặt một trợ lý chat trên website. Một hội viên hỏi: “Tôi có thể tạm dừng thẻ tập khi đi công tác không?”

Ứng dụng tạo embedding cho câu hỏi và lấy ra ba đoạn gần nhất. Một trong số đó viết:

Membership freeze: Members on monthly plans can freeze their
membership for up to 2 months per year. Request it at the front
desk or in the app at least 7 days before the freeze starts.

Prompt gửi đến mô hình khi đó trông như sau:

You are the help assistant for Northside Gym.
Answer only from the sources below. If the answer isn't in them,
say you don't know and suggest contacting the front desk.
Mention which source you used.

[Source 1: Membership freeze] Members on monthly plans can freeze...
[Source 2: Cancelling your membership] ...
[Source 3: Guest passes] ...

Question: Can I pause my membership while I'm travelling?

Và mô hình trả lời: “Có — với gói hàng tháng, bạn có thể tạm dừng thẻ tối đa hai tháng mỗi năm. Hãy yêu cầu tại quầy lễ tân hoặc trong ứng dụng ít nhất 7 ngày trước khi bắt đầu (nguồn: Membership freeze).”

Phòng gym không hề huấn luyện lại mô hình. Khi thay đổi chính sách tạm dừng, họ cập nhật bài viết, ứng dụng tạo lại embedding cho đoạn đó, và câu trả lời kế tiếp sẽ phản ánh thay đổi.

Thuật ngữ chính

Thuật ngữÝ nghĩa
LLMMô hình ngôn ngữ lớn — AI viết câu trả lời. Xem LLM là gì.
EmbeddingMột dãy số biểu diễn ý nghĩa của một đoạn văn bản.
Mô hình embeddingMô hình tạo ra embedding. Thường tách biệt với mô hình chat và rẻ hơn nhiều.
ChunkMột phần của tài liệu, có kích thước để có thể được truy xuất riêng.
Vector database / tìm kiếm vectorNơi lưu trữ để tìm các mục có embedding tương tự. Một số cơ sở dữ liệu thông thường cũng hỗ trợ — ví dụ Postgres, qua extension pgvector.
Top-kSố đoạn được truy xuất cho mỗi câu hỏi.
Hybrid searchKết hợp tìm kiếm theo ý nghĩa với tìm kiếm từ khóa thông thường, giúp xử lý các thuật ngữ chính xác như mã sản phẩm.
Context windowLượng văn bản tối đa mà mô hình có thể nhận trong một yêu cầu.
Grounding / trích dẫnGắn câu trả lời với các nguồn cụ thể đã truy xuất và hiển thị chúng.

Những hiểu lầm thường gặp

  • “RAG huấn luyện mô hình trên dữ liệu của tôi.” Không. Mô hình không thay đổi gì; nó chỉ đọc thêm văn bản vào lúc đặt câu hỏi.
  • “RAG nghĩa là không còn ảo giác.” Nó chỉ làm ảo giác ít hơn. Nếu truy xuất bỏ sót đoạn đúng, hoặc câu trả lời không có trong tài liệu, mô hình vẫn có thể đoán. Hãy yêu cầu nó nói “tôi không biết” và thử với những câu hỏi mà bạn đã biết đáp án.
  • “Tôi cần một vector database riêng.” Thường thì không. Với lượng dữ liệu vừa phải, một extension vector trên cơ sở dữ liệu bạn đang có, hoặc thậm chí tìm kiếm từ khóa đơn thuần, có thể là đủ.
  • “Đoạn càng lớn càng tốt.” Quá lớn thì bạn gửi nhiều văn bản không liên quan (tốn thêm chi phí, gây nhiễu); quá nhỏ thì đoạn mất đi ngữ cảnh làm nó có ý nghĩa. Thường phải điều chỉnh.
  • “Cứ tải lên tất cả.” Tài liệu lỗi thời, trùng lặp hoặc mâu thuẫn sẽ cho câu trả lời mâu thuẫn. Làm sạch nguồn thường là cải thiện lớn nhất bạn có thể làm.
  • “Ai cũng xem được mọi tài liệu.” Chỉ đúng nếu bạn xây dựng như vậy. Nếu một số tài liệu chỉ riêng tư với những người dùng nhất định, chính việc tìm kiếm phải lọc theo người đang hỏi — nếu không, trợ lý có thể trích dữ liệu của khách hàng này cho khách hàng khác.

Chi phí thế nào

Một tính năng RAG thường có ba chi phí vận hành: tạo embedding cho tài liệu (nhỏ và chủ yếu chỉ một lần), tạo embedding cho mỗi câu hỏi (rất nhỏ), và lời gọi mô hình ngôn ngữ (chi phí chính, tăng theo số đoạn bạn gửi). Cộng thêm lưu trữ trong cơ sở dữ liệu của bạn. Nhà cung cấp AI tính các chi phí này vào tài khoản của bạn, nên hãy đặt giới hạn chi tiêu ở đó.

Nên hỏi công cụ tạo ứng dụng AI điều gì

  • “Trước khi xây dựng RAG, kiểm tra giúp: nội dung của chúng ta có đủ nhỏ để đưa thẳng vào prompt không?”
  • “Chia các bài trợ giúp thành đoạn vài đoạn văn, giữ tiêu đề và liên kết nguồn của mỗi đoạn, và lưu embedding trong cơ sở dữ liệu của chúng ta.”
  • “Dùng hybrid search — theo ý nghĩa kết hợp với từ khóa — để mã sản phẩm vẫn khớp.”
  • “Yêu cầu mô hình chỉ trả lời từ các nguồn đã truy xuất, nói khi không biết, và hiển thị nguồn dưới mỗi câu trả lời.”
  • “Chỉ tìm trong các tài liệu mà người dùng đã đăng nhập được phép xem.”
  • “Tự động tạo lại embedding cho tài liệu mỗi khi nó được chỉnh sửa.”
  • “Giữ khóa API của nhà cung cấp AI trên máy chủ dưới dạng secret, không bao giờ đặt trong trình duyệt.”
  • “Ghi lại mỗi câu hỏi, các đoạn đã truy xuất và câu trả lời để tôi có thể xem lại những câu trả lời kém.”

RAG trong Mythex

Mythex không có sản phẩm knowledge-base hay RAG làm sẵn. Điều Mythex làm là viết mã cho một hệ thống như vậy bên trong ứng dụng của bạn: bạn mang tài liệu và khóa API của nhà cung cấp AI riêng, lưu dưới dạng secret của dự án, còn agent xây dựng phần truy xuất và chat, dùng cơ sở dữ liệu Postgres của dự án để lưu trữ. Chi phí sử dụng nhà cung cấp AI được tính vào tài khoản nhà cung cấp của bạn, không phải credit Mythex. Tài liệu khuyến nghị bắt đầu với một tính năng AI đơn giản và thêm RAG khi tính năng đó đã chạy ổn — xem xây dựng ứng dụng AI, cùng các hướng dẫn của chúng tôi về xây dựng ứng dụng chatbot AI và thêm tính năng AI vào ứng dụng.

Câu hỏi thường gặp

RAG là gì, nói đơn giản?

RAG (retrieval-augmented generation) là cách giúp mô hình AI trả lời dựa trên thông tin của chính bạn. Trước khi mô hình trả lời, ứng dụng của bạn tìm trong tài liệu các đoạn liên quan nhất đến câu hỏi và đưa chúng vào prompt, nên câu trả lời dựa trên đoạn văn đó thay vì chỉ dựa trên những gì mô hình đã học lúc huấn luyện.

RAG có huấn luyện AI trên dữ liệu của tôi không?

Không. RAG hoàn toàn không thay đổi mô hình. Nó tra cứu đoạn văn liên quan vào đúng lúc có câu hỏi và chuyển cho mô hình cùng với câu hỏi. Khi bạn cập nhật tài liệu, câu trả lời kế tiếp có thể dùng ngay phiên bản mới.

RAG có giống fine-tuning không?

Không. Fine-tuning thay đổi hành vi của mô hình bằng cách huấn luyện thêm trên các ví dụ, chậm hơn và phù hợp hơn cho văn phong hoặc định dạng. RAG cung cấp cho mô hình các dữ kiện để đọc lúc đặt câu hỏi, phù hợp hơn với kiến thức thay đổi thường xuyên hoặc cần trích dẫn chính xác.

RAG có ngăn được ảo giác của AI không?

Nó giảm ảo giác nhưng không loại bỏ hoàn toàn. Nếu tìm kiếm trả về sai đoạn, hoặc câu trả lời không có trong tài liệu của bạn, mô hình vẫn có thể đoán. Ứng dụng RAG tốt sẽ yêu cầu mô hình nói khi nó không biết và hiển thị các nguồn đã dùng.

Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو 简体中文 繁體中文(香港) 繁體中文(台灣)