项目快照:infiniflow/ragflow,约 88,596 个 Star,10,393 个 Fork;最新推送时间 2026-08-16T13:14:15Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/infiniflow/ragflow · https://ragflow.io

项目速览(TL;DR)
ragflow 是 infiniflow 维护的开源检索增强生成(Retrieval-Augmented Generation,RAG)引擎,项目描述强调将 RAG 能力与智能体(Agent)能力结合,为大语言模型(Large Language Model,LLM)提供上下文层。仓库默认分支为 main,许可证为 Apache-2.0,GitHub 页面资料显示 Star 为 88,596、Fork 为 10,393。
项目资料同时显示其仓库语言标注为 Go,但依赖清单包含大量 Python 包,且 pyproject.toml 将 Python 版本约束为 >=3.13,<3.14。因此,部署评估不能只依据仓库语言标签,还应同时核对 Go、Python、Docker、Docker Compose 以及文档解析、模型调用和数据存储相关组件。
- 项目:RAGFlow
- 仓库:
infiniflow/ragflow - 版本资料:
pyproject.toml中为0.26.4 - 默认分支:
main - 许可证:Apache License 2.0
- 官网与文档:
https://ragflow.io
定位与目标用户
RAGFlow 的定位不是单一向量检索库,而是围绕文档理解、分块、召回、重排序、引用和智能体编排组织的 RAG 工作流引擎。README 将其描述为面向不同规模企业的 RAG 工作流,目标是把复杂数据转化为可用于生产系统的 AI 应用。
它更适合需要处理非结构化资料、希望保留回答依据,并且需要通过可视化或 API 接入业务系统的团队。对于只需要在程序中调用一个嵌入模型或实现基础相似度搜索的项目,RAGFlow 所包含的文档处理、工作流和外部连接能力可能超出需求;这一判断属于根据本文作者的经验判断,资料未提供与其他产品的性能对比。
目标问题
- 企业内部文档、扫描件、表格和网页内容需要统一进入知识库。
- 文档版式复杂,纯文本抽取会丢失结构、表格或图像语义。
- 回答需要展示参考片段和可追踪引用,而不是只返回没有依据的生成文本。
- 检索流程需要同时使用多路召回与融合重排序。
- 知识问答之外,还需要使用 Agent 和模型上下文执行更复杂的流程。
核心功能
RAGFlow 的核心能力集中在“数据进入系统后如何被理解、切分、检索和引用”这一链路。每项能力都依赖相应的解析器、嵌入模型、语言模型或存储组件,实际部署时应根据数据类型和模型供应商配置依赖。
深度文档理解
项目通过 deepdoc/README.md 所对应的 DeepDoc 能力,从格式复杂的非结构化数据中提取知识。输入可以是 Word、Slides、Excel、TXT、图像、扫描副本、结构化数据和网页等;输出不是简单的原始文件,而是供后续分块与检索使用的文档内容和结构信息。
README 没有在所给资料中公布具体解析算法、字段格式、支持文件大小或单文件耗时,因此不能据此推导处理上限。PDF 或 DOCX 中的图像理解还涉及多模态模型(Multimodal Model),README 的更新记录明确提到该能力,但没有给出调用接口签名。
模板化分块
模板化分块(Template-based Chunking)用于控制文档如何切成检索单元。README 将其特征概括为可解释、可配置,并提供多种模板选项;界面还支持展示文本分块结果,使人工能够检查和干预切分效果。
其输入是解析后的文档内容,输出是可被嵌入和召回的文本块及其关联信息。资料没有列出模板名称、配置字段、分块长度、重叠策略或默认模板,因此这些细节应以最新文档和实际版本为准,不能从项目描述中补写。
多路召回与融合重排序
RAGFlow 支持多路召回(Multiple Recall)并配合融合重排序(Fused Re-ranking)。在工作机制上,查询先从知识库中取得候选内容,再通过重排序整合候选结果,最终将更相关的内容交给生成模型;README 明确说明这一点,但没有给出召回通道数量、排序算法、阈值或默认参数。
该链路的输入包括用户问题、知识库内容和嵌入模型产生的表示,输出是供回答生成使用的上下文。若系统启用引用能力,还会同时保留参考文本块,以便在回答中展示依据。
基于引用的回答
项目提供文本分块可视化、关键参考内容快速查看和可追踪引用。触发条件是回答流程使用了知识库检索结果;检索到的文本块会作为上下文输入模型,并以引用信息支持回答的可核查性。
这种机制可以把“生成内容”和“检索证据”分开检查,但不能据资料承诺回答绝对正确,也不能把引用存在等同于事实准确。README 没有公布引用格式、引用 API、引用缺失时的处理策略或评测指标。
智能体与工作流
RAGFlow 将 RAG 与 Agent 能力结合,并提供预构建的 Agent 模板。README 的更新记录还列出 Agent 记忆、Agentic Workflow、模型上下文协议(Model Context Protocol,MCP)、Python/JavaScript 代码执行组件,以及通过聊天渠道接入的能力。
代码执行组件属于需要额外隔离的功能,README 明确说明只有计划使用代码执行器(sandbox)时才需要安装 gVisor。代码执行涉及不可信输入、文件访问和网络访问边界,部署时应只在获得授权的本地或隔离环境中启用;具体沙箱策略和权限配置未在给定资料中展开。
系统架构与关键模块
README 提供了系统架构图,但本资料不包含图中每个组件的文字说明。因此,下面只根据可核查的仓库文件、依赖和 README 功能描述归纳模块边界,不把未提供的端口、服务名或内部接口当作事实。
数据接入与解析层
该层负责接收不同格式的资料并完成内容抽取。依赖中可见 python-docx、python-pptx、pdfplumber、pypdf、python-calamine、opencv-python 和 tika 等包,说明项目在 Python 侧覆盖办公文档、PDF、表格和图像处理场景。
README 还列出 MinerU 与 Docling 作为文档解析方法,并列出来自 Confluence、S3、Notion、Discord、Google Drive 的数据同步能力。资料没有说明这些连接器是否全部默认启用,也没有提供每种连接器所需的凭据字段。
检索与上下文层
该层连接嵌入模型、向量或全文检索组件、重排序逻辑和 LLM。Go 依赖中出现 Elasticsearch、OpenSearch、Infinity、MySQL、PostgreSQL 驱动、Redis 客户端和 MinIO 客户端,Python 依赖中也出现 infinity-sdk、opensearch-py、elasticsearch-dsl、minio 等组件。
这些依赖只能证明仓库声明了相应集成方向,不能证明每一种后端都适合任意生产规模,也不能推出默认使用哪一种后端。部署选择应以目标版本的官方配置文档和源代码实际启用路径为准。
服务与 API 层
Go 模块包含 github.com/gin-gonic/gin、WebSocket、JWT、OpenTelemetry 和 Zap 等依赖,Python 侧包含 Flask、Quart、CORS、登录会话和 API 文档相关包。由此可确认仓库同时包含 Go 与 Python 服务能力以及 HTTP、WebSocket、认证和可观测性相关实现。
资料没有提供服务拓扑、监听端口、API 路径、认证配置或健康检查地址。任何面向部署的端口映射和接口调用,都必须从目标提交的 Docker Compose、环境变量示例或官方文档核对后再使用。
Agent 执行层
Go 依赖中包含 Eino、AgentRun、Stagehand、E2B 和 UCloud Sandbox 相关 SDK,Python 依赖中包含 agentrun-sdk、langgraph、mcp 和浏览器、搜索类组件。它们对应工作流编排、工具调用、代码或浏览器执行及外部服务接入等方向。
这些能力会扩大系统对外部网络、凭据、执行环境和数据权限的依赖。对于仅需离线知识问答的部署,应先确认是否需要加载这些组件,避免在没有明确授权和隔离策略时启用执行型工具。
依赖与运行环境
官方 README 给出了自托管的最低前置条件,项目元数据又给出了 Python 和 Go 的版本约束。下面的环境清单只复述资料中的明确内容,不补充未公布的操作系统、GPU、磁盘吞吐或并发要求。
| 类别 | 资料中的要求 | 用途或说明 |
|---|---|---|
| CPU | 至少 4 核 | README 列出的自托管前置条件 |
| 内存 | 至少 16 GB | README 列出的自托管前置条件 |
| 磁盘 | 至少 50 GB | README 列出的自托管前置条件 |
| Docker | 至少 24.0.0 | 用于自托管容器环境 |
| Docker Compose | 至少 v2.26.1 | 用于自托管编排 |
| Python | >=3.13,<3.14 | 来自 pyproject.toml 的项目约束 |
| Go | 1.26.4 | 来自 go.mod 的模块语言版本声明 |
| gVisor | 按需安装 | 仅在使用代码执行器沙箱功能时需要 |
Python 依赖包含模型供应商 SDK、文档处理包、数据库驱动、对象存储客户端、搜索客户端和 Agent 相关库。由于清单中存在大量精确版本、范围版本和平台条件,直接改变 Python 或 Go 版本可能改变解析、模型调用或编译结果;版本升级应通过锁定依赖和测试环境验证。
快速开始
资料明确提供了 RAGFlow Cloud 地址和 Docker Hub 镜像地址,但给定 README 片段在“Self-Hosting”前置条件处截断,没有包含完整的自托管启动命令、端口映射、默认账号或验证 API。为避免虚构,下面只给出资料中可以核查的最小准备与验证步骤。
安装:准备运行时与镜像
docker --version
docker compose version
python3 --version
docker pull infiniflow/ragflow:v0.26.4其中镜像标签 v0.26.4 出现在 README 的 Docker 镜像徽章替代文本中,项目版本 0.26.4 也出现在 pyproject.toml。命令不会启动服务,也不会写入业务数据;它只验证本地工具存在并拉取资料中出现过的镜像标签。
运行:使用官方部署文件
git clone --branch main https://github.com/infiniflow/ragflow.git
cd ragflow
# 官方仓库未提供于本资料中的完整自托管启动命令、Compose 文件名和端口映射。
# 请以最新 README 与官方文档中的自托管章节为准。仓库地址和默认分支来自题设资料,因此克隆命令的目标是明确的。由于没有获得完整 Docker Compose 配置,不能编写未经核实的 docker compose up 参数、端口或环境变量;将这类信息直接写入生产脚本会造成部署风险。
验证:检查准备结果
docker image inspect infiniflow/ragflow:v0.26.4
test -d ragflow && printf '%s\n' "source tree ready"
python3 --version这组命令只能验证镜像已存在、源码目录已创建以及 Python 版本命令可执行,不能证明 RAGFlow 服务已经运行。服务启动后的健康检查地址、默认端口和首次登录流程,官方仓库未提供该信息,建议以最新 README 为准。
“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”
来源:README
配置说明
已给资料中没有提供 .env.example、Docker Compose 配置或完整环境变量表,因此不能凭空列出服务端口、数据库地址、模型密钥和管理员账号。下表仅整理项目元数据与运行时约束中真实出现的字段,作用按文件语义说明。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
project.name |
字符串 | ragflow |
Python 项目名称,来自 pyproject.toml |
project.version |
字符串 | 0.26.4 |
Python 项目版本,来自 pyproject.toml |
project.requires-python |
版本范围 | >=3.13,<3.14 |
限制 Python 运行时版本 |
project.license-files |
文件列表 | ["LICENSE"] |
声明发行包中的许可证文件 |
go |
版本字符串 | 1.26.4 |
Go 模块语言版本声明,来自 go.mod |
dependency-groups.test |
依赖列表 | 测试依赖列表 | 包含 pytest、pytest-asyncio、pytest-cov 等测试工具 |
gVisor |
运行时组件 | 未提供 | 仅代码执行器沙箱功能需要,默认是否启用未提供 |
模型、嵌入、搜索、对象存储和外部数据源的配置字段均未出现在给定资料中。API 密钥、OAuth 凭据、数据库密码等敏感参数不应写入源码或公开日志;本文不提供虚构的字段名,实际配置应从目标版本官方文档和仓库配置样例复制后再填入。
进阶用法
进阶使用的重点是把 RAGFlow 当作数据处理与 Agent 编排平台,而不是只把它当作问答页面。资料明确提到多种数据同步源、模型、解析器、执行器和聊天渠道,但没有提供完整的端到端配置样例。
按数据类型选择解析路径
对于办公文档、PDF、表格、图像和扫描副本,应先确认解析结果是否保留标题、表格、页码和图像关联,再进入分块阶段。README 提到 MinerU、Docling 和基于 DeepDoc 的深度文档理解,但没有给出选择规则;因此,解析器选择应通过代表性样本进行人工核对,而不应仅依据文件扩展名决定。
把分块结果纳入评审流程
项目提供文本分块可视化,适合将分块作为知识库发布前的审核步骤。输入是一批原始文档,审核对象是被切分后的文本块及其上下文,审核结果应关注标题归属、表格完整性、跨页内容和引用可追踪性。
资料没有提供自动评测命令、质量阈值或基准数据。团队可以自行建立测试集,但任何准确率、召回率或延迟数字都必须以实际测量结果为准,不能把仓库 Star、Fork 或 README 的功能列表当作质量指标。
接入 Agent 与 MCP
README 更新记录列出 Agentic Workflow 和 MCP 支持,依赖文件也包含 mcp、langgraph 与 AgentRun SDK。使用这类能力时,应先定义工具输入、输出、授权范围和失败处理,再将知识检索作为工作流中的一个受控步骤。
如果工作流需要 Python 或 JavaScript 代码执行,应单独部署沙箱并限制其网络、文件和凭据访问。gVisor 是 README 明确列出的前置组件,但资料没有给出完整沙箱启动参数,因此不提供未经核实的执行代码。
连接外部数据源与渠道
README 的更新记录提到 Confluence、S3、Notion、Discord、Google Drive 数据同步,以及 Feishu、Discord、Telegram、Line 等聊天渠道。每种集成都涉及第三方账号、授权范围和数据生命周期,接入前应为每个连接器配置独立凭据,并将同步内容限制在已获授权的空间或数据集内。
可观测性与运维
仓库依赖中包含 OpenTelemetry、Zap、日志轮转和多种服务组件,说明代码层考虑了追踪与日志能力。但给定资料没有提供指标名称、日志格式、采样率、告警规则、备份策略、升级窗口或服务等级协议。
部署前检查
- 核对 CPU、内存、磁盘、Docker、Docker Compose 和 Python 版本是否满足 README 要求。
- 确认所选模型供应商、嵌入模型、搜索后端和对象存储的凭据来源。
- 确认知识库原始文件、解析结果、向量或索引数据的保存位置及访问权限。
- 若启用代码执行器,确认 gVisor 已安装,并完成隔离、网络和文件权限验证。
- 在升级前保存配置、索引和文档处理结果;具体备份命令未在资料中提供。
运行中检查
建议将文档解析失败、模型调用失败、召回为空、引用缺失和 Agent 工具异常分别记录,避免只观察最终 HTTP 状态。OpenTelemetry 依赖可以作为追踪实现基础,但仓库资料没有给出具体导出器和仪表盘配置,不能据此断言某种监控系统已经默认可用。
对于同步任务,应记录数据源、同步范围、开始时间、结束时间、失败对象和重试结果。以上属于根据本文作者的经验判断,不是 README 已承诺的内置运维字段。
安全与合规边界
RAGFlow 可接入企业文档、第三方数据源、聊天渠道和代码执行器,因此安全边界应围绕数据授权、凭据保护、执行隔离和输出审计建立。本文只讨论获得授权的本地、测试或企业内部环境,不提供面向未授权目标的访问、攻击或绕过检测方法。
数据与凭据
- 只同步当前账号和组织明确授权的数据源、频道、文档库或对象存储路径。
- 模型 API 密钥、OAuth 令牌、数据库密码和聊天渠道凭据应通过受控密钥管理方式注入,不能提交到 Git 仓库。
- 对原始文件、解析文本、嵌入结果、检索日志和回答引用分别设置访问权限。
- 涉及个人信息、商业秘密或受监管数据时,应由数据控制方确认留存期限、跨境传输和第三方模型处理条款。
代码执行与外部工具
代码执行器、浏览器工具、搜索工具和 MCP 工具会使 Agent 获得超出纯文本生成的能力。应将它们放入隔离环境,使用最小权限账号,限制网络出口和文件挂载,并对工具调用参数及返回结果进行审计。
资料只确认 gVisor 在使用代码执行器时是必要条件,没有提供完整安全基线、容器权限清单或合规认证信息。不能据此宣称系统满足特定行业法规、等保要求、隐私认证或安全等级。
许可证与商用条款
仓库使用 Apache License 2.0。LICENSE 明确授予永久、全球范围、非排他、免版税且不可撤销的版权许可,并包含相应的专利许可条款;许可范围覆盖复制、制作衍生作品、公开展示、公开表演、再许可和分发,但必须遵守许可证条件。
Apache-2.0 通常允许商业使用、修改和分发,但具体行为必须以仓库 LICENSE 为准。分发原项目或衍生作品时,至少应向接收者提供许可证副本;修改过的文件需要保留显著的修改说明;还需要保留源文件中的版权、专利、商标和归属声明。
如果发行内容包含 NOTICE 文件,还应按 LICENSE 的要求提供其中的归属声明。Apache-2.0 本身不授予使用许可方商号、商标、服务标记或产品名称的权利;商标使用边界以仓库 LICENSE 和相关权利人要求为准。
许可证允许商用不等于项目提供商业支持、SLA、模型服务或合规担保。给定资料没有商业支持条款、托管服务合同或服务等级承诺,相关事项应另行核实。
局限性与已知限制
资料可以确认 RAGFlow 的功能范围,但不足以确认许多部署决策所需的定量指标。以下限制是资料缺口或部署边界,不应被表述为未经测试的性能结论。
- 未提供吞吐量、并发数、延迟、召回率、准确率或上下文长度基准。
- 未提供完整自托管启动命令、Compose 文件名、服务端口和默认环境变量。
- 未提供各类解析器的兼容矩阵、文件大小上限和失败恢复策略。
- 未提供模型供应商选择规则、嵌入维度约束、重排序阈值和引用 API 格式。
- 未提供数据库、对象存储、搜索后端的容量规划、备份恢复和升级迁移说明。
- 依赖清单较长,且 Python 版本要求为 3.13 系列,构建前需要验证平台和二进制依赖兼容性。
- 代码执行器和外部工具的完整隔离配置未出现在给定资料中,不能直接按本文推导生产安全配置。
这些限制并不等同于项目缺少对应能力,而是说明当前资料不足以支持更具体的承诺。部署方案应使用目标提交、发行说明和官方文档进行逐项核对。
适合谁
下面的判断依据是 README 功能、依赖和运行要求,适合用于初步筛选,不替代对数据规模和安全要求的实测。
- 团队需要同时处理 Word、Slides、Excel、PDF、扫描件、图像、结构化数据或网页,而不是只处理纯文本。
- 团队需要人工查看分块结果、快速查看参考片段,并在回答中保留可追踪引用。
- 已有 Python 3.13、Docker 24.0.0 及 Docker Compose v2.26.1 或更高版本的测试环境。
- 业务需要在知识问答之外编排 Agent、MCP、代码执行或外部数据同步流程。
- 团队能够自行管理模型凭据、搜索或存储后端,并承担开源软件的部署、升级和运维工作。
不适合谁
以下信号表示应谨慎评估,或先选择范围更小的实现。这里不对任何未出现在资料中的替代产品做性能比较。
- 项目只需要在现有应用中嵌入基础向量检索,不需要文档解析、分块可视化、引用和 Agent 工作流。
- 部署环境无法满足至少 4 核 CPU、16 GB 内存、50 GB 磁盘及 Docker 相关前置条件。
- 团队不能接受 Python 版本约束
>=3.13,<3.14,或无法验证长依赖链的构建兼容性。 - 数据处理必须完全离线,但业务方案又依赖外部模型、聊天渠道或云数据同步;此时需要先核对各组件的实际网络行为。
- 组织要求已有明确 SLA、认证或供应商支持承诺,而项目采购与支持条款尚未单独确认。
常见问题与排查(FAQ / Troubleshooting)
排查应先区分环境问题、解析问题、检索问题、模型问题和 Agent 工具问题。给定资料未提供完整错误码和健康检查接口,以下步骤只使用已知前置条件和可核验文件。
为什么仓库语言是 Go,但安装依赖主要是 Python
GitHub 元信息将语言标注为 Go,仓库同时包含 pyproject.toml 和 go.mod。前者声明了 Python 项目版本与大量 Python 依赖,后者声明 Go 模块及其依赖,因此不能只按单一语言项目处理构建和运行环境。
Docker 版本满足要求但仍无法启动怎么办
先核对 Python、Go、CPU、内存和磁盘要求,再检查目标版本的部署文件与配置。当前资料没有完整 Compose 启动命令、端口和日志样例;如果问题涉及这些内容,官方仓库未提供该信息,建议以最新 README 为准。
代码执行器为什么需要 gVisor
README 明确将 gVisor 列为代码执行器沙箱功能的必要条件。若不使用代码执行器,则 README 将其标为非必需;是否默认启用执行器、如何配置沙箱和如何限制网络,给定资料没有说明。
模型调用失败应检查哪些内容
应核对模型供应商 SDK、嵌入模型、语言模型、凭据和网络访问权限。依赖清单列出了多个模型 SDK,包括 Anthropic、Google GenAI、Groq、Mistral、Ollama、Qianfan、Replicate、Tencent Cloud、Volcengine、VoyageAI 和 Zai SDK,但资料没有提供统一模型配置字段或接口签名,不能用未核实的环境变量替代官方配置。
回答没有引用或引用内容不相关怎么办
先在分块可视化中检查原始文档是否被正确解析,再检查模板化分块是否保留了标题、表格和上下文。随后核对嵌入模型、召回配置和重排序流程;README 只确认这些能力存在,没有给出阈值或质量保证,因此需要使用实际样本验证。
如何确认使用的是哪个版本
Python 项目元数据显示版本为 0.26.4,README 的 Docker 徽章文本出现 infiniflow/ragflow:v0.26.4。部署时还应记录 Git 提交、镜像摘要和配置版本;资料没有提供对应记录命令或发布流程。
项目地址与资源
以下链接均来自题设资料或 README 中出现的项目资源,适合用于源码、文档、路线图和社区信息核对。



