RAGFlow 1.0: What's New and How to Upgrade from 0.x

RAGFlow 1.0: What's New and How to Upgrade from 0.x

RAGFlow 1.0 shipped on November 6, 2026, after three release candidates. It isn't a normal major version. The team rewrote the whole backend in Go, swapped out parts of the stack, and made the upgrade from 0.x a one-way trip. The migration guide says so plainly: "The v0.27.2 to v1.0.0-rc1 migration is irreversible."

That's fine, as long as you know it before you click anything. Here's what changed, what to check, and the upgrade path that leaves you a way back.

What's New in 1.0

According to the v1.0.0 release notes:

  • A Go rewrite. RAGFlow says Docker images are about 10 times smaller, startup is about 10 times faster, and concurrency is about 100 times higher. Those are the project's own numbers, so measure yours.
  • Agentic Chat. A new chat mode that answers in several steps, retrieving more evidence and calling tools until it decides it has enough. It replaces the old Low, Medium, High and Ultra thinking levels.
  • Better chat history. It now stores the prompts, token usage and execution time for each answer, which helps a lot when you're tuning costs.
  • Unified parsers. The 12 built-in document parsers now share one code path with the ingestion pipeline parsers.
  • arm64 images, so it runs on ARM servers too.

What Changed Under the Hood

This is the part that matters for the upgrade. The stack around RAGFlow changed too:

Job0.x1.0
Message queueRedisNATS
Cache and checkpointsRedisKvrocks
Metadata databaseMySQLMySQL (migrated on first start)
CLIPythonRewritten in Go

The old Redis data doesn't come along. The guide is explicit: don't mount the 0.27.2 Redis volume into any 1.0 service, because its data isn't compatible with Kvrocks or NATS. Your documents, datasets and search index do carry over.

Before You Upgrade

Check these first, because some of them are deal-breakers:

  • Your version. The route is fixed: 0.20.0 → 0.22.1 → 0.25.6 → 0.26.4 → 0.27.2 → 1.0.0-rc1 → 1.0.0. If you're below 0.27.2, you have intermediate stops to make first, testing at each one.
  • Old API aliases are gone. Anything calling deprecated HTTP API aliases will break. The Python SDK isn't affected.
  • Features that didn't make it yet. The migration guide lists the local sandbox and the old Team/Me permission behavior as not supported in this release. DeepDoc runs on CPU only. If you rely on any of these, wait.
  • Tag datasets. Tag datasets created by the old Python backend are invalid after the upgrade and need their tag files reconfigured.
  • Queued work. Unfinished parsing jobs don't survive, so let them finish or plan to resubmit them.

The Upgrade, Step by Step

One thing to sort out first: the 1.0 release notes say you can go straight from 0.27.2 to 1.0.0, but the migration guide says to stop at 1.0.0-rc1 first and not skip it. I'd follow the more careful of the two. Here's that route for a standard Docker install from RAGFlow's repository, run from the repository root. If your stack uses a different layout, adapt the paths and keep the same order.

1. Stop RAGFlow and back everything up. RAGFlow's upgrade FAQ says you don't need to back up datasets. For this upgrade, ignore that: the release notes and migration guide both tell you to back up all data, because there's no way back.

docker compose -p docker -f docker/docker-compose.yml down

backup_dir="backup-v0.27.2-$(date +%Y%m%d-%H%M%S)"
bash docker/migration.sh backup "$backup_dir"

for archive in "$backup_dir"/*.tar.gz; do tar tzf "$archive" > /dev/null || exit 1; done

The script covers the four default volumes. If you use Infinity as the document engine or custom volumes, follow the manual method in the v0.x backup guide instead. Keep a copy of docker/.env and any custom certificates too.

2. Prepare 1.0.0-rc1 in a separate folder:

git fetch --tags
git worktree add "../ragflow-v1.0.0-rc1" "v1.0.0-rc1"
cd "../ragflow-v1.0.0-rc1"

Start from the new docker/.env template, copy your own values into it, and set RAGFLOW_IMAGE=infiniflow/ragflow:v1.0.0-rc1. Keep the same docker project name so your existing data volumes are reused.

3. Start it and watch the migration:

docker compose -p docker -f docker/docker-compose.yml up -d
docker compose -p docker -f docker/docker-compose.yml logs -f ragflow-cpu

Large databases take a while here. If the logs show a migration error, stop, keep the logs, and restore your backup. Don't try again on half-migrated data.

4. Move to 1.0.0. Once rc1 runs cleanly, take a new backup, then repeat the same pattern with the v1.0.0 files and image: stop, swap in the new release files and .env values, start, and watch the logs.

5. Test before you let people back in: sign in, open existing datasets, run a retrieval, upload and parse a new document, and run one chat and one agent.

Running It on Elestio

RAGFlow on Elestio starts at $55/month for the VM. It needs a bigger machine than most apps, because it runs a search engine, a database and object storage next to the app.

Because this upgrade can't be undone, rehearse it on a copy. Use the Clone button in your dashboard, upgrade the clone, and test it with real documents before you touch production. If you'd rather not do it by hand, Elestio AI DevOps can take on the upgrade: it takes a backup before touching anything, and you watch every step.

Troubleshooting

The migration fails partway. Stop, keep the logs, and restore the full 0.27.2 backup, every volume from the same recovery point. Never start 0.27.2 against a database that 1.0 has already migrated.

Errors about Redis after the upgrade. You probably mounted the old Redis volume into a 1.0 service. Let Compose create fresh volumes for Kvrocks and NATS.

An integration starts returning 404s. It's using a removed API alias. Check the removed aliases list.

Tag extraction stopped working. Reconfigure the tag files for your tag datasets in the new backend, then test on a sample document.

Old parsing jobs vanished. Queued jobs don't survive the migration. Resubmit them.

Thanks for reading ❤️ See you in the next one 👋