Where Does Self-Hosted RAGFlow Store Data?
Self-hosted RAGFlow spreads state across MySQL, Elasticsearch, MinIO, and Redis volumes. All four matter at restore time.
Last updated
RAGFlow's document pipelines need four stores to agree: MySQL for app metadata, Elasticsearch for chunk indexes, MinIO for uploaded files, Redis for task state. The Docker deployment mounts a volume per store, with names set by the compose project. Lose one and the knowledge base looks intact while returning nothing.
Disk planning starts with MinIO and Elasticsearch, the two that grow with every uploaded PDF. Keep source documents outside the volumes so reindexing stays possible. Version upgrades migrate MySQL schemas automatically, but snapshots before upgrading remain the only sane rollback.
Where RAGFlow stores this, by platform
/var/lib/docker/volumes/[project]_mysql-data
MySQL, Elasticsearch, MinIO, and Redis volumes per the compose project. Confirm names in your compose file. Source documents outside volumes make reindexing possible.
Frequently asked questions
What must a RAGFlow backup include?
Snapshot MySQL, Elasticsearch, MinIO, and Redis volumes with the stack down. Documents, chunks, vectors, and files each live in different stores, so any missing piece hollows out knowledge bases.
Can I rebuild the search index without a backup?
Reupload the source documents and let the pipeline rebuild. Chunks and vectors regenerate from originals, though large collections take hours. Keep source files outside Docker for exactly this reason.
Notice an outdated path? Let us know.