Skip to content

Latest commit

 

History

History
397 lines (278 loc) · 19.5 KB

File metadata and controls

397 lines (278 loc) · 19.5 KB

README in English 简体中文版自述文件 繁體版中文自述文件 日本語のREADME 한국어 README en Français Bahasa Indonesia Português(Brasil) README in Arabic Türkçe README Русская версия README

follow on X(Twitter) Static Badge RAGFlow Docker image downloads Latest Release license

RAGFlow in the GitHub Octoverse
infiniflow%2Fragflow | Trendshift
📕 目录

💡 RAGFlow 是什么?

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,通过融合前沿的 RAG 技术与 Agent 能力,为大型语言模型提供卓越的上下文层。它提供可适配任意规模企业的端到端 RAG 工作流,凭借融合式上下文引擎与预置的 Agent 模板,助力开发者以极致效率与精度将复杂数据转化为高可信、生产级的人工智能系统。

🎮 快速开始

请登录网址 https://cloud.ragflow.io 体验云服务。

如果想在本地部署,请参阅本地部署。

Chunking demonstration Agentic workflow demonstration

🔥 近期更新

  • 2026-09-10 支持通过 Sitemap 接入网站内容。
  • 2026-08-19 推出知识编译,支持在文档级和知识库级生成 Wiki、Graph、Tree、PageIndex、Mind Map、Timeline 及 Skills。
  • 2026-08-19 推出 Agentic RAG,支持 Low、Medium、High、Ultra 四种思考模式。
  • 2026-07-02 支持 Google BigQuery 数据源接入与增量同步。
  • 2026-06-29 支持 WhatsApp、钉钉和企业微信聊天渠道。
  • 2026-05-26 新增 Browser 组件,支持 Agent 自主浏览和操作网页。
  • 2026-04-21 提供七种预置数据摄取流水线模板。
  • 2026-04-21 支持 Agent 应用发布、沙箱代码执行与图表生成。
  • 2026-04-21 支持用户级记忆存储和检索。

更多更新请参阅完整发布记录。

🎉 关注项目

⭐️ 点击右上角的 Star 关注 RAGFlow,可以获取最新发布的实时通知!🌟

RAGFlow feature updates

🌟 主要功能

🍭 "Quality in, quality out"

  • 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
  • 真正在无限上下文(token)的场景下快速完成大海捞针测试。

🍱 基于模板的文本切片

  • 不仅仅是智能,更重要的是可控可解释。
  • 多种文本模板可供选择。

🧩 知识编译(Knowledge Compilation)

  • 支持文档级和知识库级编译,将原始内容组织为结构化的知识产物。
  • 通过编译模板生成 Wiki、Graph、Tree、PageIndex、Mind Map、Timeline 及 Skills,满足不同的知识组织和复用需求。
  • 支持配置编译模型与处理规则,并查看、更新和重新生成知识产物。

🧠 Agentic Retrieval

  • 面向复杂问题进行多步检索:模型会分析问题,并在需要时执行问题拆解、知识检索和证据核验。
  • 通过多轮检索与推理获取更完整的上下文,帮助生成有依据的回答。
  • 支持 Low、Medium、High、Ultra 思考模式,可按问题复杂度控制检索和推理深度。

⚙️ Go 原生服务架构

  • API、Admin、Ingestor 和 Syncer 由 Go 服务统一提供。
  • DeepDoc 在 Go 进程内运行,负责版面分析、OCR 和表格识别。
  • Go 服务通过 CGO 调用原生文档解析库和 ONNX Runtime。
  • MCP 和 Sandbox Executor 作为可选能力按需启用。

🌱 有理有据、最大程度降低幻觉(hallucination)

  • 文本切片过程可视化,支持手动调整。
  • 有理有据:答案提供关键引用的快照并支持追根溯源。

🍔 兼容各类异构数据源

  • 支持丰富的文件类型,包括 Word 文档、PPT、Excel 表格、TXT 文件、图片、PDF、影印件、复印件、结构化数据、网页等。

🛀 全程无忧、自动化的 RAG 工作流

  • 自动化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
  • 大语言模型 LLM 以及向量模型均支持配置。
  • 基于多路召回、融合重排序。
  • 提供易用的 API,可以轻松集成到各类企业系统。

🔎 系统架构

RAGFlow system architecture

🏠 本地部署

本地部署提供 Docker 部署和源码启动两种方式:Docker 适合快速体验、集成测试和生产部署;源码启动适合 Go 服务开发、调试和二次开发。Docker 部署无需安装 Go,源码启动需要安装 go.mod 指定的 Go 版本;前端开发还需要 Node.js 和 npm。

🐳 Docker 部署

📝 Docker 部署前提条件

  • 建议起步配置:4 核 CPU、16 GB 内存和 50 GB 可用磁盘。实际资源需求取决于文档引擎、数据规模、解析任务和并发量;启用本地模型或其他额外组件时,请同时满足相应组件的资源要求。
  • Docker ≥ 24.0.0,Docker Compose ≥ v2.26.1。
  • gVisor:仅在使用 Self-Managed 容器 Sandbox 时需要安装和配置。

Docker 部署无需在宿主机安装 Go。使用 Self-Managed 容器 Sandbox 时需要额外安装和配置 gVisor,其他 Sandbox Provider 不要求在 RAGFlow 主机上安装 gVisor。

⚠️ 提示: 如果你尚未在本机安装 Docker(Windows、macOS 或 Linux),可以参考 Install Docker Engine 自行安装。

🚀 启动服务器

  1. 如果使用 Elasticsearch,将 Docker 主机的 vm.max_map_count 设置为至少 262144。使用 Infinity 时通常不需要执行此步骤:

    如需确认 vm.max_map_count 的大小:

    sysctl vm.max_map_count

    如果使用 Elasticsearch 且 vm.max_map_count 的值小于 262144,可以进行重置:

    # 这里我们设为 262144:
    sudo sysctl -w vm.max_map_count=262144

    你的改动会在下次系统重启时被重置。如果希望做永久改动,还需要在 /etc/sysctl.conf 文件里把 vm.max_map_count 的值再相应更新一遍:

    vm.max_map_count=262144
  2. 克隆仓库:

    git clone https://github.com/infiniflow/ragflow.git
  3. 切换到 Go 版发布标签并使用 Docker Compose 启动服务器:

    ⚠️ 提示: v1.0.0-rc1 及之后的发布标签使用 Go 实现。详细平台和 macOS 要求请参阅Go Docker 镜像构建与平台支持说明。

    进入仓库中的 Docker 部署目录。

    cd ragflow/docker

    切换到 Go 版 v1.0.0-rc1 发布标签。

    git checkout v1.0.0-rc1

    在后台启动 Go 服务及其依赖服务。

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

    💡 镜像下载提示: 如果无法从默认仓库拉取 Go 镜像,请先在 docker/.env 中将 RAGFLOW_IMAGE 设置为以下镜像源之一,并保留 v1.0.0-rc1 标签:

    • 华为云:swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v1.0.0-rc1
    • 阿里云:registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:v1.0.0-rc1

    默认 MySQL 配置下,Go 镜像入口会先执行数据库迁移,再通过 bin/ragflow_server 启动 Syncer、Admin、API 和 Ingestor。

    RAGFlow 开源版 1.0 的 DeepDoc 版面分析、OCR 和表格识别使用 CPU 推理。

  4. 服务器启动成功后再次确认服务器状态:

    使用 docker ps 检查依赖服务状态;依赖服务显示 healthy 且 RAGFlow 容器持续运行后,通过 HTTP 接口判断 RAGFlow 是否就绪(RAGFlow 容器本身未定义 Compose healthcheck):

    curl -f http://localhost/api/v1/system/healthz

    返回 HTTP 200 后,再访问 Web 页面。如果修改了 SVR_WEB_HTTP_PORT,请将健康检查地址中的端口替换为对应值。

    如果服务启动异常,再查看对应容器日志:

    docker logs --tail 50 ragflow-cpu
  5. 在你的浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。

    上面这个例子中,您只需输入 http://IP_OF_YOUR_MACHINE 即可:未改动过配置则无需输入端口(默认的 HTTP 服务端口 80)。

  6. 登录 RAGFlow 后,在模型提供商页面添加 LLM、Embedding 和 Reranker,并填写对应的模型名称、服务地址和 API key。

    详见 llm_api_key_setup。

    好戏开始,接着奏乐接着舞!

详情请见 快速入门指南。

⚙️ Docker 配置与调整

Go 版 Docker 部署使用 docker/.env 和 docker/docker-compose.yml,使用 Kvrocks 存储缓存和 Checkpoint,并使用 NATS JetStream 作为消息队列。镜像、端口、密码、文档引擎及模型镜像源请按Docker 配置说明修改;平台限制和 macOS 运行要求请参阅Go Docker 镜像构建与平台支持指南。源码构建 Docker 镜像请参阅Go Docker 镜像构建与平台支持指南。

切换文档引擎、修改配置后重启服务,以及保留或清理已有数据的操作,也请按照上述 Docker 配置文档执行。

🔨 以源代码启动 Go 服务

📝 源码启动前提条件

源码启动请安装 go.mod 中指定的 Go 版本(当前为 Go 1.27)、Clang 20、LLD 20、CMake ≥ 4.0、PCRE2 开发文件和 CGO 所需的原生库。仅开发 React 前端时需要 Node.js 和 npm。

  1. 克隆仓库,并安装 go.mod 中指定的 Go 版本(当前为 Go 1.27)、Clang 20、LLD 20、CMake ≥ 4.0,以及 PCRE2 开发文件。Go 服务依赖 CGO 和原生静态库;build.sh 会设置所需的构建参数。

    git clone https://github.com/infiniflow/ragflow.git
    cd ragflow
  2. 按 Go 依赖下载脚本准备原生库、模型文件和 tokenizer 资源,再编译 Go 服务:

    python3 -m venv /tmp/ragflow-go-download-venv
    /tmp/ragflow-go-download-venv/bin/python -m pip install requests huggingface-hub
    /tmp/ragflow-go-download-venv/bin/python ragflow_deps/download_deps.py
    bash build.sh --all

    下载脚本负责准备 Go 构建所需的原生库和模型资源,并需要 requests 和 huggingface-hub。如果已通过其他方式准备好相同资源,可跳过这一步。Go 服务从仓库根目录启动时会自动查找 internal/rag/res/deepdoc;如需从其他目录启动,请将 DEEPDOC_MODEL_DIR 设为该目录的绝对路径。

  3. 启动本地依赖服务,并确认 conf/service_conf.yaml 中的主机与端口对应宿主机可访问的地址。Go 源码服务通过 localhost:6379 连接 Compose 暴露的 Kvrocks;Go Docker 服务则在容器网络中连接 Kvrocks。如果使用默认 Elasticsearch,还需先将 Docker 主机的 vm.max_map_count 设为至少 262144。

    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 clickhouse
  4. 先迁移数据库,再分别在 5 个独立终端中按顺序启动 Go 服务(命令均在仓库根目录运行)。每次只在对应终端中执行该终端下方的命令,不要把所有命令一次性粘贴到同一个终端。迁移命令无需设置 RAGFLOW_DEV_MODE;开发环境中的 Admin、Ingestor、Syncer 和 API 按下方命令设置 RAGFLOW_DEV_MODE=true。迁移命令执行完成后即可关闭终端,其他 4 个服务终端需要保持运行。

    终端 1:迁移数据库。

    ./bin/ragflow_server --migrate

    终端 2:启动 Admin(目标端口 9381)。

    RAGFLOW_DEV_MODE=true ./bin/ragflow_server --admin

    终端 3:启动 Ingestor。

    RAGFLOW_DEV_MODE=true ./bin/ragflow_server --ingestor

    终端 4:启动 Syncer。

    RAGFLOW_DEV_MODE=true ./bin/ragflow_server --syncer

    终端 5:启动 API(目标端口 9380)。

    RAGFLOW_DEV_MODE=true ./bin/ragflow_server --api

    各启动模式的作用如下:

    • --migrate:执行数据库迁移,完成后即可退出。
    • --admin:启动 Admin 服务,负责管理和初始化操作。
    • --ingestor:启动 Ingestor 服务,负责数据摄取和解析任务。
    • --syncer:启动 Syncer 服务,负责数据同步任务。
    • --api:启动 API 服务,为 Web、SDK 和外部客户端提供接口。

    RAGFLOW_DEV_MODE=true 仅用于开发环境关闭代码版本与数据库迁移版本之间的降级检查,不会执行迁移或改变数据库结构,生产部署不要设置此变量。Admin 应先于其他服务启动。数据库迁移完成后,RAGFLOW_DEV_MODE=true bash build.sh --run 可作为便捷方式启动 Admin、Ingestor 和 API;该命令不启动 Syncer,需要完整服务链路时仍应另行执行 RAGFLOW_DEV_MODE=true ./bin/ragflow_server --syncer。

  5. 仅在前端开发时安装 Node.js 和 npm,然后启动 React 前端:

    cd web
    npm install
    API_PROXY_SCHEME=go npm run dev

    服务启动后,在另一个终端确认 Go API 已就绪:

    curl -f http://127.0.0.1:9380/api/v1/system/healthz

    返回 HTTP 200 表示 API 可以正常响应。前端、ClickHouse 和 DeepDoc 的完整验证步骤请参阅从源代码启动服务。

    开发结束时,在各服务终端按 Ctrl+C 停止进程。如需停止依赖但保留容器以便下次使用,运行 docker compose --env-file docker/.env -f docker/docker-compose-base.yml stop es01 mysql minio nats kvrocks clickhouse;如需删除依赖容器和 Compose 网络但保留命名数据卷,运行 docker compose --env-file docker/.env -f docker/docker-compose-base.yml down。

详情请见 从源代码启动服务。

📚 技术文档

📜 路线图

详见 RAGFlow Roadmap 2026 。

🏄 开源社区

🙌 贡献指南

RAGFlow 只有通过开源协作才能蓬勃发展。秉持这一精神,我们欢迎来自社区的各种贡献。如果您有意参与其中,请查阅我们的贡献者指南。

🤝 商务合作

👥 加入社区

扫二维码添加 RAGFlow 小助手,进 RAGFlow 交流群。

RAGFlow assistant QR code