Self-hosted service
infiniflow/ragflow avatar
infiniflow/ragflow

RAGFlow: An Open-Source RAG Engine with Agent Workflows and Deep Document Parsing

RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses reliable RAG with Agent capabilities to create a superior context layer for LLMs.

90,746 stars10,744 forksGoApache-2.0

At a glance

What is it?
RAGFlow combines retrieval-augmented generation with agent capabilities, offering template-based chunking, grounded citations, and support for heterogeneous data sources. This review covers its architecture, setup, limitations, and alternatives.
Who is it for?
Adopt RAGFlow if you need a self-hosted RAG engine with deep document parsing, template-based chunking, and agentic workflows, and you can meet the hardware and Docker requirements. Avoid it if you are on ARM64 without the ability to build custom images, or if you need a lightweight, minimal dependency solution.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What RAGFlow Solves and Who It Is For

RAGFlow addresses a common problem in production RAG systems: raw documents are messy, and naive chunking produces poor retrieval results. The project positions itself as a "context layer" for LLMs, combining retrieval with agent capabilities. It is aimed at developers and enterprises that need to turn complex, unstructured data into reliable, queryable knowledge bases. The README emphasizes "quality in, quality out" through deep document understanding, which suggests a focus on accuracy over speed. If your use case involves scanned documents, complex PDFs, or multi-source data like Confluence and Notion, RAGFlow is designed for that. For simple text files or a quick prototype, it may be overkill.

Core Mechanism: Deep Parsing and Template-Based Chunking

The heart of RAGFlow is its document ingestion pipeline. Instead of relying on generic text splitters, it uses "deep document understanding" to extract knowledge from unstructured data with complicated formats. The README mentions support for MinerU and Docling as parsing methods, which are external libraries for converting PDFs and other formats into structured text. After parsing, the system applies "template-based chunking," which is intelligent and explainable. This means you can choose from predefined chunking templates that respect document structure, such as headings, tables, or code blocks. The result is that chunks are more semantically coherent, which improves retrieval accuracy. The system also supports multiple recall methods paired with fused re-ranking, meaning it can combine different retrieval strategies and then re-rank the results to pick the best matches.

Agent Capabilities and Workflow Orchestration

RAGFlow is not just a static RAG pipeline. The README lists support for agentic workflows and MCP (Model Context Protocol), which allows you to build agents that can call tools and interact with external systems. There is also a Python and JavaScript code executor component, which runs code in a sandboxed environment. This is a significant feature: it enables agents to perform calculations, manipulate data, or generate dynamic responses based on retrieved context. The sandbox requires gVisor, a runtime that isolates the code execution. This adds a layer of security but also a dependency. The system also supports "memory" for AI agents, allowing them to retain context across interactions. These capabilities make RAGFlow suitable for building interactive assistants that can act on the retrieved information, not just answer questions.

Getting Started: Prerequisites and Docker Setup

The README provides clear installation steps. You need at least 4 CPU cores, 16 GB RAM, and 50 GB disk. Docker 24.0.0 or later and Docker Compose v2.26.1 or later are required. Python 3.13 is listed as a prerequisite, though the Docker images likely bundle the runtime. The first step is to ensure the kernel parameter vm.max_map_count is at least 262144. You can check it with `sysctl vm.max_map_count` and set it temporarily with `sudo sysctl -w vm.max_map_count=262144`. To make it permanent, add `vm.max_map_count=262144` to /etc/sysctl.conf. Then you clone the repository, check out a stable tag like v0.27.1, and start the server with `docker compose` from the `docker` directory. The README notes that all Docker images are built for x86 platforms only. If you are on ARM64, you must build a custom image following a separate guide.

Configurations and Customization

RAGFlow allows you to configure the LLM and embedding models. The README mentions support for various models, including DeepSeek v4, Gemini 3 Pro, and OpenAI's GPT-5 series. This suggests a pluggable architecture where you can connect your preferred model provider. The configuration is likely done through environment variables or a configuration file, but the README does not provide specific keys. The `docker/.env` file is mentioned, where you can set the `RAGFLOW_IMAGE` variable to choose a different edition. This implies that the system is designed to be customized for different deployment scenarios. However, the lack of detailed configuration documentation in the README means you will need to consult the official docs for specifics. The project also supports data synchronization from Confluence, S3, Notion, Discord, and Google Drive, which indicates a robust set of connectors for enterprise data sources.

Limitations and Failure Modes

The most obvious limitation is the lack of ARM64 Docker images. If you are on Apple Silicon or an ARM server, you cannot just pull the pre-built image. You must build it yourself, which adds time and complexity. Another limitation is the hardware requirement: 16 GB RAM and 50 GB disk may be prohibitive for small projects or edge deployments. The code executor feature requires gVisor, which is an additional installation step and may not work in all environments. The README also warns that the change to vm.max_map_count is reset on reboot, so if you forget to make it permanent, the system may fail to start after a restart. Finally, the project is complex, with many moving parts: Docker, multiple services, and external dependencies. This means troubleshooting can be difficult for newcomers. The documentation is extensive, but the learning curve is steep.

Alternatives and How They Differ

A common alternative to RAGFlow is a simpler RAG stack built with LangChain or LlamaIndex. These frameworks provide modular components for document loading, splitting, embedding, and retrieval. The key difference is that they do not include a full ingestion pipeline with deep document understanding. You would need to integrate separate libraries like PyMuPDF or Tesseract for OCR. Also, they do not come with a user interface or a pre-built agent runtime. RAGFlow offers an all-in-one solution with a web UI and agent templates, whereas LangChain is a library you use to build your own pipeline. Another alternative is a vector database with built-in RAG features, like Weaviate or Qdrant, but those focus on storage and retrieval, not on document parsing. RAGFlow's advantage is its focus on document quality, which is often the weak point of custom pipelines.

Maintenance and Upgrade Considerations

RAGFlow is under active development, with recent releases v0.27.1 and v0.27.0 in 2026, and a nightly build. This means features are added frequently, but it also implies that the API and configuration may change between versions. The README includes a roadmap and a link to an issue for future plans, so you can track upcoming changes. The project is licensed under Apache-2.0, which is permissive and allows commercial use without restrictions. However, as with any open-source project, you are responsible for maintaining your deployment. Upgrading likely involves pulling new Docker images and checking for breaking changes in the release notes. The documentation is available at ragflow.io/docs, which is a good resource for staying current. Given the rapid release cadence, you should plan for regular upgrades to benefit from security fixes and new features.

Editorial conclusion

Adopt RAGFlow if you need a self-hosted RAG engine with deep document parsing, template-based chunking, and agentic workflows, and you can meet the hardware and Docker requirements. Avoid it if you are on ARM64 without the ability to build custom images, or if you need a lightweight, minimal dependency solution. Before deploying, verify your kernel parameter vm.max_map_count is set correctly, confirm your Docker version meets the minimum, and test the parsing quality on your specific document types, especially scanned PDFs or complex layouts. Check the latest release notes for any changes to supported LLMs and embedding models, as these evolve frequently.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes