- Category
- AI Tools
- Rank
- No. 679Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Data, Retrieval & Knowledge
- Builder
- infiniflow
- GitHub
- 94.1k stars
- Latest release
- nightly
- Date
About
RAGFlow is a retrieval-augmented generation engine that turns messy source material into a queryable context layer for LLMs. Its emphasis is on the parsing stage: it reads Word, Excel, images, and web pages with deep document understanding, applies template-based chunking that a human can inspect and correct, and returns answers with traceable citations back to the source. It is self-hostable and also offered as a hosted service, and supports agentic workflows and MCP.
What it does
RAGFlow is a self-hosted server that ingests your files, splits them into searchable pieces, and answers questions with citations pointing back to the passage used. Its own parser runs layout analysis, OCR (optical character recognition) and table detection before splitting, and each collection gets a splitting template: general, Q&A, table, paper, book, laws, presentation, picture, email and others. The current release candidate rewrites the backend in Go, with NATS for queuing and Kvrocks for cache. You drive it from a web UI, an HTTP API, a Python SDK, a command-line client or an MCP server.
Why it's ranked here
An Apache 2.0 licensed retrieval stack with real integration depth. Retrieval is exposed through an MCP server, an OpenAI-compatible chat endpoint that can return the cited passages, a Python SDK and a Go command-line client, so it plugs into agents and existing chat clients without glue code. The release notes show steady shipping: connectors for BigQuery, WebDAV, Azure DevOps and sitemaps, plus new model providers in each point release. The ranking is tempered by timing. The flagship release is a preview of a full Go rewrite, with a one-way data migration and features still missing.
What's good
Chunking is visible and editable: after parsing you can open each chunk, fix its text, and add keywords or questions that raise its ranking for matching queries. The MCP server rebuilds its tool descriptions on every request with your current datasets and chats, so an agent sees what it can query without a separate lookup, and each request is capped at 60 seconds. The Python dependency file pins minimum versions of transitive packages with the CVE (published vulnerability) identifier written beside each one. The chat endpoint follows the OpenAI request shape, so existing OpenAI client code works by changing the base URL.
Tradeoffs
The Go release candidate is a preview, and its own notes list gaps: the document parser runs on CPU only, the local sandbox is gone, and the team versus personal permission model is not yet supported, even though the Python API reference still documents it. Upgrading from the last Python-era version is irreversible, so a backup is mandatory. The native Docker build targets Linux x86-64 only. The recommended floor is 4 cores, 16 GB of RAM and 50 GB of disk, and the default Elasticsearch engine needs a kernel memory-map limit raised on the host. Once a file is parsed, the embedding model is locked.
How to use it well
Fit: a team that wants a self-hosted question-answering service over PDFs, spreadsheets, slides and scanned pages, with citations a reviewer can check, and the operations capacity to run several containers. Pick the splitting template per dataset before uploading, and choose the embedding model carefully, since it locks after the first parse. Change the default passwords in the Compose environment file before exposing the host. Point agents at the MCP server for retrieval rather than building a separate pipeline. Teams on ARM hardware, or needing GPU parsing, should wait for the stable release.
Technical notes+
internal/mcp/server.go wraps the official MCP Go SDK and registers three tools (retrieval, list datasets, list chats) from an embedded JSON schema file; a receiving middleware applies a 60-second timeout to every method, rejects unknown tool names, and on tools/list appends the caller's full dataset list and first 30 chats to the tool descriptions per request instead of storing them on the shared server. It advertises MCP protocol versions from 2024-11-05 through 2025-11-25. internal/cli/cli.go parses api and admin modes, reads an rf YAML config from the working directory, and defaults to 127.0.0.1 on port 9380 (API) or 9381 (admin), with table, plain or JSON output. sdk/python/ragflow_sdk/__init__.py exports RAGFlow, DataSet, Chat, Session, Document, Chunk, Agent and Memory, and turns on beartype runtime checks only when beartype is installed. pyproject.toml requires Python >=3.13,<3.14, sets the Aliyun mirror as the default uv index with PyPI explicit only for trio, and points pytest at a test directory with p0 to p3 priority markers. go.mod declares go 1.27 and pulls in onnxruntime_go, nats-server, gin and gorm. docs/release_notes.md records the move from Redis to NATS, Kvrocks for cache and checkpoints, and the irreversible data upgrade.
Observed
- License
- Apache 2.0
- Languages
- Go backend services; Python SDK and Python packages
- Install surface
- Docker Compose for the server; pip install ragflow-sdk for the Python client
- Interfaces
- Web UI, HTTP API, OpenAI-compatible chat completions endpoint, Python SDK, Go CLI, MCP server
- MCP tools
- Retrieval, list datasets, list chats
- Platform support
- Native Docker build target is Linux x86-64; Linux ARM64 is not a supported native target
- Recommended hardware
- 4 CPU cores, 16 GB RAM, 50 GB free disk
- Python requirement
- Python >=3.13,<3.14 (pyproject.toml)
- Chunking templates
- General, Q&A, Table, Paper, Book, Laws, Presentation, Picture, One, Email, Manual
- Known limitations of the Go rewrite
- DeepDoc parser CPU-only; local sandbox removed; Team/Me permission model not yet supported
- Upgrade path
- Data migration from the Python-era release to the Go release is irreversible
- Test configuration
- pytest configured in pyproject.toml with p0 to p3 priority markers
Read from README.md, pyproject.toml, go.mod, docs/quickstart.mdx, docs/basics/rag.md, docs/basics/agent_context_engine.md, docs/references/python_api_reference.md, internal/mcp/server.go, internal/cli/cli.go, sdk/python/ragflow_sdk/__init__.py, docs/release_notes.md.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.