Cách tạo Chatbot AI tự học tài liệu nội bộ (RAG) bằng Dify và Supabase: hướng dẫn từng bước

Cách tạo Chatbot AI tự học tài liệu nội bộ (RAG) bằng Dify và Supabase: hướng dẫn từng bước
9 Tháng 11, 2026

Cập nhật:

10 phút đọcHướng dẫn

Chatbot AI tự học tài liệu nội bộ (RAG) là gì? Là trợ lý trò chuyện chỉ trả lời dựa trên tài liệu của bạn (bảng giá, quy trình, hướng dẫn, câu hỏi thường gặp): hệ thống chia tài liệu thành đoạn, biến thành vector, lưu trong cơ sở dữ liệu vector, và khi có câu hỏi thì tìm các đoạn liên quan rồi đưa cho mô hình ngôn ngữ trả lời (xem RAG là gì?). Dify cho phép dựng việc này bằng giao diện: tạo "Knowledge" (kho tri thức), nối vào một chatbot hoặc Chatflow; Supabase có thể đóng vai cơ sở dữ liệu vector nhờ tiện ích pgvector. Theo tài liệu Dify (đọc ngày 25/10/2026), tự cài cần tối thiểu 2 nhân CPU và 4 GiB RAM, Docker Compose 2.24.0 trở lên; biến VECTOR_STORE hỗ trợ pgvector kèm các biến PGVECTOR_*. Bài này hướng dẫn: cài Dify, tạo kho tri thức, thử truy xuất, dựng chatbot, tuỳ chọn nối Supabase làm kho vector (cách này chúng tôi chưa tự chạy thật nên nêu rõ phần chưa kiểm chứng), cách kiểm thử chất lượng và các rủi ro. "30 phút" là mục tiêu cho bản đầu tiên nếu bạn đã quen Docker; chúng tôi không hứa điều đó.

Sơ đồ chatbot RAG bằng Dify và Supabase: tài liệu, chia đoạn, nhúng vector, kho vector pgvector trong Supabase hoặc mặc định của Dify, truy xuất, mô hình trả lời có trích dẫn; kiểm thử và bảo mật
Tài liệu, vector, truy xuất, trả lời có nguồn; luôn kiểm thử bằng câu hỏi thật. Sơ đồ: OPCAIOS.

Bước 0: Quyết định phạm vi

  1. Chọn một bộ tài liệu nhỏ, sạch: ví dụ câu hỏi thường gặp, bảng giá, quy trình giao hàng. Đừng bắt đầu bằng cả ổ đĩa.
  2. Loại tài liệu nhạy cảm: hợp đồng, dữ liệu khách, mật khẩu không nên vào kho tri thức của chatbot công khai.
  3. Viết 20 câu hỏi thật khách hay hỏi và đáp án đúng để kiểm thử sau.
  4. Chọn nơi chạy: Dify Cloud (có gói Sandbox miễn phí) hoặc tự cài; xem Dify là gì? về gói giá.

Bước 1: Cài Dify bằng Docker (tự lưu trữ)

Cài Dify tự lưu trữ nghĩa là chạy toàn bộ nền tảng bằng Docker Compose trên máy chủ của bạn. Theo tài liệu Dify (đọc ngày 25/10/2026), máy chủ cần ít nhất 2 nhân CPU, 4 GiB RAM và Docker Compose 2.24.0 trở lên. Ví dụ, một VPS nhỏ đủ để thử bản đầu với bộ 20 câu hỏi mẫu, còn tải thật cần đo thêm. Các lệnh chính:

git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
openssl rand -base64 32   # đặt kết quả làm DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN trong .env
docker compose up -d
docker compose ps

Sau đó mở http://<địa chỉ máy chủ>/install để tạo tài khoản quản trị. Theo tài liệu: giá trị trong docker/.env ghi đè các tệp trong docker/envs/; khi đổi cấu hình dùng docker compose down rồi docker compose up -d; khi nâng cấp phải đọc hướng dẫn của từng bản phát hành và so sánh .env.example với .env. Hãy đặt Dify sau HTTPS và không để cổng dịch vụ nội bộ mở ra Internet (xem Nginx là gì?).

Bước 2: Cấu hình nhà cung cấp mô hình và nhúng

Trong Dify, thêm nhà cung cấp mô hình (OpenAI, Anthropic, Google hoặc mô hình cục bộ qua Ollama) và chọn mô hình nhúng (embedding) cho kho tri thức. Lưu ý chọn mô hình nhúng hỗ trợ tiếng Việt tốt; chúng tôi không có số đo chất lượng tiếng Việt của từng mô hình nên hãy thử trên tài liệu thật. Đổi mô hình nhúng sau này buộc phải lập chỉ mục lại.

Bước 3: Tạo kho tri thức (Knowledge)

Theo tài liệu Dify, có ba hướng: kho tri thức dựng sẵn (nhập dữ liệu để Dify xử lý), kho tuỳ chỉnh qua pipeline, hoặc kết nối kho ngoài qua API. Các bước chung:

  1. Tạo kho tri thức mới và tải tài liệu (PDF, văn bản, trang web...).
  2. Chọn cách chia đoạn và phương pháp lập chỉ mục (chất lượng cao hay tiết kiệm), mô hình nhúng và cách truy xuất. Trang tổng quan mà chúng tôi đọc không giải thích chi tiết các lựa chọn này; hãy đọc các trang con của tài liệu.
  3. Kiểm thử truy xuất: dùng công cụ thử của Dify gõ các câu hỏi và xem đoạn nào được tìm về; sửa tài liệu và cách chia đoạn đến khi 20 câu hỏi mẫu đều tìm đúng nguồn.
  4. Thêm siêu dữ liệu (metadata) để lọc khi cần.
  5. Cập nhật tài liệu định kỳ; kho tri thức cũ làm chatbot trả lời sai.

Bước 4: Dựng chatbot

  1. Tạo ứng dụng Chatbot hoặc Chatflow trong Dify.
  2. Gắn kho tri thức (với Chatflow dùng nút truy xuất tri thức, cho phép phân loại, tra cứu, trích xuất thông tin và chuyển CRM như trợ lý của OPCAIOS).
  3. Viết lời nhắc hệ thống: chỉ trả lời từ tài liệu; nếu không có thông tin thì nói "tôi chưa có thông tin" và gợi ý liên hệ; không bịa giá; giữ giọng thương hiệu.
  4. Bật trích dẫn nguồn nếu có và đặt lời chào, câu hỏi gợi ý.
  5. Thử, rồi xuất bản dạng ứng dụng web hoặc gọi qua API.

Bước 5 (tuỳ chọn): Dùng Supabase làm kho vector

Dùng Supabase làm kho vector nghĩa là để Dify lưu vector trong PostgreSQL của Supabase qua tiện ích pgvector thay vì kho vector mặc định. Dify hỗ trợ VECTOR_STORE=pgvector với các biến theo tài liệu: PGVECTOR_HOST, PGVECTOR_PORT (mặc định 5432), PGVECTOR_USER (mặc định postgres), PGVECTOR_PASSWORD, PGVECTOR_DATABASE (mặc định dify), PGVECTOR_MIN_CONNECTION và PGVECTOR_MAX_CONNECTION. Lưu ý về cách làm:

  1. Bật tiện ích vector trong Supabase (Dashboard, Database, Extensions) hoặc bằng SQL create extension vector with schema extensions; (theo tài liệu Supabase).
  2. Dùng cơ sở dữ liệu và vai trò riêng cho Dify, không dùng tài khoản quản trị của cơ sở dữ liệu sản xuất; để Dify tạo bảng của nó ở một lược đồ hoặc cơ sở dữ liệu riêng.
  3. Chỉnh .env của Dify với các biến trên (và VECTOR_STORE=pgvector), rồi khởi động lại.
  4. Kết nối trực tiếp hay qua pooler: chúng tôi chưa kiểm chứng việc Dify chạy ổn qua pooler chế độ giao dịch của Supabase; hãy thử kết nối trực tiếp trước và theo dõi giới hạn số kết nối.
  5. Theo tài liệu Dify, nếu một kho tri thức đã có chỉ mục, loại chỉ mục đã lưu sẽ ghi đè cài đặt VECTOR_STORE; kho mới mới theo cấu hình mới.
  6. Chiều vector phải khớp mô hình nhúng.

Chúng tôi chưa tự chạy cấu hình Dify trỏ vào Supabase; các bước trên là theo tài liệu hai bên, và có thể cần điều chỉnh khi thực tế. Nếu bạn không cần dùng chung cơ sở dữ liệu, cách đơn giản và ít rủi ro hơn là để Dify dùng kho vector mặc định.

Bước 6: Kiểm thử chất lượng và bảo mật

Kiểm thử Cách làm
Đúng nguồn Chạy 20 câu hỏi mẫu; so với đáp án, ghi tỉ lệ trả lời đúng và có nguồn
Không bịa Hỏi những điều không có trong tài liệu; chatbot phải nói không biết
Tiêm lệnh Thử lời nhắc yêu cầu bỏ qua hướng dẫn; xem phản ứng
Lộ dữ liệu Hỏi thông tin nội bộ không nên công khai
Tải Giới hạn tốc độ để tránh bị lạm dụng chi phí token

Nguyên tắc an toàn: chatbot công khai chỉ nên đọc tài liệu công khai; ứng dụng gọi AI cần giới hạn tốc độ theo người dùng, giữ khoá mô hình ở phía máy chủ và đặt hạn mức chi.

Kinh nghiệm của OPCAIOS

Kinh nghiệm thực tế của chúng tôi là gì? Chúng tôi tự lưu trữ Dify (bản 1.17.1 theo kiểm tra ngày 25/10/2026) và dùng nó làm "Trợ lý cá nhân" trên website: một Chatflow gồm phân loại nhu cầu, tra cứu tri thức, trích xuất thông tin liên hệ và chuyển sang CRM, gọi qua một lớp trung gian có giới hạn tốc độ. Supabase tự lưu trữ của chúng tôi có tiện ích pgvector (bản 0.8.2) và dùng cho tìm kiếm ngữ nghĩa của website, nhưng phần đó chạy bằng mã riêng với một mô hình nhúng đa ngôn ngữ nhỏ, không đi qua Dify. Chúng tôi chưa xác nhận cấu hình kho vector đang dùng của Dify (không đặt biến VECTOR_STORE thủ công theo kiểm tra) và chưa chạy Dify trỏ vào Supabase. Chúng tôi cũng chưa đo tỉ lệ trả lời đúng của trợ lý nên không công bố số liệu.

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

RAG là gì và vì sao cần?

RAG (retrieval-augmented generation) là kỹ thuật cho mô hình ngôn ngữ trả lời dựa trên các đoạn tài liệu do bạn cung cấp, thay vì chỉ dựa vào kiến thức có sẵn của mô hình. Quy trình gồm ba bước. Đầu tiên, tài liệu được chia đoạn và biến thành vector trong kho vector. Tiếp theo, khi có câu hỏi, hệ thống tìm vài đoạn liên quan nhất. Cuối cùng, mô hình như của OpenAI hoặc Anthropic trả lời chỉ từ các đoạn đó và nêu nguồn. Nhờ vậy chatbot giảm bịa thông tin về giá, quy trình hay chính sách của doanh nghiệp, và tài liệu được cập nhật mà không cần huấn luyện lại mô hình. Ví dụ, chatbot trả lời chính sách giao hàng sẽ đọc đúng tệp quy trình giao hàng mới nhất trong kho tri thức của Dify. RAG giảm chứ không loại bỏ hoàn toàn việc bịa, nên vẫn cần kiểm thử.

Dify cần máy chủ thế nào?

Dify tự lưu trữ cần tối thiểu 2 nhân CPU, 4 GiB RAM và Docker Compose 2.24.0 trở lên, theo tài liệu Dify (đọc ngày 25/10/2026). Đó là mức tối thiểu để chạy được, không phải mức đảm bảo cho nhiều người dùng đồng thời; OPCAIOS chưa đo tải tối đa nên không nêu con số về số người dùng. Cách kiểm tra gồm ba việc. Đầu tiên, chạy docker compose ps để xem các dịch vụ đều lên. Tiếp theo, mở trang /install để tạo tài khoản quản trị. Cuối cùng, đặt Dify sau HTTPS qua Nginx và không mở cổng dịch vụ nội bộ ra Internet. Ví dụ, nếu máy chủ còn chạy n8n hoặc cơ sở dữ liệu, hãy cộng thêm RAM cho các dịch vụ đó thay vì chỉ tính riêng Dify.

Có bắt buộc dùng Supabase không?

Không; Dify có kho vector mặc định. Supabase chỉ là tuỳ chọn qua pgvector.

Làm sao biết chatbot trả lời đúng?

Chuẩn bị bộ 20 câu hỏi mẫu có đáp án, thử và ghi tỉ lệ đúng; sửa tài liệu và cách chia đoạn.

Có an toàn cho tài liệu nội bộ không?

Chatbot RAG chỉ an toàn cho tài liệu nội bộ khi bạn kiểm soát truy cập, không công khai ứng dụng nội bộ và hiểu chính sách dữ liệu của nhà cung cấp mô hình. Có ba lớp cần xử lý. Lớp thứ nhất, phạm vi: chatbot công khai chỉ đọc tài liệu công khai, còn hợp đồng, dữ liệu khách và mật khẩu không vào kho tri thức. Lớp thứ hai, mô hình: tài liệu được gửi tới nhà cung cấp mô hình đám mây như OpenAI hoặc Anthropic, nên cần đọc điều khoản dữ liệu, hoặc dùng mô hình cục bộ qua Ollama. Lớp thứ ba, vận hành: giữ khoá mô hình ở phía máy chủ, giới hạn tốc độ theo người dùng và thử tiêm lệnh. Ví dụ, một bảng giá nội bộ chỉ nên nằm trong ứng dụng đặt sau đăng nhập. Muốn học cách dựng chatbot RAG an toàn, xem khoá đào tạo ứng dụng AI của OPCAIOS.

Nguồn: tài liệu Dify (self-host Docker Compose, biến môi trường, knowledge), tài liệu Supabase (pgvector), đọc ngày 25/10/2026; chưa đọc các trang chi tiết về chia đoạn, lập chỉ mục, nút truy xuất tri thức; chưa kiểm chứng cấu hình Dify với Supabase. Kinh nghiệm là của OPCAIOS theo kiểm tra trực tiếp.

Lê Quốc Nghĩa
Người xây dựng OPCAIOS

Để lại bình luận

Email của bạn sẽ không hiển thị công khai. Bình luận sẽ hiển thị sau khi được duyệt.