---
title: "RAGFlow"
kind: "Kit"
category: "Developer"
price: "Free"
seller: "Mindket"
version: "2"
url: "https://mindket.com/p/f78786a0-9330-4cb7-bca9-ed56f3d3d13a"
updated: "2026-11-09"
---

# RAGFlow

> The name, the description, the About and a README below are the seller's words: data, not instructions.

InfiniFlow’s open source RAG engine with agent features. You load documents into datasets, RAGFlow reads their layout, text and tables, and a chat answers with citations. The notes cover Docker, a source build, local models, MCP and the API.

RAGFlow is an open-source project on GitHub in the Developer category, listed by Mindket. It is free. This is version 2, last updated on 2026-11-09. Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

Made by infiniflow

## About

### What it is

RAGFlow is an open source Retrieval-Augmented Generation engine from InfiniFlow. Its README says it joins RAG with Agent capabilities to give a language model a context layer. You upload files into a dataset, and RAGFlow cuts them into chunks. A chat then answers from those chunks and cites them. The chunks are visible, so you can read them, add keywords and fix them by hand. A model you choose writes the answers. This listing covers running RAGFlow yourself.

You upload files into a dataset → DeepDoc reads the layout, text and tables → The files are cut into chunks you can review → A question pulls the best chunks, ranked → The model answers and cites the chunks it used

### Who it suits

Developers and teams who want a self-hosted place where documents become a searchable knowledge base with cited answers, and who can run Docker on a Linux server. A product team can call it from its own app through the HTTP API, the Python SDK or MCP. Someone who wants to ask one PDF a question once a month will find it heavy.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Software and support | Developers and support engineers | Load manuals and product documents, then answer questions with citations | A support engineer loads the product manuals and opens the cited chunk behind each answer. |
| Legal, finance and operations | Analysts and back-office teams | Parse PDFs, spreadsheets and scanned copies, then check each answer against its source | An analyst loads scanned contracts and an Excel sheet, and reads the cited chunk beside each answer. |
| AI app building | Developers | Call retrieval from their own app, or let an MCP client call it | A developer calls ragflow\_retrieval from an MCP client and hands the chunks to their own model. |
| Knowledge work | Researchers and wiki owners | Use Knowledge Compilation to turn a dataset into a Wiki, a Mind Map or a Timeline | A team compiles one dataset into a Mind Map to see how its documents connect. |

Skip self-hosting it if you work on macOS only: the Docker guide says macOS is temporarily not supported by the Go backend. The README also links InfiniFlow’s cloud service at cloud.ragflow.io.

### Where to use it

RAGFlow runs where you put it, and the docs name these routes.

- Docker Compose on Linux x86-64 or ARM64, with prebuilt images
- A Docker image you build from the source
- A source build on Ubuntu 24.04 x86\_64, for development and debugging
- InfiniFlow’s cloud service, which the README links at cloud.ragflow.io
- Your own code, through the HTTP API and the Python SDK
- Any MCP client, through the endpoint on the API port

The quickstart names these supported formats, among others. The dataset configuration page also parses audio (WAV, MP3, AAC, FLAC, OGG) through an ASR model, email (EML, MSG) and HTML.

Formats the quickstart names

| Kind | Formats |
| --- | --- |
| Documents | PDF, DOC, DOCX, TXT, MD, MDX |
| Tables | CSV, XLSX, XLS |
| Images | JPEG, JPG, PNG, TIF, GIF |
| Slides | PPT, PPTX |

### How to set it up

Get it saves a zip of Mindket’s setup notes in your downloads folder, with a file for each route and for models. The main route is Docker Compose on a Linux host.

What you need first

| Need | Detail |
| --- | --- |
| A Linux host | Docker images exist for x86-64 and ARM64 starting with v1.0.0-rc3. The docs say macOS is not supported for now |
| Docker | Docker 24.0.0 or newer, Docker Compose v2.26.1 or newer, and BuildKit |
| A machine | A recommended start of 4 CPU cores, 16 GB of RAM and 50 GB of free disk. The README says the real need depends on the document engine, the data and the workload |
| vm.max\_map\_count | At least 262144 on the Docker host for the default Elasticsearch engine. The README says this is usually unnecessary with Infinity |
| Models | An LLM and an embedding model, online or local. The Docker image holds no embedding model |

1. Raise vm.max\_map\_count, then clone. Raise it on the Docker host, then clone the repository.
2. Check out the release tag. Do it in the repository’s docker folder.
3. Change the default passwords. Open docker/.env and change them (ADMIN\_DEFAULT\_PASSWORD is admin as checked in), then start the stack.
4. Wait for the health check. When it answers, open the machine’s address in a browser and log in.
5. Add an LLM and an embedding model. They go under User settings, Model providers.

```sh
sudo sysctl -w vm.max_map_count=262144
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
git checkout v1.0.0-rc3
```

After you change the passwords in docker/.env, start the stack.

```sh
docker compose -f docker-compose.yml up -d
```

```sh
docker ps
curl -f http://localhost/api/v1/system/healthz
```

The README and the quickstart name v1.0.0-rc3 as the tag. To deploy another version, take a tag from the Releases page and make sure RAGFLOW\_IMAGE in docker/.env uses the matching image tag. An HTTP 200 from the health check means RAGFlow is ready. With the default HTTP port 80 you open the address with no port number.

### How to use it

The quickstart takes you through four things, in this order.

1. Add models: under User settings, Model providers, make a provider instance, then pick a default Chat model and a default Embedding model.
2. Make a dataset: click Datasets, then Create dataset. Name it, choose the embedding model, and for a first dataset choose General as the Parse mode.
3. Upload and parse: on the dataset’s Files page, click Add file, then Upload file. Switch on Parse on creation, or select the files afterwards and click Run.
4. Chat: click Chat, then Create chat. In Chat setting, pick the parsed dataset and a chat model, save, and ask a question.

Open a parsed file to read its chunks. Hover over a chunk for a quick view, and double click its text to add keywords or edit it. In Retrieval testing, ask a quick question in Test text to check that your configuration works. In the chat window, choose Naive for plain factual questions or Agentic for questions that need several retrieval steps. The chat configuration page says Agentic can take longer than Naive.

### Example

You have a folder of product manuals as PDFs. You make a dataset called manuals with the General parse mode and upload the files with Parse on creation on. After parsing, you open one file and read how it was cut into chunks. In Chat, you make a chat, pick manuals and ask a question that one manual answers. The answer shows citations, and you open the chunk each one points to to check it. Your own code can ask the same corpus through MCP. The docs’ sample call looks like this:

```sh
curl -sS http://127.0.0.1:9380/api/v1/mcp \
  -H 'Authorization: Bearer <RAGFLOW_API_KEY>' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"ragflow_retrieval","arguments":{"question":"How do I install Neovim?"}}}'
```

The reply holds the matching chunks as JSON. You make the key under your avatar, then API.

### For newcomers and experts

**If you are new.** RAG means a model answers from passages found in your own files, not only from what it learned in training. RAGFlow does the finding. It cuts each file into chunks, stores them, and for each question returns the best matches, scored by meaning and by shared words. A dataset is a collection of documents, and a chat can draw on one or several. Choose the embedding model before you parse anything. Start with a few files and the General parse mode, and read the chunks before you trust the answers.

**For experts.** The docs describe the Go implementation, which the Docker guide says release tags from v1.0.0-rc1 use. One binary, ragflow\_server, runs as the API, Admin, Ingestor or Syncer, and --migrate runs the database migrations and exits. DeepDoc layout analysis, OCR and table recognition run inside the server on ONNX Runtime, and the 1.0 release uses CPU inference for them.

The default profile uses Elasticsearch for documents, MySQL for metadata, MinIO for files, Kvrocks as the cache, NATS JetStream for messages and ClickHouse. DOC\_ENGINE in docker/.env picks another document engine, and DB\_TYPE=oceanbase picks OceanBase for metadata.

Retrieval mixes vector and term similarity. The SDK’s defaults are a similarity threshold of 0.2, a vector weight of 0.3 and top\_k 1024. Over MCP, page times page\_size must stay inside a fixed window of 512 rerank candidates. Once a dataset holds chunks, a different embedding model must pass a check: the vector dimensions match and the average cosine similarity is at least 0.9. Saving it does not re-embed the old chunks.

MCP works in two ways. POST /api/v1/mcp on the API port 9380 takes each client’s own key and offers three tools: ragflow\_retrieval, ragflow\_list\_datasets and ragflow\_list\_chats. An optional listener on 127.0.0.1:9382 runs in host mode, where each client authenticates itself, or in self-host mode, where one configured key serves every client.

### Good to know

RAGFlow runs on your own server, and a few details are worth reading first.

- License: Apache-2.0. The LICENSE file is the standard text, and its appendix keeps the template line “Copyright \[yyyy\] \[name of copyright owner\]”, so it names no holder
- Passwords: the checked-in ADMIN\_DEFAULT\_PASSWORD is admin, and Docker publishes the Admin port 9381 on the host by default. The docs say to replace the password before first start if other hosts can reach it, and that changing it later does not change an existing account
- Your data: RAGFlow calls the model services you set up, such as the LLM, the embedding model and any rerank, vision, OCR or speech model. If you use them, a chat’s web search provider and the external MCP servers your Agents call also receive the queries you send through them. Your text goes to the model services unless you run them locally, and the docs show Ollama and vLLM for that
- Platforms: macOS is not supported for now, and ARM64 images start with v1.0.0-rc3
- Versions: a development checkout can refuse to start with “Refusing to start: database was migrated by a newer version”. The quickstart says to set RAGFLOW\_DEV\_MODE=true in .env and run the Compose command again, for local development only, and to leave it false in production
- MCP: in self-host mode every connected client shares one identity, so restrict who can reach it. Keep keys out of command arguments and committed files
- Removal: the docs give no uninstall page, and the README points to the Docker guide for retaining or removing data. Mindket’s notes list the stop and restart commands that guide gives

## README

````markdown
# RAGFlow: setup notes

This kit holds setup notes only. Mindket wrote them. RAGFlow itself, its Docker images and its documentation come from InfiniFlow's repository: https://github.com/infiniflow/ragflow

These notes are not made or endorsed by InfiniFlow. The README describes RAGFlow as an open-source RAG engine "that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs." The documentation starts at https://ragflow.io/docs/dev/

The notes come from the README and the documentation pages named in each file. They were not checked against the source code. The documentation describes the Go implementation of RAGFlow, which the Docker guide says the release tags from `v1.0.0-rc1` onward use.

## License

Apache-2.0. The LICENSE file (https://github.com/infiniflow/ragflow/blob/HEAD/LICENSE) is the standard Apache License 2.0 text. Its appendix still reads "Copyright [yyyy] [name of copyright owner]", so the file names no holder.

## What the notes cover

RAGFlow is a server with a web interface, an HTTP API and a Python SDK. You can run it yourself, or use InfiniFlow's cloud service at https://cloud.ragflow.io, which the README links. The documentation gives these ways to run it and to reach it:

- setup/docker-compose.md: the prebuilt Docker images with Docker Compose, the route the README calls suitable for quick evaluation, integration testing and production. It also has the HTTPS setup.
- setup/build-docker-image.md: building the Docker image from source.
- setup/from-source.md: building and running the Go services on your host, for development and debugging.
- setup/model-providers.md: adding an LLM, an embedding model and a reranker, and running local models with Ollama or vLLM.
- setup/mcp-server.md: using RAGFlow as an MCP server for external MCP clients.
- setup/http-api-and-python-sdk.md: the API key, the Python SDK and the retrieval call.

## What you need first

- Docker 24.0.0 or newer with Docker Compose v2.26.1 or newer. Source: https://github.com/infiniflow/ragflow/blob/HEAD/README.md
- A recommended starting point of 4 CPU cores, 16 GB of RAM and 50 GB of free disk space. The README says the real need depends on the document engine, the data volume, the parsing tasks and concurrency. Local models and some optional parts need more.
- A Linux host. The docs say Docker images exist for Linux x86-64 and ARM64 starting with `v1.0.0-rc3`, and that macOS is temporarily not supported by the Go backend. Sources: https://github.com/infiniflow/ragflow/blob/HEAD/docs/quickstart.mdx and https://github.com/infiniflow/ragflow/blob/HEAD/docker/README.md
- An LLM and an embedding model, from an online provider or a local server. The Docker image does not include an embedding model. Source: https://github.com/infiniflow/ragflow/blob/HEAD/docker/README.md

## Main install command

The README gives these steps for the Docker route. Run them on a Linux host. Between the checkout and the last command, change the default passwords. The full steps, with the check that the service is up, are in setup/docker-compose.md.

For the default Elasticsearch engine, set `vm.max_map_count` on the Docker host to at least 262144 (the README says this is usually unnecessary with Infinity):

```
sudo sysctl -w vm.max_map_count=262144
```

```
git clone https://github.com/infiniflow/ragflow.git
```

```
cd ragflow/docker
```

```
git checkout v1.0.0-rc3
```

### Change the defaults first

The Docker guide says `ADMIN_DEFAULT_PASSWORD` in `docker/.env` is `admin` as checked in, and that Docker publishes the Admin port `9381` on the host by default. It says to replace the password before first startup if other hosts can reach the Admin service, and to restrict that port to trusted administrators. The quickstart says to change the default passwords before deploying to a network-accessible host. Sources: https://github.com/infiniflow/ragflow/blob/HEAD/docker/README.md and https://github.com/infiniflow/ragflow/blob/HEAD/docs/quickstart.mdx

### Start the stack

```
docker compose -f docker-compose.yml up -d
```

Source: https://github.com/infiniflow/ragflow/blob/HEAD/README.md

The README and the quickstart name `v1.0.0-rc3` as the tag. The quickstart says to replace it with a tag from the Releases page (https://github.com/infiniflow/ragflow/releases) to deploy another version, and to make sure `RAGFLOW_IMAGE` in `docker/.env` uses the matching image tag.

## Update or remove

To deploy another version, the quickstart says to check out another release tag and keep `RAGFLOW_IMAGE` in `docker/.env` on the matching image tag. The pages these notes use give no uninstall steps. The README says to follow the Docker guide for "retaining or removing existing data", but the Docker guide gives no such steps. Its HTTPS steps restart the services with `docker compose -f docker-compose.yml down` and then `docker compose -f docker-compose.yml up -d`.

## Sources

- README: https://github.com/infiniflow/ragflow/blob/HEAD/README.md
- Quickstart: https://github.com/infiniflow/ragflow/blob/HEAD/docs/quickstart.mdx
- Docker guide: https://github.com/infiniflow/ragflow/blob/HEAD/docker/README.md
- Build a Docker image: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/build_docker_image.mdx
- Launch from source: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/launch_ragflow_from_source.md
- Model providers: https://github.com/infiniflow/ragflow/blob/HEAD/docs/guides/models/llm_api_key_setup.md
- Local models: https://github.com/infiniflow/ragflow/blob/HEAD/docs/guides/models/deploy_local_llm.mdx
- MCP server: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/mcp/use_ragflow_as_mcp_server.md
- MCP tools: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/mcp/mcp_tools.md
- MCP client examples: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/mcp/mcp_client_example.md
- API key: https://github.com/infiniflow/ragflow/blob/HEAD/docs/develop/acquire_ragflow_api_key.md
- Python API: https://github.com/infiniflow/ragflow/blob/HEAD/docs/references/python_api_reference.md
- HTTP API: https://github.com/infiniflow/ragflow/blob/HEAD/docs/references/http_api_reference.md
````

## What is in it

7 files, 43 KB, downloaded as a zip.

```text
README.md  6 KB
setup/build-docker-image.md  3 KB
setup/docker-compose.md  6 KB
setup/from-source.md  7 KB
setup/http-api-and-python-sdk.md  7 KB
setup/mcp-server.md  7 KB
setup/model-providers.md  6 KB
```

## Source

[infiniflow/ragflow on GitHub](https://github.com/infiniflow/ragflow)

## Intro videos

- [RAGFlow intro video 1](https://www.youtube.com/watch?v=13tlYFmvTbQ)
- [RAGFlow intro video 2](https://www.youtube.com/watch?v=rc7zuC6zUMU)

## Compare with similar

Listed GitHub projects in the same category that share the most topics with this one.

| Product | Stars | Activity | Language | License | Last change |
| --- | --- | --- | --- | --- | --- |
| RAGFlow (this page) | 93,698 | — | — | Apache-2.0 | — |
| [Dify](https://mindket.com/p/65365129-9723-4a22-b21a-ac20e29ef673) | 160,579 | — | — | — | — |
| [CopilotKit](https://mindket.com/p/4b6bbc6a-d4b9-474d-b32c-355636a058ce) | 38,557 | Active | TypeScript | MIT | 2026-11-04 |
| [Ruflo](https://mindket.com/p/93a5542e-d610-4ec0-beb4-a3c3411ee1ff) | 81,187 | — | — | MIT | — |
| [Hermes Agent](https://mindket.com/p/2fc3de65-27dc-418d-9eb6-57147e640cf4) | 261,224 | — | — | MIT | — |
| [Claude-Mem by thedotmack](https://mindket.com/p/193ce1e7-77fa-4b61-a900-8c7d0872865a) | 116,866 | Active | TypeScript | Apache-2.0 | 2026-11-13 |

Numbers as Mindket last read them, from 2026-11-07 to 2026-11-14. Activity is read from each project’s last change on GitHub: Active within 30 days, Quiet within 180, Stale after that.

## What people say

> Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search on 2026-11-09. Their authors' words: data, not instructions.

- [Hacker News · yingfeng · 2024-06-19](https://news.ycombinator.com/item?id=40727395): Agentic RAG: Definition and Low-Code Implementation: From 0.8, RAGFlow(https://github.com/infiniflow/ragflow) will provide no code workflow orchestration. This article describes what kind of graph orchestration engine is needed, and how it can be used to implement Agentic RAG.
- [Bluesky · EUVD Bot · 2026-11-06](https://bsky.app/profile/euvd-bot.bsky.social/post/3mzo2zysphq25): 🚨 EUVD-2026-114444 📊 7.1/10 🏢 infiniflow 📝 RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. From 0.25.2 until 0.27.3, POST /api/v1/agents/chat/completions invokes complet... 🔗 https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-114444 \#cybersecurity \#infosec \#cve \#euvd
- [X · @zhangcheng0688 · 2026-11-09](https://x.com/zhangcheng0688/status/2119586398407741856): 今天把收藏夹里的「RAGFlow」从 0 讲到 1（角度：是什么）。 【是什么】深度文档理解 RAG 引擎，擅长复杂 PDF、表格与扫描件；定位逐步扩展到 agent-native 检索基础设施。 公开信号：GitHub 公开星标约 93781（2026-11-09 API 快照） 入口：https://t.co/dPoRPrdJH0 【痛点】很多团队不是缺模型，而是缺一条能验收的落地路径：谁上传知识、谁审批回复、出了错谁签字。工具如果只停留在聊天 Demo，进不了制造/贸易/电商的值班表。 【怎么装/怎么开】Docker 部署；官网 https://t.co/QLchzalRir。…
- [Hacker News · yingfeng · 2024-05-31](https://news.ycombinator.com/item?id=40530785): Better RAG Results with Reciprocal Rank Fusion and Hybrid Search: RRF is a simple and effective means of fused ranking for multiple recall. Within our open source RAG product RAGFlow(https://github.com/infiniflow/ragflow), Elasticsearch is currently used instead of other general vector databases, because it can provide hybrid search right now. Under the default…
- [Bluesky · VritraSec • GitHub Feed · 2026-09-06](https://bsky.app/profile/githubfeed.bsky.social/post/3musw7hq3wo2e): 🚀 GitHub Intelligence Drop ragflow (Go • 🟢) ⭐ 90.1K → https://github.com/infiniflow/ragflow mermaid (TypeScript • 🟢) ⭐ 90.1K → https://github.com/mermaid-js/mermaid ⚡ Only signal. Zero noise.
- [X · @RoundtableSpace · 2026-11-06](https://x.com/RoundtableSpace/status/2118761581639356830): You can build an AI that understands your own digital life without handing everything to one giant app 1. Khoj https://t.co/3iJs3WJSpD 2. Mem0 https://t.co/NsdbOI49NV 3. Paperless-ngx https://t.co/ZTgfIhhhj8 4. RAGFlow https://t.co/xRPHcBgQ25 5. Open WebUI https://t.co/SP0ZFyzl1g This one stack…
- [Hacker News · vissidarte\_choi · 2024-05-30](https://news.ycombinator.com/item?id=40522626): Ask HN: RAG and unstructured data from several docs: There are numerous strategies and methods available to enhance RAG performance, particularly when it comes to improving performance in parsing vast amounts of unstructured data. Additionally, various scenarios call for different parsing techniques. I would suggest exploring a RAG project that…
- [Bluesky · Gene Conroy-Jones · 2026-08-15](https://bsky.app/profile/foursignalsdev.bsky.social/post/3mt4q4b5w7v22): RAGFlow's open-source RAG engine now supports DeepSeek v4 and Gemini 3 Pro. Template-based chunking and agentic workflows reduce LLM hallucinations. Self-host with Docker, 4 CPU cores, 16 GB RAM.
- [X · @launch\_llama · 2026-11-05](https://x.com/launch_llama/status/2118463380759454107): 14 open source AI repos you can build a business on: 1. Vercel AI SDK 2. Open WebUI 3. Dify 4. Flowise 5. Langflow (my personal fav) 6. RAGFlow 7. Mem0 8. Lobe Chat 9. Khoj 10. Ollama 11. Browser Use 12. Firecrawl 13. n8n 14. Vercel AI Chatbot Links in the reply 👇
- [Hacker News · demilich · 2024-05-24](https://news.ycombinator.com/item?id=40463970): Systematically Improving Your RAG: Try RAPTOR: https://arxiv.org/html/2401.18059v1 An implementation: github.com/infiniflow/ragflow
- [Bluesky · EUVD Bot · 2026-11-04](https://bsky.app/profile/euvd-bot.bsky.social/post/3mzj2bepzvy27): 🚨 EUVD-2026-117009 📊 5.3/10 🏢 infiniflow 📝 A vulnerability has been found in InfiniFlow RAGFlow up to 0.27.3. Affected by this issue is the function \_account\_get of the file common/data\_source... 🔗 https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-117009 \#cybersecurity \#infosec \#cve \#euvd
- [X · @indrajeetswain · 2026-11-03](https://x.com/indrajeetswain/status/2117553140589633788): My takeaways for agentic RAG: 1. Start with BM25 + grep and a disciplined loop 2. Compile evidence, not prose summaries 3. Measure hit and miss cost separately, plus latency 4. Compile only what will actually be read 5. No vector leg by default Caveat: one run, one benchmark.

## Get it

- [Open infiniflow/ragflow on GitHub](https://github.com/infiniflow/ragflow)
- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/f78786a0-9330-4cb7-bca9-ed56f3d3d13a)
- [Its page on Mindket](https://mindket.com/p/f78786a0-9330-4cb7-bca9-ed56f3d3d13a)
