RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs. It offers a streamlined RAG workflow adaptable to enterprises of any scale. Powered by a converged context engine and pre-built agent templates, RAGFlow enables developers to transform complex data into high-fidelity, production-ready AI systems with exceptional efficiency and precision.
Try our cloud service at https://cloud.ragflow.io.
For local deployment, see Local Deployment.
See the full release notes for more updates.
⭐️ Star our repository to stay up-to-date with exciting new features and improvements! Get instant notifications for new releases! 🌟
Local deployment supports both Docker deployment and launching from source. Docker is suitable for quick evaluation, integration testing, and production deployment, while launching from source is intended for RAGFlow development and debugging. Docker deployment does not require a Go compiler. Launching from source requires the Go version specified in go.mod; frontend development additionally requires Node.js and npm.
[!TIP] If you have not installed Docker on your local machine (Windows, macOS, or Linux), see Install Docker Engine.
vm.max_map_count on the Docker host to at least 262144. This step is usually unnecessary with Infinity:To check the value of
vm.max_map_count:
bash sysctl vm.max_map_countIf you use Elasticsearch and the value is below 262144, reset it:
```bash
In this case, we set it to 262144:
sudo sysctl -w vm.max_map_count=262144 ```
This change will be reset after a system reboot. To ensure your change remains permanent, add or update the
vm.max_map_countvalue in /etc/sysctl.conf accordingly:
bash vm.max_map_count=2621442. Clone the repository:
bash
git clone https://github.com/infiniflow/ragflow.git
3. Check out the release tag and start the server with Docker Compose:
Enter the Docker deployment directory.
bash
cd ragflow/docker
Check out the v1.0.0-rc3 release tag.
bash
git checkout v1.0.0-rc3
Start the RAGFlow services and their dependencies.
bash
docker compose -f docker-compose.yml up -d
With the default MySQL configuration, the image entrypoint runs database migrations before starting Admin, Syncer, Ingestor, API, and other services.
In the RAGFlow open-source 1.0 release, DeepDoc uses CPU inference for layout analysis, OCR, and table recognition.
Use docker ps to check the dependency services. After the dependencies show healthy and the RAGFlow container remains running, use the HTTP endpoint to determine whether RAGFlow is ready. The RAGFlow container itself does not define a Compose healthcheck.
bash
curl -f http://localhost/api/v1/system/healthz
After receiving an HTTP 200 response, open the Web UI. If you changed SVR_WEB_HTTP_PORT, replace the port in the health-check URL accordingly.
If startup fails, inspect the container logs:
bash
docker logs --tail 50 ragflow-cpu
5. In your web browser, enter the IP address of your server and log in to RAGFlow.
With the default settings, you only need to enter
http://IP_OF_YOUR_MACHINE(sans port number), because the default HTTP serving port80can be omitted when using the default configuration.
For details, see llm_api_key_setup.
The show is on!
See the Quickstart guide for details.
Docker deployment uses docker/.env and docker/docker-compose.yml. Configure the image, ports, passwords, document engine, and model image source as described in the Docker configuration guide. For platform support (note that macOS is not currently supported), see the Go Docker image build and platform support guide. To build the Docker image from source, see the Go Docker image build and platform support guide.
For document-engine changes, configuration updates, restarting services, and retaining or removing existing data, follow the Docker configuration guide.
go.mod (currently Go 1.27), Clang 20, LLD 20, CMake ≥ 4.0, and PCRE2 development files. Go services depend on CGO and native static libraries; build.sh sets the required build parameters.bash
git clone https://github.com/infiniflow/ragflow.git
cd ragflow
download_dev_deps.py fetches the native static libraries and the runtime resources — cl100k vocabulary, DeepDoc .ort weights, embedding tokenizer assets):bash
uv run tools/scripts/download_dev_deps.py
This is the local-dev one-stop: after one run the environment is ready, and already-present files are skipped so re-running never re-downloads. The image-facing counterpart deps/download_deps.py fetches the same runtime resources and skips the native .a files — run it only when building the dependency image or in CI, not for local development.
download_dev_deps.py pulls and unpacks pdfium, pdf_oxide, office_oxide, and onnxruntime under ~/ragflow-native-libs, and writes the cl100k vocabulary, DeepDoc models, and embedding tokenizer assets under deps/. It is a Python script; uv run installs its declared dependencies (requests and huggingface-hub) automatically. Skip this step if you have prepared the same resources by other means. When started from the repository root, Go services automatically find internal/rag/res/deepdoc; to start from another directory, set DEEPDOC_MODEL_DIR to its absolute path.
bash
./build.sh --all
vm.max_map_count on the Docker host to at least 262144.bash
sudo sysctl -w vm.max_map_count=262144
docker compose --env-file docker/.env -f docker/docker-compose-base.yml up -d --wait es01 mysql minio nats kvrocks
bash
./bin/ragflow_server --migrate
Terminal 1: start Admin on port 9381.
bash
./bin/ragflow_server --admin
bash
./bin/ragflow_server --ingestor
Terminal 3: start Syncer.
bash
./bin/ragflow_server --syncer
Terminal 4: start API on port 9380.
bash
./bin/ragflow_server --api
The startup modes work as follows:
--migrate: Runs database migrations and exits when complete.--admin: Starts the Admin service for management and initialization operations.--ingestor: Starts the Ingestor service for data ingestion and parsing tasks.--syncer: Starts the Syncer service for external data source synchronization tasks.--api: Starts the API service for the Web UI and SDKs.bash
cd web
npm install
After the services start, confirm that the API is ready:
bash
curl -f http://127.0.0.1:9380/api/v1/system/healthz
An HTTP 200 response indicates that the API is responding. See Launch Service from Source for complete frontend and DeepDoc verification steps.
See Launch Service from Source for details.
See the RAGFlow Roadmap 2026.
RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our Contribution Guidelines first.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|