Nếu bạn từng nghe về RAG (Retrieval Augmented Generation) nhưng cảm thấy khái niệm này còn xa lạ, bài viết này sẽ giúp bạn tiếp cận, hiểu rõ và tự xây dựng một hệ thống RAG agent hoàn chỉnh trên nền tảng n8n mà không cần viết một dòng code nào. Với hướng dẫn từng bước dựa trên một workflow cụ thể, bất kỳ ai, kể cả người mới bắt đầu, đều có thể làm chủ quy trình này.
Nội dung chính
- Khái niệm cơ bản về RAG agent và vector database.
- Tổng quan kiến trúc workflow trên n8n: RAG pipeline và RAG agent.
- Thiết lập vector database với Supabase.
- Xây dựng quy trình RAG pipeline để nạp dữ liệu vào vector database.
- Tạo agent AI có khả năng truy vấn dữ liệu từ bộ nhớ kiến thức.
- Mở rộng tính năng: Tích hợp bộ nhớ trò chuyện (memory) và hướng tới tự động hóa.
- Đúc kết kinh nghiệm và lời khuyên cho người mới bắt đầu.
Hiểu đúng về RAG agent không cần code
RAG agent là gì?
RAG (Retrieval Augmented Generation) là sự kết hợp giữa khả năng tìm kiếm thông tin (retrieval) và tạo sinh ngôn ngữ tự nhiên (generation) của AI. Thay vì chỉ trả lời dựa trên kiến thức được huấn luyện sẵn, một RAG agent có thể chủ động tìm kiếm trong một kho dữ liệu riêng (ví dụ: tài liệu nội bộ, sổ tay quy định), truy xuất những phần liên quan và tổng hợp thành câu trả lời chính xác, phù hợp với ngữ cảnh.
Vector database – Nền tảng cho RAG
Vector database lưu trữ thông tin dưới dạng vector số học (embeddings). Các đoạn văn bản có ý nghĩa tương tự sẽ được đặt gần nhau trong không gian vector. Ví dụ, các câu hỏi về "quy định về gậy golf" và "cách sử dụng gậy driver" sẽ có vị trí gần nhau. Chính nhờ khả năng "hiểu" và so khớp ý nghĩa này, vector database trở thành công cụ truy xuất thông tin lý tưởng cho RAG agent.
Lộ trình xây dựng hệ thống RAG agent trên n8n
Download workflow (n8n): https://romhub.io/n8n/RAG_Agent
Workflow trên được chia thành hai luồng xử lý chính, chạy độc lập nhưng liên kết với nhau về mặt dữ liệu:
- RAG Pipeline (Nạp dữ liệu): Bắt đầu bằng trigger thủ công để tải, xử lý và lưu trữ tài liệu vào vector database.
- RAG Agent (Agent trả lời): Bắt đầu bằng Chat Trigger, tiếp nhận câu hỏi của người dùng và sử dụng dữ liệu trong vector database để trả lời.
Chúng ta sẽ thực hiện toàn bộ trên nền tảng n8n – một công cụ tự động hóa mạnh mẽ, hỗ trợ xây dựng workflow bằng cách kéo-thả trực quan.
1. Thiết lập Vector Database với Supabase
Supabase là một giải pháp mã nguồn mở tuyệt vời, xây dựng trên nền tảng Postgres mạnh mẽ, hỗ trợ cả vector database và lưu trữ dữ liệu quan hệ.
Các bước khởi tạo Supabase:
- Truy cập
supabase.com
, đăng ký tài khoản và tạo một project mới. - Lưu lại mật khẩu database của project.
- Sau khi project khởi tạo xong, vào mục Settings > API, sao chép Project URL và khóa
service_role
secret. - Trên n8n, tạo một credential mới cho Supabase bằng cách dán URL và khóa secret đã sao chép.
Tạo bảng Vector Database:
- Trong Supabase, vào mục SQL Editor, tạo một bảng mới để lưu trữ các vector. Bạn có thể sử dụng đoạn mã SQL mà Supabase cung cấp để tạo bảng
documents
với các trường cần thiết nhưcontent
(nội dung) vàembedding
(vector).
2. Xây dựng RAG Pipeline: Đưa tài liệu vào Vector Database
Để AI agent có thể trả lời các câu hỏi về luật golf, trước hết, chúng ta cần "dạy" cho nó bằng cách nạp file Rules_of_Golf_Simplified.pdf
vào bộ nhớ.
Quy trình chi tiết trên n8n:
Workflow này bắt đầu với một node 'Execute workflow’ (Manual Trigger). Khi bạn nhấn nút thực thi, luồng sau sẽ diễn ra:
-
Tải dữ liệu từ Google Drive: Node Download file được kích hoạt, kết nối với tài khoản Google của bạn và tải về file
Rules_of_Golf_Simplified.pdf
dưới dạng dữ liệu nhị phân (binary data). -
Xử lý và lưu trữ: Dữ liệu nhị phân được chuyển thẳng đến node Supabase Vector Store. Node này được cấu hình ở chế độ Insert và là trung tâm của quy trình nạp liệu. Nó tự động sử dụng hai node "phụ trợ" được kết nối:
- Default Data Loader: Node này nhận dữ liệu nhị phân từ file PDF, tự động đọc và chia nhỏ (chunking) tài liệu thành các đoạn văn bản ngắn hơn.
- Embeddings OpenAI: Mỗi đoạn văn bản sau khi được chia nhỏ sẽ được chuyển qua node này. Nó sử dụng một mô hình của OpenAI (ví dụ:
text-embedding-3-small
) để biến đổi đoạn text thành một vector số học.
-
Hoàn tất: Cuối cùng, node Supabase Vector Store sẽ lưu từng cặp (đoạn văn bản gốc và vector tương ứng) vào bảng
documents
đã tạo trước đó trong Supabase.
Sau khi chạy pipeline này, cơ sở kiến thức về luật golf của bạn đã sẵn sàng.
Tạo AI Agent truy cập và trả lời từ Vector Database
Sau khi dữ liệu đã nằm trong Supabase, chúng ta sẽ xây dựng một agent AI có khả năng nhận câu hỏi, tìm kiếm thông tin và trả lời.
Các bước xây dựng Agent AI:
Luồng này được kích hoạt bởi node Chat, cho phép người dùng tương tác trực tiếp.
-
AI Agent (Bộ não trung tâm): Node Chat sẽ chuyển câu hỏi của người dùng đến node AI Agent. Đây là node điều phối chính, kết nối ba thành phần cốt lõi:
-
Mô hình ngôn ngữ (Language Model): Node OpenAI được kết nối, sử dụng mô hình
gpt-4.1-mini
để suy luận và tạo ra câu trả lời tự nhiên. -
Công cụ truy xuất (Tool): Node Supabase (loại Vector Store) được cấu hình ở chế độ retrieve-as-tool.
- Nó được đặt một mô tả rõ ràng: "Call this tool to look up the rules of golf". Điều này giúp AI Agent hiểu khi nào cần sử dụng công cụ này.
- Khi được gọi, nó sẽ chuyển câu hỏi của người dùng thành vector (sử dụng cùng node Embeddings OpenAI), tìm kiếm trong bảng
documents
và trả về các đoạn nội dung có liên quan nhất.
-
Bộ nhớ (Memory): Node Postgres (loại Postgres Chat Memory) được kết nối để lưu lại lịch sử cuộc trò chuyện. Điều này cho phép agent "nhớ" các câu hỏi và câu trả lời trước đó trong cùng một phiên, giúp các câu trả lời sau này mạch lạc và có ngữ cảnh hơn.
Cách AI Agent hoạt động:
Khi người dùng hỏi: "Tôi được phép tập luyện những gì trong một vòng đấu?", agent sẽ:
- Hiểu rằng câu hỏi này liên quan đến "rules of golf" và quyết định sử dụng công cụ Supabase.
- Chuyển câu hỏi thành vector.
- Dùng vector này để truy vấn trong database Supabase, tìm ra các đoạn văn bản chính xác nói về quy định tập luyện.
- Gửi các đoạn văn bản tìm được cùng với câu hỏi ban đầu cho mô hình
gpt-4.1-mini
. - Mô hình OpenAI sẽ tổng hợp thông tin và đưa ra câu trả lời cuối cùng cho người dùng.
- Toàn bộ cuộc trao đổi được lưu lại bởi node Postgres Memory.
Mở rộng tính năng: Tăng cường trí nhớ và tự động hóa
Một RAG agent thực sự hữu ích khi nó có thể ghi nhớ và luôn được cập nhật.
1. Tích hợp Memory với Postgres
Workflow này đã tích hợp sẵn bộ nhớ qua node Postgres. Bằng cách kết nối Supabase dưới dạng một cơ sở dữ liệu Postgres thông thường (với host, user, port, password từ cài đặt project Supabase), mỗi phiên trò chuyện sẽ được lưu lại. Điều này giúp agent duy trì ngữ cảnh qua nhiều lượt hỏi đáp.
2. Hướng tới tự động hóa quy trình cập nhật
Trong workflow đính kèm, quy trình nạp dữ liệu đang được kích hoạt thủ công bằng node 'Execute workflow’. Đây là cách tuyệt vời để kiểm thử.
Để nâng cấp, bạn có thể thay thế node Manual Trigger bằng các node trigger tự động như:
- Google Drive Trigger: Tự động chạy pipeline mỗi khi có một file mới được tải lên hoặc cập nhật trong một thư mục cụ thể.
- Cron: Lên lịch để pipeline chạy định kỳ (ví dụ: mỗi đêm) để quét và cập nhật dữ liệu.
Bằng cách này, cơ sở kiến thức của agent sẽ luôn được làm mới một cách tự động mà không cần can thiệp thủ công.
Việc xây dựng một RAG agent không cần code đã trở nên hoàn toàn khả thi nhờ các công cụ như n8n, Supabase và OpenAI. Bằng cách kết hợp các node một cách trực quan, bạn có thể tạo ra một hệ thống AI mạnh mẽ để khai thác tri thức độc quyền của doanh nghiệp, tự động hóa việc trả lời câu hỏi và phục vụ khách hàng hiệu quả hơn.
Những điểm cốt lõi cần nhớ:
- Hiểu rõ hai quy trình chính: Nạp dữ liệu (Pipeline) và Trả lời (Agent).
- Nắm vững vai trò của từng node: Trigger, Data Loader, Embedding, Vector Store, AI Agent, Language Model, và Memory.
- Bắt đầu với trigger thủ công: Để kiểm soát và gỡ lỗi dễ dàng, sau đó nâng cấp lên tự động hóa.
- Mô tả công cụ (tool) rõ ràng: Phần mô tả cho công cụ truy xuất của Agent là rất quan trọng để nó hoạt động chính xác.
Chúc bạn thành công trên hành trình xây dựng các giải pháp AI không cần code của riêng mình!
Chia sẻ bởi Nate Herk