RAGFlow: Xây RAG và AI agent self‑hosted trên tài liệu của bạn
Tóm tắt nhanh:
- RAGFlow là engine RAG mã nguồn mở, self‑hosted, tập trung vào “deep document understanding” để trả lời dựa trên tài liệu thực, hạn chế hallucination.
- Bạn có thể triển khai nhanh bằng Docker, kết nối với bất kỳ LLM provider phổ biến nào (OpenAI, DeepSeek, Gemini, Ollama, vLLM…) và xây chatbot/AI agent dựa trên knowledge base của riêng bạn.
- RAGFlow có giao diện web, workflow agentic dạng graph, hỗ trợ GraphRAG và nhiều tích hợp (S3, Google Drive, Confluence…) – phù hợp để build trợ lý AI cho website, team nội bộ hoặc sản phẩm SaaS.
RAGFlow là một engine Retrieval‑Augmented Generation (RAG) mã nguồn mở, được thiết kế xoay quanh khả năng “deep document understanding” – hiểu bố cục, bảng, hình ảnh, scan, PDF… để trích xuất tri thức có cấu trúc. Nó kết hợp với LLM để trả lời câu hỏi dựa trên đoạn trích dẫn cụ thể trong tài liệu, giúp bạn luôn lần theo được nguồn và giảm đáng kể hallucination.
Khác với nhiều giải pháp SaaS, RAGFlow hướng mạnh vào self‑hosting: bạn cài trên server của mình, toàn bộ tài liệu, embedding, truy vấn đều nằm trong hạ tầng riêng – phù hợp với doanh nghiệp cần bảo mật, tuân thủ quy định hoặc không muốn phụ thuộc vendor.
Kiến trúc và tính năng nổi bật của RAGflow
Ở tầng lưu trữ, RAGFlow dùng Elasticsearch (mặc định) hoặc Infinity để kết hợp vector search và full‑text search, MinIO cho object storage, cùng MySQL/Postgres và Redis cho metadata và cache. Lớp “deep document” (DeepDoc) phân tích layout tài liệu: đoạn văn, heading, bảng, hình ảnh, vị trí trên trang… để tạo chunk có ngữ cảnh tốt hơn cho retrieval.
Về tính năng, RAGFlow hỗ trợ: GraphRAG, Agentic RAG kiểu workflow dạng graph, reranker (BGE/BCE/Jina), text‑to‑SQL, benchmark bộ dữ liệu chuẩn (MS MARCO, TriviaQA, MIRACL), streaming output, health check API, admin UI và nhiều template agent (bao gồm SEO blog writing agent). Điều này khiến nó phù hợp để vừa làm search nội bộ, vừa build AI agent phức tạp (research, tài chính, tư vấn y khoa, dịch thuật nhiều bước…).
Chuẩn bị môi trường trước khi cài đặt
Theo tài liệu chính thức, cấu hình khuyến nghị để chạy RAGFlow ổn định: tối thiểu 4 vCPU, 16 GB RAM, 50 GB disk, Docker từ 24.0.0 trở lên và Docker Compose từ 2.26.1. Nếu bạn định ingest nhiều PDF lớn, nhiều file scan, nên tăng RAM và dung lượng lưu trữ để tránh tắc nghẽn tại bước parsing và indexing.
Một điểm quan trọng: image Docker phát hành chính thức hiện tối ưu cho kiến trúc x86_64, chưa build sẵn cho ARM64 (như Mac mini M‑series); nếu dùng ARM bạn cần build image theo hướng dẫn “build_docker_image”. Với môi trường production, bạn nên dùng ổ SSD, bật swap hợp lý và giám sát các dịch vụ core (Elasticsearch/Infinity, MySQL/Postgres, Redis, MinIO) qua health check hoặc dashboard admin UI.
Cài đặt RAGflow bằng Docker trong vài bước
RAGFlow cung cấp Docker Compose để dựng full stack chỉ với vài lệnh. quy trình cơ bản:
- Clone repo từ GitHub
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
Mã nguồn đầy đủ và tài liệu nằm trong repo này, được phát hành dưới giấy phép Apache‑2.0.
- Điều chỉnh
vm.max_map_countcho Elasticsearch
Elasticsearch yêu cầuvm.max_map_count >= 262144để hoạt động ổn định cho workload search.
sudo sysctl -w vm.max_map_count=262144
Sau đó thêm dòng vm.max_map_count=262144 vào /etc/sysctl.conf để giữ cấu hình này sau khi reboot.
- Chọn edition Docker image
Filedocker/.envcho phép bạn chọn image: bản “full” (~9 GB, kèm embedding models) hoặc “slim” (~2 GB, không kèm embedding – dùng embedding external).
Ví dụ, bản slim ổn cho môi trường tận dụng dịch vụ embedding bên ngoài:
RAGFLOW_IMAGE=infiniflow/ragflow:v0.20.1-slim- Khởi chạy bằng Docker Compose
# CPU cho embedding và DeepDoc
docker compose -f docker-compose.yml up -d
# Hoặc dùng GPU tăng tốc:
# docker compose -f docker-compose-gpu.yml up -d
Sau khi container chạy, bạn có thể kiểm tra log server để chắc chắn mọi thứ đã khởi động xong:
docker logs -f ragflow-server
Khi thấy log thông báo “Running on all addresses (0.0.0.0)” nghĩa là backend đã sẵn sàng.
- Truy cập giao diện web
Mặc định RAGFlow lắng nghe trên cổng 80, nên bạn chỉ cần truy cậphttp://IP_OF_YOUR_MACHINE(không cần gõ port) để mở UI và đăng ký tài khoản đầu tiên.
Thiết lập LLM Provider và khởi Tạo workspace
Sau khi đăng ký và đăng nhập, bạn cần cấu hình LLM provider để RAGFlow có thể sử dụng model sinh câu trả lời. Điều này được khai báo trong file service_conf.yaml.template (hoặc qua UI tùy phiên bản), với tham số user_default_llm và API_KEY tương ứng.
RAGFlow hỗ trợ nhiều vendor như OpenAI, Anthropic, Gemini, Mistral, Ollama, vLLM, Azure OpenAI, Bedrock, cùng các dịch vụ embedding/reranking như BGE, BCE, Jina. Bạn có thể cấu hình nhiều provider song song, chọn model mặc định và gán model khác cho từng agent nếu cần tối ưu chi phí hoặc chất lượng cho từng use‑case.
Tạo knowledge base, nạp tài liệu và test hỏi đáp
Luồng làm việc điển hình với RAGFlow như sau: tạo dataset (knowledge base) → nạp dữ liệu → parsing + chunking → chat hỏi đáp.
- Tạo dataset: Trong UI, bạn tạo một knowledge base/dataset mới, đặt tên theo dự án (ví dụ: “addrom‑docs” hoặc “vnrom‑support”).
- Upload tài liệu: RAGFlow hỗ trợ nhiều định dạng: PDF, DOCX, PPTX, Excel, Markdown, HTML, ảnh scan, email, dữ liệu web…; phiên bản mới còn hỗ trợ đồng bộ dữ liệu từ S3, Google Drive, Confluence, Discord, Notion thông qua module “Data Sources”.
- Parsing và chunking: DeepDoc (và các parser như MinerU, Docling nếu bật) sẽ phân tích layout, bảng, công thức, hình, sau đó chia tài liệu thành chunk tối ưu cho retrieval; bạn có thể xem trực quan map chunk, chỉnh sửa, gắn tag/metadata để tối ưu filter sau này.
Khi dữ liệu đã được index, bạn mở màn hình Chat, chọn dataset vừa tạo, và bắt đầu đặt câu hỏi bằng tiếng Việt hoặc tiếng Anh; RAGFlow hỗ trợ truy vấn đa ngôn ngữ và có thể hiển thị citation đến từng đoạn, bảng, thậm chí ô trong bảng.
Xây dựng AI agent và tích hợp vào website
Điểm mạnh thú vị của RAGFlow là phần “agentic RAG”: bạn xây workflow dưới dạng graph gồm các component như Retrieval, Generate, Keyword, Switch, Invoke, HTTP call… để tạo ra chuỗi bước suy luận phức tạp. Có sẵn nhiều template, ví dụ: translation agent 3 bước (gợi ý bởi Andrew Ng), investment advisor, medical consultant, text‑to‑SQL, deep research agent.
Đối với web developer, hai cách tích hợp phổ biến là:
- Iframe/chat widget: RAGFlow cung cấp iframe trong phần Chat và Agent, cho phép embed trực tiếp UI trợ lý AI vào website chỉ bằng vài dòng HTML – hữu ích cho landing page, trang hỗ trợ khách hàng hoặc portal nội bộ.
- HTTP/Python API: Bạn có thể gọi API để gửi query, nhận câu trả lời, metadata và citation rồi render UI riêng (React/Vue/Next.js) theo phong cách của brand; RAGFlow cũng cung cấp SDK Python và API quản lý dataset, file, chat assistant.
Nếu bạn đang vận hành các site như addrom.com hoặc vnrom.net, một trợ lý RAGFlow có thể trả lời nhanh về tool, firmware, hướng dẫn, chính sách… dựa trên tài liệu riêng, thay vì chỉ redirect người dùng sang bài viết.
Một số lưu ý khi đưa RAGflow lên production
Ở chế độ production, bạn nên chú ý một số điểm:
- Giám sát và health check: Sử dụng endpoint
/v1/system/healthzhoặc dashboard System/Admin UI để theo dõi tình trạng db, Redis, doc engine, storage; nếu dịch vụ nào chuyển sang trạng thái “nok”, bạn có thể xử lý sớm trước khi người dùng gặp lỗi. - Chọn doc engine và scale: Elasticsearch đủ tốt cho đa số use‑case; nếu bạn muốn tận dụng Infinity (document engine riêng của Infiniflow) để tối ưu retrieval, có thể chuyển
DOC_ENGINEsanginfinitytrongdocker/.envvà khởi động lại container (lưu ý sẽ reset dữ liệu nếu xóa volume). - Bảo mật và multi‑tenant: RAGFlow hỗ trợ team management, user management, phân quyền trên dataset/agent, rất phù hợp cho môi trường nhiều team hoặc khách hàng; bạn có thể kết hợp reverse proxy (Nginx, Caddy), HTTPS và firewall để giới hạn truy cập theo IP/tenant.
Vì RAGFlow là mã nguồn mở và có cộng đồng khá active (50k+ GitHub star), bạn có thể theo dõi roadmap, release mới, hoặc tự customize code để fit hơn với kiến trúc hiện tại của bạn.








