使用 Elasticsearch 时需把宿主机 vm.max_map_count 调到至少 262144,用 Infinity 一般不需要;启动后要自行用 curl http://localhost/api/v1/system/healthz 返回 200 判断就绪,容器本身没有 Compose 健康检查;登录后还需在模型供应商页面自行配置 LLM、embedding 和 reranker 的模型名、服务地址与 API key;README 注明当前不支持 macOS。
ragflow
infiniflowApache-2.0活跃维护面向智能体的 RAG 检索引擎,把文档解析、知识编译和上下文管理整合成一套基础设施,帮 Agent 稳定拿到高质量检索结果。
RAGFlow is an agent-native database: a Retrieval-Augmented Generation (RAG) engine that grew into context infrastructure.
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
git checkout v1.0.0
docker compose -f docker-compose.yml up -dDocker 部署推荐起步 4 核 CPU、16 GB 内存、50 GB 可用磁盘,实际需求取决于文档引擎、数据量与并发;README 未说明 GPU 显存要求,1.0 开源版 DeepDoc 的版面分析、OCR 与表格识别使用 CPU 推理。
开源 RAG 引擎,融合 Agent 能力,把复杂文档变成可溯源的高保真上下文层
面向智能体的 RAG 检索引擎,把文档解析、知识编译和上下文管理整合成一套基础设施,帮 Agent 稳定拿到高质量检索结果。
核心能力
- 基于深度文档理解从复杂格式非结构化数据抽取知识
- 模板化分块,可视化切块并支持人工干预
- 知识编译生成 Wiki、图谱、树、思维导图等结构化产物
- Agentic 检索支持多步拆解、多轮检索与证据校验
- 兼容 Word、PPT、Excel、PDF、扫描件、网页等异构数据源
容易踩的坑
- v1.0.0最新正式版2026-11-06 · 2026-11-06 12:31 UTC
After three release candidates, we are pleased to announce the official release of RAGFlow 1.0, now ready for production. Built on a complete rewrite in Go, this release significantly reduces deployment and runtime overhead and introduces an all-new Agentic Chat experience. We encourage all users to upgrade for improved stability, performance, and question answering.
Highlights
- Rewritten in Go for lighter deployment: Docker images are approximately 10× smaller, and startup is approximately 10× faster.
- Approximately 100× greater concurrency, with substantial improvements in query latency, memory usage, and document parsing speed.
- All-new Agentic Chat: Enables multi-step reasoning and answers to complex questions through iterative retrieval, tool calls, and evidence sufficiency assessment.
Chat and Agents
- Added Agentic Chat mode, replacing the previous Low, Medium, High, and Ultra thinking levels.
- Introduced the Jev decision model into the agent tool-calling loop to determine whether the available evidence is sufficient to answer a question.
- Added support for the Jev decision model in the Categorize agent component.
- Added storage and display of prompts, token usage, and execution time in chat history.
Document Ingestion and Retrieval
- Unified the 12 built-in document parsers with the pipeline parsers.
- Added support for multiple ingestion pipeline DSL versions.
Architecture and Deployment
- Migrated the message queue from Redis to NATS.
- Adopted Kvrocks for cache and checkpoint storage.
- Added Docker images for the arm64 architecture.
- Reimplemented the RAGFlow CLI in Go.
Stability
- Fixed multiple critical bugs reported by the community and issues identified during the release candidate phase, further improving runtime stability.
Benchmarks
- Achieved 91% accuracy on the FRAMES multi-hop question-answering benchmark using RAGFlow Agentic Chat with MiniMax M3.
Upgrading
- From v1.0.0-rc1, rc2, or rc3: Existing data is fully compatible. You can upgrade directly.
- From v0.27.2: You can upgrade directly to v1.0.0. Data migration runs automatically when the RAGFlow Docker container starts.
- From versions earlier than v0.27.2: Follow the migration guide to complete the required intermediate upgrades before upgrading to v1.0.0.
- Back up all data before upgrading. Data migration from v0.27.2 to v1.0.0 is irreversible. If migration fails, restore the complete pre-upgrade backup before trying again.
Compatibility and Limitations
- Deprecated API aliases are no longer supported.
- The Python SDK is unaffected.
- DeepDoc currently supports CPU environments only.
Relative references
- Backup and upgrade guide: https://ragflow.io/docs/migration_overview
- Removed APIs: https://ragflow.io/docs/http_api_reference#removed-api-aliases
What's Changed
- fix(parser): keep recovered PDF TOC leader lines out of the body guard by @jay77721 in https://github.com/infiniflow/ragflow/pull/21768
- CI: Fix log tee failure by @myf-bee in https://github.com/infiniflow/ragflow/pull/21791
- Update release notes of 1.0.0.rc3 by @yingfeng in https://github.com/infiniflow/ragflow/pull/21793
- feat: add Wally as a model provider by @adityabatra072 in https://github.com/infiniflow/ragflow/pull/21719
- add audit hooks to file APIs by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/21807
- add log hooks by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/21822
- i18n: translate pipeline version and parser settings strings in tr-TR by @bakiburakogun in https://github.com/infiniflow/ragflow/pull/21819
- fix(models): honour context cancellation in driver HTTP requests by @ccclucky in https://github.com/infiniflow/ragflow/pull/21643
- feat(vastbase): support Vastbase G100 as the metadata database in Go by @FengYikai710 in https://github.com/infiniflow/ragflow/pull/20913
- fix: README.md by @eridan-ltu in https://github.com/infini
- v1.0.0-rc32026-10-30 · 2026-10-30 11:53 UTC
查看更新说明
1.0.0-rc3 is the third and final release candidate before the official v1.0.0 release. It fixes several issues found in rc2 and introduces new features and enhancements.
Key updates:
- Introduced the decision model for evidence sufficiency judgment within the agentic tool loop, and the Categorize component for agents.
- Added support for multiple versions of ingestion pipeline DSL.
- Chat history now stores and displays prompts, token usage, and execution time.
- Compatible with existing v1.0.0-rc2 schema, allowing a direct upgrade.
What's Changed
- Fix: An additional retrieval node has appeared in the agent created using the CAJAL Scientific Paper Assistant template. by @cike8899 in https://github.com/infiniflow/ragflow/pull/21079
- fix(agent): preserve and resolve webhook header fields by @T1mn in https://github.com/infiniflow/ragflow/pull/20696
- fix(agent): migrate chunk_summary and title_chunker templates to modular Extractor params by @12britz in https://github.com/infiniflow/ragflow/pull/20754
- fix(s3): honor signature_version and addressing_style for S3-compatible stores by @yaoper in https://github.com/infiniflow/ragflow/pull/20815
- fix(agent): retain webhook completion across incremental polls by @T1mn in https://github.com/infiniflow/ragflow/pull/20697
- fix(mcp): return a private cacheScope from tools/list by @leilei3167 in https://github.com/infiniflow/ragflow/pull/20539
- Fix: The quoted content in agent messages is not displayed correctly. by @cike8899 in https://github.com/infiniflow/ragflow/pull/21070
- fix: use id and kb_id when deleting dataset metadata by @aniketkrs in https://github.com/infiniflow/ragflow/pull/20880
- feat(go): complete the Mistral /v1/ocr client and list mistral-ocr-latest as an ocr model by @Xavierando in https://github.com/infiniflow/ragflow/pull/20531
- fix: expose compile_kwd in dataset search results by @liang0417 in https://github.com/infiniflow/ragflow/pull/20859
- fix(chunker): keep structured tables and images in the title family by @jay77721 in https://github.com/infiniflow/ragflow/pull/21040
- Fix: Error related to the 'UserFillUpForm' type by @cike8899 in https://github.com/infiniflow/ragflow/pull/21062
- Test:migrate router contracts api by @flyingwhit in https://github.com/infiniflow/ragflow/pull/21046
- Test:migrate langfuse routes api by @flyingwhit in https://github.com/infiniflow/ragflow/pull/21050
- fix(metadata): preserve string arrays in in-memory filters by @QAQadws in https://github.com/infiniflow/ragflow/pull/21065
- ci(tests): run migrated Go API tests by @6ba3i in https://github.com/infiniflow/ragflow/pull/21077
- Support jev model interface, part1 by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/21087
- fix(kvrocks): propagate SetNX errors by @eleven914 in https://github.com/infiniflow/ragflow/pull/20746
- refactor(parser): introduce typed Position API for DocItem positions by @xugangqiang in https://github.com/infiniflow/ragflow/pull/21049
- Remove RowsToHTML; render PDF tables via canonical RenderTableHTML by @xugangqiang in https://github.com/infiniflow/ragflow/pull/21083
- feat(parser): extract SVG text in Go picture ingestion by @errmakov in https://github.com/infiniflow/ragflow/pull/20523
- fix(agent): bound the self-managed error body drain by @Tong-bit-art in https://github.com/infiniflow/ragflow/pull/21058
- test(api): migrate and improve search API tests, make the Go API suite self-sufficient by @qinling0210 in https://github.com/infiniflow/ragflow/pull/21086
- fix(ingestion): document and validate extractor timeout env by @jay77721 in https://github.com/infiniflow/ragflow/pull/21119
- Add more server types by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/21127
- feat: migrate permission schema fields by @buua436 in https://github.com/infiniflow/ragflow/pull/21085
- Add token usage for agentic rag by @yingfeng in https://github.com/infiniflow/ragflow/pull/21134
- feat(pipeline):
- v0.27.32026-10-23 · 2026-10-23 06:34 UTC
查看更新说明
What's Changed
- Port agentic RAG to GO by @qinling0210 in https://github.com/infiniflow/ragflow/pull/19500
- Revert "fix(ingestion): allow re-parsing a document whose parse was canceled at progress 0" by @wangq8 in https://github.com/infiniflow/ragflow/pull/19503
- fix(agent/tool): translate MCP tool inputSchema.properties in Info() by @mkaaad in https://github.com/infiniflow/ragflow/pull/19244
- Fix: remove deprecated functions by @Lynn-Inf in https://github.com/infiniflow/ragflow/pull/19449
- fix(sdk): preserve agent answer references by @AnnaSuSu in https://github.com/infiniflow/ragflow/pull/19365
- fix(mcp): send rerank_candidates_count so retrieval paging works past 64 results by @xu-jia-ming in https://github.com/infiniflow/ragflow/pull/19018
- fix(agent): compare retrieval KBs by resolved embedding model, not raw embd_id by @kabishou11 in https://github.com/infiniflow/ragflow/pull/19206
- Go: add integration test by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/19485
- Fix: Modify the text color of the TreeSelect component. by @cike8899 in https://github.com/infiniflow/ragflow/pull/19507
- Upon entering a wiki, the top-right corner indicates that modifications have been made, even though no changes were actually performed. by @cike8899 in https://github.com/infiniflow/ragflow/pull/19482
- fix(api): authorize task cancellation by dataset access by @Harsh23Kashyap in https://github.com/infiniflow/ragflow/pull/19359
- refa: remove unused knowledge compilation code by @buua436 in https://github.com/infiniflow/ragflow/pull/19437
- fix: avoid nested compiler pool embedding deadlock by @buua436 in https://github.com/infiniflow/ragflow/pull/19486
- fix(invoke): tolerate invalid headers across runtimes by @6ba3i in https://github.com/infiniflow/ragflow/pull/19481
- fix(wiki): treat MAP-extracted chunks as cache hits instead of missing by @kabishou11 in https://github.com/infiniflow/ragflow/pull/19208
- fix(web): prevent DOCX preview infinite update loop by @Souravrajvi0 in https://github.com/infiniflow/ragflow/pull/19475
- fix(web): add Traditional Chinese child delimiter translations by @huyua9 in https://github.com/infiniflow/ragflow/pull/18951
- fix(figure_parser): accept lang as named parameter on VisionFigureParser (#17280) by @Taranum01 in https://github.com/infiniflow/ragflow/pull/19511
- fix(dataflow): preserve scalar text output shape by @huyua9 in https://github.com/infiniflow/ragflow/pull/18921
- fix(i18n): localize Chinese delimiter preview by @huyua9 in https://github.com/infiniflow/ragflow/pull/18948
- Unify ONNX Runtime native to 1.29.0 from infiniflow/ragflow-build by @xugangqiang in https://github.com/infiniflow/ragflow/pull/19446
- fix(document): validate immutable fields on update by @taek105 in https://github.com/infiniflow/ragflow/pull/19444
- fix(structure-graph): discover buckets from raw rows by @6ba3i in https://github.com/infiniflow/ragflow/pull/19523
- fix: forward NumberInput ref to input by @huyua9 in https://github.com/infiniflow/ragflow/pull/18904
- fix(ssrf): unwrap IPv6 transition addresses in the URL guard by @aroh3006 in https://github.com/infiniflow/ragflow/pull/19517
- Feat: Make the files of the parser operators in the pipeline deletable. by @cike8899 in https://github.com/infiniflow/ragflow/pull/19384
- fix(template): align data analysis CodeExec prompt by @huyua9 in https://github.com/infiniflow/ragflow/pull/18958
- fix(storage): retry transient S3 failures by @6ba3i in https://github.com/infiniflow/ragflow/pull/19526
- Port agentic RAG PRs to GO by @qinling0210 in https://github.com/infiniflow/ragflow/pull/19527
- refa: remove Go artifact deletion APIs by @buua436 in https://github.com/infiniflow/ragflow/pull/19519
- test(infinity): cover SQL literal escaping by @huyua9 in https://github.com/infiniflow/ragflow/pull/18956
- Fix: The text in the SelectWithSearch dropdown menu is obscured by the checkmark icon. by @cike8899 in https://github.com/infiniflow/ragflow/pull/19534
- v1.0.0-rc22026-10-16 · 2026-10-16 09:49 UTC
查看更新说明
1.0.0-rc2 is the second release candidate for v1.0.0. This release fixes several issues in rc1 and introduces new features and expanded support.
Highlights
- Introduced Agentic mode for chat, replacing the Low, Medium, High, and Ultra thinking levels.
- Preserved compatibility with existing v1.0.0-rc1 data, allowing direct upgrades.
- Added support for Team/Me sharing.
- Added support for model providers DemonRoute and Opper, web search tools Firecrawl and Search1API, and the MinerU 4 model.
- Added retrieval support for Czech and Slovak.
- Unified the 12 built-in document parsers with the Pipeline parsers.
- Added Docker images for the arm64 architecture.
What's Changed
- refactor(parser): unify spreadsheet tables on a segmented HTML wire by @jay77721 in https://github.com/infiniflow/ragflow/pull/20358
- refactor: use correct ragflow.conf as nginx config file by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20321
- docs:update Docker commands in deployment guides by @Yannnnnnny in https://github.com/infiniflow/ragflow/pull/20353
- feat(parser): add opt-in VLM enhancement for images by @jay77721 in https://github.com/infiniflow/ragflow/pull/20166
- refactor(parser_config): make all settings component-scoped (zero flat-key compat) by @xugangqiang in https://github.com/infiniflow/ragflow/pull/20315
- refactor: agent templates by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20364
- Fix: clear GetByID by @Lynn-Inf in https://github.com/infiniflow/ragflow/pull/20371
- refa: migrate provider model calls by @buua436 in https://github.com/infiniflow/ragflow/pull/20355
- fix(web): show api key before base url in every model provider form by @dcc123456 in https://github.com/infiniflow/ragflow/pull/20361
- Fix: Unable to delete the last item in the token chunker's delimiter configuration. by @cike8899 in https://github.com/infiniflow/ragflow/pull/20376
- refactor(parser): move native PDF/Office extraction into deepdoc facade by @xugangqiang in https://github.com/infiniflow/ragflow/pull/20273
- docs: align onnxruntime_go binding version in comments with go.mod (v1.29.0) by @xugangqiang in https://github.com/infiniflow/ragflow/pull/20370
- fix: route embeddings through model wrapper by @buua436 in https://github.com/infiniflow/ragflow/pull/20378
- Refactor: explictly use keywords_similarity_weight by @wangq8 in https://github.com/infiniflow/ragflow/pull/20379
- Update CI by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20380
- refactor: remove obsolete chat session compatibility API by @QAQadws in https://github.com/infiniflow/ragflow/pull/20374
- fix(mappings): support any embedding dimension on Elasticsearch by @qinling0210 in https://github.com/infiniflow/ragflow/pull/20368
- refactor: knowledge compilation templates by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20383
- refactor: remove unused py code by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20388
- refactor: remove unused sandbox code by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20389
- Refactor: vector_similarity_weight -> keywords_similarity_weight by @wangq8 in https://github.com/infiniflow/ragflow/pull/20385
- fix(document): clone parser_config to break dataset aliasing; drop dead parser-config helpers by @jay77721 in https://github.com/infiniflow/ragflow/pull/20381
- refactor(web): remove Python backend compatibility code by @dcc123456 in https://github.com/infiniflow/ragflow/pull/20375
- refactor: route audio models through wrappers by @buua436 in https://github.com/infiniflow/ragflow/pull/20387
- Fix Dataset ingestion overview by @QAQadws in https://github.com/infiniflow/ragflow/pull/20190
- refactor: remove unused code and doc by @JinHai-CN in https://github.com/infiniflow/ragflow/pull/20392
- Refactor: better message - canvas -> agent by @wangq8 in https://github.com/infiniflow/ragflow/pull/20395
- refactor(workflow): preserve completed paral
- nightlypre-release2025-12-01 · 2025-12-01 13:17 UTC
查看更新说明
Release nightly created from ed5a84fee9abc8091aea111d1195cf7768541ff1 at 2026-11-09 13:17:33+00:00
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
- 💡 What is RAGFlow?
- 🎮 Get Started
- 🔥 Latest Updates
- 🌟 Key Features
- 🔎 System Architecture
- 🏠 Local Deployment
- 📚 Documentation
- 📜 Roadmap
- 🏄 Community
- 🙌 Contributing
💡 What is RAGFlow?
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs. It offers a streamlined RAG workflow adaptable to enterprises of any scale. Powered by a converged context engine and pre-built agent templates, RAGFlow enables developers to transform complex data into high-fidelity, production-ready AI systems with exceptional efficiency and precision.
🎮 Get Started
Try our cloud service at https://cloud.ragflow.io.
For local deployment, see Local Deployment.
🔥 Latest Updates
- 2026-09-29 RAGFlow 1.0.0-rc1 released.
- 2026-09-10 Added website content ingestion through sitemaps.
- 2026-08-19 Introduced Knowledge Compilation to generate Wikis, Graphs, Trees, PageIndex, Mind Maps, Timelines, and Skills at the document and dataset levels.
- 2026-08-19 Introduced Agentic RAG with Low, Medium, High, and Ultra thinking modes.
- 2026-07-02 Added Google BigQuery data source ingestion and incremental synchronization.
See the full release notes for more updates.
🌟 Key Features
🍭 "Quality in, quality out"
- Deep document understanding-based knowledge extraction from unstructured data with complicated formats.
- Finds "needle in a data haystack" of literally unlimited tokens.
🍱 Template-based chunking
- Intelligent and explainable.
- Plenty of template options to choose from.
🧩 Knowledge Compilation
- Compile content at the document and dataset levels into structured knowledge artifacts.
- Use compilation templates to generate Wikis, Graphs, Trees, PageIndex, Mind Maps, Timelines, and Skills for different knowledge organization and reuse needs.
- Configure compilation models and processing rules, and view, update, and regenerate knowledge artifacts.
🧠 Agentic Retrieval
- Perform multi-step retrieval for complex questions: the model analyzes the question and, when needed, breaks it down, retrieves knowledge, and verifies evidence.
- Gather more complete context through multiple rounds of retrieval and reasoning to help generate well-grounded answers.
- Choose Low, Medium, High, or Ultra thinking modes to control retrieval and reasoning depth according to question complexity.
🌱 Grounded citations with reduced hallucinations
- Visualization of text chunking to allow human intervention.
- Quick view of the key references and traceable citations to support grounded answers.
🍔 Compatibility with heterogeneous data sources
- Supports Word documents, PowerPoint presentations, Excel spreadsheets, TXT files, images, PDFs, scanned copies, structured data, web pages, and more.
🛀 Automated and effortless RAG workflow
- Streamlined RAG orchestration catered to both personal and large businesses.
- Configurable LLMs as well as embedding models.
- Multiple recall paired with fused re-ranking.
- Intuitive APIs for seamless integration with business.
🔎 System Architecture
🏠 Local Deployment
Local deployment supports both Docker deployment and launching from source. Docker is suitable for quick evaluation, integration testing, and production deployment, while launching from source is intended for RAGFlow development and debugging. Docker deployment does not require a Go compiler. Launching from source requires the Go version specified in go.mod; frontend development additionally requires Node.js and npm.
🐳 Docker Deployment
📝 Docker Deployment Prerequisites
- Recommended starting configuration: 4 CPU cores, 16 GB RAM, and 50 GB of available disk space. Actual requirements depend on the document engine, data volume, parsing tasks, and concurrency. Local models and other optional components may require additional resources.
- Docker ≥ 24.0.0, Docker Compose ≥ v2.26.1.
[!TIP] If you have not installed Docker on your local machine (Windows, macOS, or Linux), see Install Docker Engine.
🚀 Start up the server
-
If using Elasticsearch, set
vm.max_map_counton the Docker host to at least 262144. This step is usually unnecessary with Infinity:To check the value of
vm.max_map_count:sysctl vm.max_map_countIf you use Elasticsearch and the value is below 262144, reset it:
# In this case, we set it to 262144: sudo sysctl -w vm.max_map_count=262144This change will be reset after a system reboot. To ensure your change remains permanent, add or update the
vm.max_map_countvalue in /etc/sysctl.conf accordingly:vm.max_map_count=262144 -
Clone the repository:
git clone https://github.com/infiniflow/ragflow.git -
Check out the release tag and start the server with Docker Compose:
Enter the Docker deployment directory.
cd ragflow/dockerCheck out the
v1.0.0release tag.git checkout v1.0.0Start the RAGFlow services and their dependencies.
docker compose -f docker-compose.yml up -dWith the default MySQL configuration, the image entrypoint runs database migrations before starting Admin, Syncer, Ingestor, API, and other services.
In the RAGFlow open-source 1.0 release, DeepDoc uses CPU inference for layout analysis, OCR, and table recognition.
-
Check the server status after startup:
Use
docker psto check the dependency services. After the dependencies showhealthyand the RAGFlow container remains running, use the HTTP endpoint to determine whether RAGFlow is ready. The RAGFlow container itself does not define a Compose healthcheck.curl -f http://localhost/api/v1/system/healthzAfter receiving an HTTP 200 response, open the Web UI. If you changed
SVR_WEB_HTTP_PORT, replace the port in the health-check URL accordingly.If startup fails, inspect the container logs:
docker logs --tail 50 ragflow-cpu -
In your web browser, enter the IP address of your server and log in to RAGFlow.
With the default settings, you only need to enter
http://IP_OF_YOUR_MACHINE(without port number), because the default HTTP serving port80can be omitted when using the default configuration. -
After signing in, add an LLM, embedding, and reranker on the model provider page, including the model name, service address, and API key.
For details, see llm_api_key_setup.
The show is on!
See the Quickstart guide for details.
⚙️ Docker Configuration and Adjustment
Docker deployment uses docker/.env and docker/docker-compose.yml. Configure the image, ports, passwords, document engine, and model image source as described in the Docker configuration guide. For platform support (note that macOS is not currently supported), see the Go Docker image build and platform support guide. To build the Docker image from source, see the Go Docker image build and platform support guide.
For document-engine changes, configuration updates, restarting services, and retaining or removing existing data, follow the Docker configuration guide.
🔨 Launch from Source
📝 Source Build Prerequisites
-
Clone the repository and install the Go version specified in
go.mod(currently Go 1.27), Clang 20, LLD 20, CMake ≥ 4.0, and PCRE2 development files. Go services depend on CGO and native static libraries; build.sh sets the required build parameters.git clone https://github.com/infiniflow/ragflow.git cd ragflow -
Run the dependency download script once to prepare everything the local Go server needs to build, run, parse documents and count tokens (
download_dev_deps.pyfetches the native static libraries and the runtime resources — cl100k vocabulary, DeepDoc.ortweights, embedding tokenizer assets):uv run tools/scripts/download_dev_deps.pyThis is the local-dev one-stop: after one run the environment is ready, and already-present files are skipped so re-running never re-downloads. The image-facing counterpart
deps/download_deps.pyfetches the same runtime resources and skips the native.afiles — run it only when building the dependency image or in CI, not for local development.download_dev_deps.pypulls and unpacks pdfium, pdf_oxide, office_oxide, and onnxruntime under~/ragflow-native-libs, and writes the cl100k vocabulary, DeepDoc models, and embedding tokenizer assets underdeps/. It is a Python script;uv runinstalls its declared dependencies (requestsandhuggingface-hub) automatically. Skip this step if you have prepared the same resources by other means. When started from the repository root, Go services automatically findinternal/rag/res/deepdoc; to start from another directory, setDEEPDOC_MODEL_DIRto its absolute path. -
Build the services:
./build.sh --all -
Start the local dependency services and make sure the hosts and ports in conf/service_conf.yaml point to addresses accessible from the host. If using Elasticsearch, first set
vm.max_map_counton the Docker host to at least262144.sudo sysctl -w vm.max_map_count=262144 docker compose --env-file docker/.env -f docker/docker-compose-base.yml up -d --wait es01 mysql minio nats kvrocks -
Migrate the database:
./bin/ragflow_server --migrate -
Start the four services in four separate terminals:
Terminal 1: start Admin on port
9381../bin/ragflow_server --admin./bin/ragflow_server --ingestorTerminal 3: start Syncer.
./bin/ragflow_server --syncerTerminal 4: start API on port
9380../bin/ragflow_server --apiThe startup modes work as follows:
--migrate: Runs database migrations and exits when complete.--admin: Starts the Admin service for management and initialization operations.--ingestor: Starts the Ingestor service for data ingestion and parsing tasks.--syncer: Starts the Syncer service for external data source synchronization tasks.--api: Starts the API service for the Web UI and SDKs.
-
Only when developing the frontend, install Node.js and npm, then start the React frontend:
cd web npm installAfter the services start, confirm that the API is ready:
curl -f http://127.0.0.1:9380/api/v1/system/healthzAn HTTP 200 response indicates that the API is responding. See Launch Service from Source for complete frontend and DeepDoc verification steps.
See Launch Service from Source for details.
📚 Documentation
📜 Roadmap
See the RAGFlow Roadmap 2026.
🏄 Community
🙌 Contributing
RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our Contribution Guidelines first.