RAGFlow
Retrieval-augmented generation engine that parses documents and answers questions about them.
- Replaces
-
Paid enterprise search and knowledge assistant services, such as Glean.
All open-source alternatives to Glean
- Difficulty
-
Difficulty: Medium
1 service, 3 volume mounts, 6 env values to set, no elevated host access. Heuristic score 3 of 11: medium. The file includes other files, so counts may be low. A source checkout is needed, so the rating is at least medium.
- Stack
Go (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
Apache-2.0(OSI-approved open source)Read from github.com/infiniflow/ragflow/blob/4fd8c43/LICENSE
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/infiniflow/ragflow/blob/4fd8c43/README.md, read on .
- Repository
GitHub stats
- Stars
- 92,649
- Forks
- 11,069
- Open issues and pull requests
- 1,317
- Last push
- 2026-10-22
- Latest release
- v1.0.0-rc2
- Released
- 2026-10-16
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as Apache-2.0.
Compose file
include:
- ./docker-compose-base.yml
# To ensure that the container processes the locally modified `service_conf.yaml.template` instead of the one included in its image, you need to mount the local `service_conf.yaml.template` to the container.
services:
ragflow-cpu:
depends_on:
mysql:
condition: service_healthy
required: false
profiles:
- cpu
image: ${RAGFLOW_IMAGE}
ulimits:
nofile:
soft: 65535
hard: 65535
nproc:
soft: 65535
hard: 65535
# MCP is served in-process by the API server (POST /mcp on the 9380 port).
# Example configuration to start Admin server:
command:
- --enable-adminserver
- --init-superuser
#- --init-model-provider-tables
ports:
- ${SVR_WEB_HTTP_PORT}:80
- ${SVR_WEB_HTTPS_PORT}:443
- ${SVR_HTTP_PORT}:9380
- ${ADMIN_SVR_HTTP_PORT}:9381
volumes:
- ./ragflow-logs:/ragflow/logs
# - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf
# - ./nginx/proxy.conf:/etc/nginx/proxy.conf
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./service_conf.yaml.template:/ragflow/conf/service_conf.yaml.template
- ./entrypoint.sh:/ragflow/entrypoint.sh
# - ${RAGFLOW_SSH_KNOWN_HOSTS:-${HOME}/.ssh/known_hosts}:${SSH_KNOWN_HOSTS:-/etc/ragflow/ssh_known_hosts}:ro
env_file: .env
# Route the Go services' cache/queue backend to the separate Kvrocks service.
# The Python services use the Valkey `redis` service, which the Go deployment
# disables (see the `redis` profile override above). KVROCKS_HOST/KVROCKS_PORT
# are the IN-NETWORK coordinates the Go process uses to reach `kvrocks:6379`; the
# host-published port is KVROCKS_PORT (see docker-compose-base.yml), which CI
# offsets per job and keeps distinct from REDIS_PORT.
environment:
- KVROCKS_HOST=kvrocks
- KVROCKS_PORT=6379
networks:
- ragflow
restart: unless-stopped
# https://docs.docker.com/engine/daemon/prometheus/#create-a-prometheus-configuration
# If you use Docker Desktop, the --add-host flag is optional. This flag ensures that the host's internal IP is exposed to the Prometheus container.
extra_hosts:
- "host.docker.internal:host-gateway"
From the app's own repository: github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml.
Compose file from infiniflow/ragflow, used inside a checkout of that repository (documented setup B).
Install
- Docker with the Compose plugin and git (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.
- Get the source at commit 4fd8c43 (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
git init ragflow cd ragflow git remote add origin https://github.com/infiniflow/ragflow.git git sparse-checkout init --cone git sparse-checkout set docker git fetch --depth 1 --filter=blob:none origin 4fd8c439af2cf31e19731675e27bbb9ccb854bf1 git checkout FETCH_HEAD - Go to the folder the docs use (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
cd docker - The compose file in the checkout: docker/docker-compose.yml (shown here for reading) (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml)
Use the compose file shown above.
- What the compose file check ran with (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
The compose file check ran in a checkout of infiniflow/ragflow at 4fd8c439af2cf31e19731675e27bbb9ccb854bf1 (a sparse checkout: the top-level files and the folder docker), in the folder docker. The README tells the reader to clone the repository, go into the docker folder and run docker compose up.
- Start it (github.com/infiniflow/ragflow/blob/4fd8c43/README.md)
docker compose up -d - Open the app (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml)
Open http://localhost:80. The compose file publishes host port 80 for the ragflow-cpu service. The README tells the reader to enter the IP address of the server in a browser and log in.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- The compose file includes other files. It reads more services from ./docker-compose-base.yml. Those files are not part of this entry, so the compose file does not run on its own. (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./ragflow-logs at /ragflow/logs (ragflow-cpu), ./service_conf.yaml.template at /ragflow/conf/service_conf.yaml.template (ragflow-cpu), ./entrypoint.sh at /ragflow/entrypoint.sh (ragflow-cpu). (github.com/infiniflow/ragflow/blob/4fd8c43/docker/docker-compose.yml, checked 2026-10-22)
Signals
- Open issues and pull requests: 1317
- Last push: 2026-10-22 (0 days before this page was built)
- Latest release: v1.0.0-rc2 on 2026-10-16 (6 days before this page was built)