Kiến trúc RAG là gì? Định nghĩa đầy đủ kèm ví dụ thực tiễn chi tiết
Kiến trúc RAG là tập hợp các thành phần giúp lưu trữ, truy xuất và cung cấp thông tin bên ngoài cho LLM; bài hướng dẫn này phân tích 10 loại kiến trúc, từ RAG cơ bản và RAG lai đến RAG dạng tác nhân và GraphRAG, kèm theo hai ví dụ từng bước.

RAG, viết tắt của retrieval augmented generation (tạo sinh tăng cường truy xuất), là quy trình trong đó các LLM sử dụng thông tin bên ngoài để mở rộng và cải thiện đầu ra của mình. Kiến trúc RAG là tập hợp các thành phần và kết nối giúp RAG trở nên khả thi.
Có nhiều loại RAG khác nhau, và mỗi loại vận hành trên một kiến trúc riêng. Về bản chất, kiến trúc của một hệ thống RAG quyết định cách thức riêng mà thông tin được lưu trữ, truy xuất và cung cấp cho LLM.
Kiến trúc RAG là gì?
Kiến trúc RAG là cấu hình nền tảng gồm các thành phần (cùng các khả năng liên quan) vận hành một hệ thống RAG nhất định. Tất cả các kiến trúc này đều được xây dựng dựa trên một khuôn mẫu cơ bản, thường được gọi là RAG "đơn giản" hay “ngây thơ”.
Dưới đây là tổng quan khái quát về kiến trúc RAG cơ bản:
- Nguồn thông tin: Đây là nơi lưu trữ thông tin bên ngoài. Đó có thể là một chỉ mục tìm kiếm, một cơ sở dữ liệu vector đại diện cho khối lượng lớn thông tin, hoặc một kho tài liệu thô.
- Thành phần truy xuất: Đây là cơ chế dùng để truy vấn nguồn thông tin. Chẳng hạn, một hệ thống RAG có thể sử dụng tìm kiếm từ khóa đơn giản để tìm các đoạn văn bản liên quan, hoặc các truy vấn vector phức tạp hơn để thực hiện tìm kiếm tương đồng.
- Thành phần điều phối: Lớp này là phần của ứng dụng dựa trên LLM chịu trách nhiệm khởi chạy pipeline RAG cho prompt của người dùng, kết hợp với LLM hoặc độc lập. Lớp này cũng tổng hợp thông tin đã truy xuất thành một prompt mở rộng.
Các thành phần của kiến trúc RAG thường được tổ chức thành hai luồng. Luồng nạp dữ liệu tiếp nhận dữ liệu và sắp xếp chúng thành một nguồn thông tin có thể tìm kiếm. Cơ sở dữ liệu vector, trong đó lượng lớn văn bản được chuyển đổi thành kho embedding vector có thể tìm kiếm, là một trong những ứng dụng được sử dụng rộng rãi nhất.
Luồng truy xuất tiếp nhận prompt của người dùng và tạo ra một truy vấn để tìm kiếm trong nguồn thông tin. Sau đó, bộ điều phối bổ sung thông tin đã truy xuất vào ngữ cảnh đầu vào cho LLM. Với các kiến trúc RAG dạng tác nhân và RAG lai, có thể có nhiều luồng truy xuất.
Các loại kiến trúc RAG
Sẽ dễ gây hiểu lầm nếu xem RAG như những kiến trúc hoàn toàn tách biệt. Hầu hết các kỹ sư sẽ áp dụng cách tiếp cận mô-đun, triển khai các thành phần riêng biệt để phù hợp với từng trường hợp sử dụng cụ thể. Dù có thể vạch ra những ranh giới tương đối, cần lưu ý rằng các mô hình kiến trúc có sự chồng chéo đáng kể.
1. RAG cơ bản
RAG cơ bản, còn gọi là RAG “ngây thơ” hay “đơn giản”, là khuôn mẫu kiến trúc cho các loại RAG khác.
Quy trình nền tảng khá đơn giản: người dùng nhập prompt, bộ điều phối xác định xem có cần thông tin bên ngoài hay không (độc lập hoặc kết hợp với LLM), rồi soạn và gửi truy vấn truy xuất tương ứng.
Nguồn thông tin bên ngoài thường là cơ sở dữ liệu vector, nhưng cũng có thể là cơ sở dữ liệu SQL, API web, đồ thị tri thức, hoặc thậm chí là một kho tài liệu “thô”. Thông tin bổ sung này sau đó được thêm vào ngữ cảnh đầu vào của LLM.
Ngoài truy vấn SQL và API, có hai nhóm phương pháp truy xuất chính:
- Tìm kiếm từ vựng (tìm kiếm từ khóa): Đây là một dạng RAG đơn giản, trong đó các từ khóa được trích xuất từ truy vấn của người dùng và đối chiếu với các đoạn văn bản chứa những từ khóa đó. Trong các pipeline hiện đại, bộ điều phối có thể thực hiện việc này bằng một truy vấn gọi là truy vấn vector thưa, vốn không nắm bắt được ý nghĩa.
- Tìm kiếm vector dày đặc (tìm kiếm ngữ nghĩa): Các embedding vector dày đặc nắm bắt được ý nghĩa. Bộ điều phối có thể truy vấn cơ sở dữ liệu vector dày đặc theo cách cho phép nắm bắt ý nghĩa của cả prompt người dùng lẫn thông tin nguồn.
Việc sử dụng bộ nhớ cũng là một phần quan trọng của kiến trúc RAG. Điều này đề cập đến cách LLM sử dụng ngữ cảnh từ các cuộc trò chuyện trước đó để xây dựng truy vấn truy xuất, qua đó gắn truy vấn với bối cảnh rộng hơn của một cuộc thảo luận (hoặc nhiều cuộc thảo luận). RAG hội thoại là tiêu chuẩn đối với hầu hết các chatbot, dù một số trường hợp sử dụng, chẳng hạn như phản hồi phiếu hỗ trợ, có thể dùng RAG một câu hỏi.
2. RAG lai
RAG lai kết hợp hai loại truy xuất khác nhau, thường là truy xuất theo từ khóa và truy xuất ngữ nghĩa. Tìm kiếm từ khóa tìm các thuật ngữ trùng khớp, còn tìm kiếm dựa trên vector tìm các đoạn văn có ý nghĩa liên quan.
Các hình thức truy xuất khác, chẳng hạn như duyệt đồ thị tri thức hoặc truy vấn cơ sở dữ liệu SQL, cũng có thể được sử dụng. Quá trình này thường được dẫn dắt bởi logic định tuyến, dưới dạng các quy tắc được lập trình sẵn hoặc việc mô hình phân loại câu hỏi (dù nhiều pipeline cũng có thể chạy đồng thời).
Bộ điều phối hợp nhất các kết quả và có thể xếp hạng lại chúng trước khi chuyển cho LLM. Xếp hạng lại là quá trình gán điểm mức độ liên quan cho các đoạn đã truy xuất để LLM ưu tiên những thông tin phù hợp nhất.
3. RAG thích ứng
Trong RAG thích ứng, một thành phần định tuyến sẽ chọn chiến lược truy xuất dựa trên yêu cầu của prompt người dùng, sau đó bộ điều phối thực thi quy trình làm việc đã chọn.
Trong khung ban đầu (Adaptive-RAG), một mô hình nhỏ hơn đóng vai trò bộ phân loại và lựa chọn giữa không truy xuất, truy xuất một bước hoặc truy xuất nhiều bước. Hiện nay, một số kiến trúc sử dụng mô hình tạo sinh hoặc các phương pháp heuristic dựa trên quy tắc để thay thế.
Đây là một kiến trúc phổ biến vì nó phân bổ năng lực xử lý dựa trên độ phức tạp và yêu cầu của prompt, giảm bớt các bước truy xuất không cần thiết đối với những prompt đơn giản hơn. Kiến trúc này thường thấy ở các trợ lý xử lý nhiều loại câu hỏi.
4. RAG hiệu chỉnh (CRAG)
RAG hiệu chỉnh đánh giá thông tin đã truy xuất trước khi thêm vào ngữ cảnh đầu vào của LLM. Một bộ đánh giá truy xuất sẽ xác định xem thông tin đã truy xuất có liên quan và hữu ích hay không. Đặc điểm kiến trúc riêng biệt là giai đoạn đánh giá và hiệu chỉnh tường minh trước khi tạo câu trả lời.
Nếu thông tin được xác định là chưa đầy đủ hoặc không phù hợp với prompt, các yêu cầu bổ sung sẽ được kích hoạt. Những yêu cầu này có thể sử dụng các phương pháp truy xuất khác với phương pháp dùng cho yêu cầu ban đầu, chẳng hạn như tìm kiếm web hoặc duyệt đồ thị tri thức.
RAG hiệu chỉnh phổ biến trong những lĩnh vực đề cao độ chính xác, như y khoa và luật. Tuy nhiên, kiến trúc này đòi hỏi một nguồn thông tin bổ sung có thể bổ trợ cho các đoạn văn được truy xuất ban đầu.
5. Self-RAG
Trong Self-RAG, mô hình có thể khởi tạo yêu cầu sau khi nhận ngữ cảnh đầu vào ban đầu. Các câu trả lời được tạo ra sẽ được đánh giá dựa trên bằng chứng đã truy xuất bằng các token phản tư, và các yêu cầu tiếp theo được gửi qua bộ điều phối khi cần. Ngược lại, LLM cũng có thể quyết định rằng hoàn toàn không cần truy xuất.
Kiến trúc này khác với RAG hiệu chỉnh ở chỗ LLM tự đánh giá đầu ra của chính mình, xác định xem có cần truy xuất hay không và văn bản đã truy xuất có hữu ích hay không, đồng thời giám sát câu trả lời của chính mình và điều chỉnh khi cần. Trong khi đó, RAG hiệu chỉnh đánh giá chất lượng thông tin đã truy xuất trước khi tạo câu trả lời.
Kiến trúc này đặc biệt hữu ích cho các prompt phức tạp theo kiểu nghiên cứu chuyên sâu. Vì tích hợp việc đánh giá mức độ liên quan (của thông tin đã truy xuất) vào quá trình tạo câu trả lời, đây là lựa chọn tốt cho những prompt đòi hỏi câu trả lời dựa trên bằng chứng.
6. RAG dạng tác nhân
RAG dạng tác nhân là bất kỳ hình thức RAG nào được thực thi trong bối cảnh một nền tảng tác nhân. Mô hình sử dụng khả năng suy luận của mình để xác định loại thông tin cần thiết và lựa chọn trong số các phương án truy xuất sẵn có.
Việc truy xuất có thể được kích hoạt nhiều lần tùy theo nhu cầu, và mô hình có thể chỉ định các tác nhân cho những truy vấn phức tạp hơn. Ví dụ, một LLM có thể yêu cầu tra cứu cơ sở dữ liệu để xác định một nhà cung cấp, kích hoạt tìm kiếm tài liệu để tìm các hợp đồng liên quan, rồi kết thúc bằng một lượt tìm kiếm web để xác minh thông tin liên hệ từ các nguồn công khai.
RAG dạng tác nhân là cách triển khai kiến trúc chủ đạo trong các chatbot phổ biến như Perplexity, ChatGPT, Claude, v.v. Vì các nền tảng này cung cấp cho mô hình cốt lõi quyền truy cập vào nhiều công cụ và pipeline RAG, mô hình có thể chọn hình thức truy xuất phù hợp nhất với từng prompt.
7. RAG đa phương thức
RAG đa phương thức truy xuất ngữ cảnh trên nhiều loại phương tiện khác nhau. Đây là một hình thức RAG quan trọng vì nó giúp LLM tiếp cận những thông tin vốn không thể truy cập được, chẳng hạn như biểu đồ và bản ghi âm.
Kiến trúc nền tảng cũng giống như ở bất kỳ hệ thống nào khác. Ví dụ, một pipeline lập chỉ mục có thể chuẩn bị hình ảnh cho việc tìm kiếm bằng cách chuyển đổi chúng trực tiếp thành embedding. Sau đó, một hệ thống RAG dạng tác nhân có thể truy xuất những hình ảnh này cùng với văn bản có liên quan về mặt ngữ nghĩa và đưa vào một mô hình thị giác-ngôn ngữ để xử lý kép.
8. GraphRAG
GraphRAG sử dụng đồ thị tri thức cùng với tìm kiếm vector để truy xuất thông tin về các thực thể. Thông thường, bộ điều phối tìm các thực thể khởi đầu có liên quan, còn gọi là các nút, bằng cách trích xuất từ khóa hoặc đôi khi bằng một lượt tìm kiếm vector sơ bộ. Một bộ truy xuất đồ thị sẽ duyệt đồ thị tri thức để xây dựng ngữ cảnh rộng hơn.
Ví dụ, khi nhận được yêu cầu phân tích chi tiết một danh mục sản phẩm, LLM có thể kích hoạt tìm kiếm vector để xác định các thực thể cụ thể (sản phẩm). Sau đó, bộ điều phối sẽ kích hoạt tìm kiếm trên đồ thị tri thức để tìm các thực thể liên quan, chẳng hạn như nhà cung cấp, địa điểm bán lẻ, đánh giá, v.v.
9. RAG phân nhánh
Trong khi kiến trúc RAG lai có khả năng sử dụng các phương pháp truy xuất khác nhau, thì RAG phân nhánh là quá trình chạy nhiều truy vấn, gọi là các nhánh, cùng một lúc. Mỗi nhánh có thể truy vấn một nguồn thông tin riêng, hoặc các nhánh có thể đồng thời truy vấn cùng một nguồn với các truy vấn hoặc bộ lọc khác nhau. Kiến trúc RAG dạng tác nhân thường sử dụng RAG phân nhánh.
10. HyDE (Hypothetical Document Embeddings – embedding tài liệu giả định)
HyDE là một hình thức RAG sáng tạo, trong đó LLM tạo ra một tài liệu văn bản giả định, hình dung một câu trả lời tối ưu có thể trông như thế nào. “Tài liệu giả định” này sau đó được dùng để tạo truy vấn nhằm truy xuất chính xác hơn. Dù kiến thức liên quan không được thể hiện trong các tham số của LLM, lập luận ở đây là một đoạn văn giống câu trả lời có thể khớp với các tài liệu liên quan tốt hơn so với một câu hỏi ngắn hay một prompt mơ hồ.
Ví dụ về kiến trúc RAG đơn giản: Cơ sở dữ liệu vector
RAG cơ bản là nền tảng cho các loại kiến trúc phức tạp hơn. Trong trường hợp một hệ thống RAG đơn giản sử dụng cơ sở dữ liệu vector, tài liệu nguồn được chia thành các phần nhỏ hơn (chunk) và chuyển đổi thành embedding dày đặc. Khi người dùng nhập prompt, bộ điều phối tạo một truy vấn, mã hóa truy vấn đó và truy vấn cơ sở dữ liệu để tìm các đoạn văn liên quan.
Dưới đây là phân tích từng bước của quy trình:
- Chuyển đổi lượng lớn văn bản thành vector bằng một pipeline nạp dữ liệu tự động và một mô hình embedding như BERT.
- Ứng dụng cơ sở dữ liệu sắp xếp, lập chỉ mục và lưu trữ các vector để tìm kiếm nhanh.
- Người dùng nhập prompt vào một chatbot (chẳng hạn như Perplexity).
- Bộ điều phối của ứng dụng mã hóa prompt (bằng một mô hình embedding) để truy xuất thông tin liên quan từ cơ sở dữ liệu vector.
- Cơ sở dữ liệu vector trả về các chunk liên quan, bộ điều phối thêm chúng vào ngữ cảnh đầu vào (“prompt lớn”) rồi đưa vào LLM.
- LLM sử dụng ngữ cảnh bổ sung để tạo câu trả lời dựa trên kiến thức nội tại của mình (được lưu trong các trọng số tham số).
Ví dụ về kiến trúc RAG nâng cao: RAG dạng tác nhân
RAG dạng tác nhân là kiến trúc nền tảng của các hệ thống RAG trong một nền tảng tác nhân. Các luồng RAG dạng tác nhân thường phức tạp vì các tác nhân AI có thể gọi những công cụ và pipeline khác nhau tùy theo bản chất của prompt, đồng thời triển khai nhiều tác nhân nếu cần.
Dưới đây là một ví dụ thực tế về quy trình này:
- Người dùng nhập một câu hỏi phức tạp đòi hỏi nghiên cứu chuyên sâu về một chủ đề. Trong ví dụ này, giả sử prompt là “Đưa ra dự báo lợi nhuận của công ty trong sáu tháng tới, có xét đến các diễn biến địa chính trị lớn.”
- LLM suy luận rằng cần kết hợp nhiều truy vấn RAG trên các loại nội dung khác nhau.
- Ba tác nhân khác nhau được triển khai cho (a) tìm kiếm vector, (b) đối chiếu với nguồn web (web grounding) và (c) tìm kiếm hình ảnh (đa phương thức).
- Các tác nhân tìm kiếm thông tin liên quan, chẳng hạn như tin tức và dữ liệu tài chính nội bộ, thông qua bộ điều phối bằng các công cụ truy xuất sẵn có.
- LLM so sánh các kết quả đã truy xuất với câu hỏi nghiên cứu của từng tác nhân và xếp hạng chúng theo mức độ liên quan.
- LLM đánh giá thông tin và kích hoạt các lượt tìm kiếm bổ sung thông qua từng tác nhân ở những chỗ còn thiếu thông tin.
- Khi đã truy xuất đủ thông tin, LLM tạo các dự báo theo kịch bản dựa trên số liệu tài chính hiện có (được truy xuất từ tài liệu nội bộ) và gọi công cụ tính toán để dự phóng lợi nhuận cho từng kịch bản.
- LLM tạo câu trả lời cuối cùng bằng thông tin đã truy xuất và các phép tính, đồng thời trích dẫn nguồn khi cần.
Tương lai của RAG sẽ ra sao?
Những đổi mới hiện nay tập trung vào việc tăng chiều sâu và tốc độ cho các kiến trúc RAG hiện tại, cải thiện độ chính xác của việc truy xuất đa phương tiện và xây dựng các hệ thống được thiết kế để xử lý thông tin cập nhật từng phút.
Dưới đây là ba xu hướng đang định hình hướng nghiên cứu hiện nay:
- Nghiên cứu chuyên sâu trên nhiều nguồn: Đây là kiến trúc RAG có khả năng lập kế hoạch tìm kiếm, chạy nhiều nhánh trên các nguồn khác biệt, đánh giá bằng chứng đã truy xuất và tự tối ưu hóa các câu trả lời được tạo ra. RAG dạng tác nhân có khả năng thực hiện tất cả các tác vụ này đang ngày càng nhanh hơn và tiết kiệm chi phí hơn.
- Ứng dụng đa phương thức: Các pipeline truy xuất ngày càng xử lý tốt hơn hình ảnh và video. Chúng ngày càng có khả năng xác định chính xác các loại thông tin cụ thể trong dữ liệu đa phương thức phức tạp, chẳng hạn như video dài và sơ đồ nâng cao.
- Neo câu trả lời vào thông tin liên tục thay đổi: Các ứng dụng dựa trên LLM có thể khai thác các nguồn thông tin trực tiếp (chẳng hạn như nguồn cấp video và cảm biến) để cung cấp ngữ cảnh đầu vào. Các hệ thống cũng có thể tạo ra những mạng lưới thông tin đa chiều, chẳng hạn như với GraphRAG, để diễn giải dữ liệu này.
RAG là nền tảng cho cách các ứng dụng dựa trên LLM vận hành. Công nghệ này giúp nhiều đối tượng người dùng khác nhau, từ người tiêu dùng thông thường đến các doanh nghiệp hoạt động trong lĩnh vực chuyên môn, khắc phục các vấn đề liên quan đến ảo giác, dữ liệu huấn luyện chưa đầy đủ và việc thiếu khả năng tiếp cận kiến thức nội bộ chuyên biệt.
Đó là lý do vì sao các hệ thống RAG và kiến trúc nền tảng của chúng là một trong những lĩnh vực nghiên cứu AI phát triển nhanh nhất và thú vị nhất.