一、介绍
RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。与 LLM 集成后,它能够提供真实的问答功能,并以来自各种复杂格式数据的可靠引用为支撑。
RAGFlow 的安装基于Docker,具体步骤可参考官方使用文档或仓库的 README 文件。官方建议的配置是 16GB 内存、50GB 硬盘。若不想安装,也可访问官方提供的演示站点进行体验。
目前各版本区别如下表所示。slim精简版镜像体积较小,这里的镜像大小指的是已下载的 Docker 镜像的大小,该镜像是被压缩过的。Docker 运行镜像时会将其解压,这会导致磁盘占用量显著增加。例如,精简版镜像解压后会膨胀到 7GB 左右。
| RAGFlow image tag | Image size (GB) | Has embedding models and Python packages? | Stable? |
|---|---|---|---|
v0.20.5 |
≈9 | ✔️ | Stable release |
v0.20.5-slim |
≈2 | ❌ | Stable release |
nightly |
≈9 | ✔️ | Unstable nightly build |
nightly-slim |
≈2 | ❌ | Unstable nightly build |
二、功能
2.1 首页和设置
首页提供知识库、聊天、搜索、智能体、文件管理五大核心功能。知识库被置于首位,这或许表明RAGFlow的核心侧重点在于其RAG(检索增强生成)能力。
其设置界面与Dify类似,支持配置模型、MCP等功能,并提供了HTTP API接口及详细文档,便于外部系统集成调用。
2.2 知识库(Dataset)
知识库的操作
进入知识库首页,用户可管理现有知识库或创建新的知识库。每创建一个知识库,系统会在文件管理的root/.knowledgebase目录下自动生成对应的同名文件夹。此文件夹的内部管理通常无需用户直接介入。
知识库支持上传文件或创建空文件。上传的文件将统一存放在“文件管理”模块中。文档解析可在上传创建时执行,也可在文件列表中操作。官方建议将文件首先上传至文件管理模块,再将其链接到目标知识库,以实现文件与知识库的解耦管理。
文件操作
文件上传后,可查看其未解析、解析中、已取消、失败等多种状态,并支持启用/禁用、重命名、查看属性、下载、删除等操作。
用户可重新解析文件,并选择是否清空已解析的分块。每个文件可单独设置切片方式,解析时将优先采用文件自身的配置,而非知识库的默认设置。

文档支持设置元数据。例如,若有一个HTML文件数据集,并希望LLM在响应查询时引用源URL,可向每个文件的元数据中添加“url”参数。
分块管理
RAGFlow提供可见性和可解释性,允许用户查看分块结果并进行干预。点击标题可查看详细的分块结果,支持创建、启用/禁用、删除分块。双击分块,还可添加关键词、问题、标签,或进行手动修改。
检索测试
用户可进行检索/召回测试,详细内容请参考:https://ragflow.io/docs/dev/run_retrieval_test

RAGFlow在聊天功能中融合了全文搜索与向量搜索的多重召回机制。在配置AI聊天前,建议调整以下参数,以确保答案中包含预期信息:
- • 相似度阈值:低于此阈值的内容块将被过滤。默认值为0.2。
- • 向量相似度权重:向量相似度对总分贡献的百分比。默认值为0.3。
分块方式
知识库配置支持修改名称、头像、描述等基本信息,同时可调整分块方式。每种切片方法均附带详细说明与示例。
可选分块方式如下表所示,不同方式支持的文件格式有所差异,通常情况下General模式即可满足需求。
| Template | Description | File format |
|---|---|---|
| General | 根据预设的块标记号对文件进行连续分块。 | MD, MDX, DOCX, XLSX, XLS (Excel 97-2003), PPT, PDF, TXT, JPEG, JPG, PNG, TIF, GIF, CSV, JSON, EML, HTML |
| Q&A | 只能有两列,问题和答案。 | XLSX, XLS (Excel 97-2003), CSV/TXT |
| Resume | 仅限企业版。您还可以在 demo.ragflow.io 上进行试用。将简历解析为结构化数据。 | DOCX, PDF, TXT |
| Manual | ||
| Table | 第一行必须是列标题,列标题必须是有意义的术语,会被按行分块。 | XLSX, XLS (Excel 97-2003), CSV/TXT |
| Paper | ||
| Book | DOCX, PDF, TXT | |
| Laws | DOCX, PDF, TXT | |
| Presentation | PDF, PPTX | |
| Picture | JPEG, JPG, PNG, TIF, GIF | |
| One | 每份文件都会完整地进行分块处理(作为一个整体)。 | DOCX, XLSX, XLS (Excel 97-2003), PDF, TXT |
| Tag | 知识库的作用是作为其他知识的标签集。一列用于标签描述,另一列用于标签,标签描述列位于标签列之前。 | XLSX, CSV/TXT |
文档解析器
在选择切片方法的同时,文档解析器DeepDoc的配置也至关重要。面对不同格式和检索要求的大量文档,准确分析成为一项极具挑战性的任务。DeepDoc正是为此目的而设计。目前,DeepDoc由视觉处理和解析器两大部分构成:
-
• 视觉处理
- • OCR(Optical Character Recognition,光学字符识别):鉴于大量文档以图像形式存在或可转换为图像,OCR是文本提取中至关重要、基础且通用的解决方案。
- • 布局识别:不同领域的文件(如报纸、杂志、书籍、简历等)具有多样化的布局。精准的布局分析能帮助系统判断文本段落的连续性,识别是否需要进行表结构识别(TSR),或是处理带有标题的图形。DeepDoc提供十种基本布局组件,覆盖多数场景:文本、标题、配图、配图标题、表格、表格标题、页眉、页脚、参考引用、公式。
- • TSR(表结构识别):数据表作为一种常见的数据表示结构,其复杂性可能体现在分层标题、跨单元格及投影行标题等方面。除TSR外,系统还会将表格内容重组为LLM易于理解的句子。TSR任务包含五个标签:列、行、列标题、行标题、合并单元格。
-
• 解析器
-
• PDF、DOCX、EXCEL 和 PPT 四种文档格式都有相应的解析器。PDF解析器最为复杂,主要因其格式的高度灵活性。PDF解析器的输出包括:
- • 包含其在PDF中位置信息的文本块(如页码和矩形坐标)。
- • 带有PDF裁剪图像的表格,以及已转换为自然语言句子的内容。
- • 带有标题和文字的图示。
-
2.3 聊天应用(Chat)
知识库、无幻觉聊天和文件管理是 RAGFlow 的三大支柱。RAGFlow 中的聊天基于一个或多个特定知识库。创建知识库、完成文件解析并运行检索测试后,即可开始 AI 对话。
RAGFlow聊天应用具备管理会话、多模型对比、嵌入网站、聊天设置等功能。前三项功能相对直观。接下来,将重点介绍聊天设置中的部分内容。
知识库
选择一个或多个知识库,但请确保它们使用相同的嵌入模型,否则可能出错。
推理
自v0.17.0版本起,RAGFlow支持在AI聊天中集成DeepResearch。要激活此功能,需在聊天设置中启用推理切换。
变量
变量是指系统提示中要使用的键。{knowledge}是一个保留变量,用于表示从指定知识库中检索到的内容块。点击“添加”可为系统提示添加更多自定义变量。若聊天助手与知识库关联,建议保留{knowledge}。自v0.17.0起,AI聊天可在不指定知识库的情况下启动,此时建议删除{knowledge}变量以避免不必要的引用,并清空“Empty response”字段以防止错误。除{knowledge}外,用户可自定义变量与系统提示词配合使用。自v0.20.5起,自定义变量的值需通过RAGFlow官方API传入。
执行过程
用户可点击答案上方的灯泡💡按钮,查看执行过程的详细信息。需注意,此按钮仅在当前会话且答案完全输出后可见,切换会话后将消失。此功能提升了RAGFlow的可解释性。

2.4 搜索( Search)
AI搜索是一种单轮AI对话,它使用预定义检索策略(加权关键词相似度和加权向量相似度的混合搜索)和系统默认聊天模型。AI搜索不涉及知识图谱、自动关键词或自动提问等高级RAG策略。相关内容块会根据其相似度得分按降序排列在聊天模型响应的下方。
在调试聊天助手时,AI搜索可作为验证模型设置和检索策略的参考。
聊天则是一种多轮AI对话,用户可在此定义检索策略(在混合搜索中,可使用加权重排序分数替代加权向量相似度)并选择聊天模型。在AI聊天中,可根据具体情况配置知识图谱、自动关键词和自动提问等高级RAG策略。检索到的内容块不会随答案显示。
搜索与知识库检索测试的区别在于:检索测试侧重于评估纯召回和重排序效果;而搜索则介于检索和聊天之间,其与聊天的核心差异在于不支持多轮对话。
2.5 智能体(Agent)
Agent和RAG是互补技术,能在业务应用中相互增强。RAGFlow v0.8.0引入了Agent机制,前端提供无代码工作流编辑器,后端提供基于图的全面任务编排框架。该机制构建于RAGFlow现有的RAG解决方案之上,旨在编排查询意图分类、对话引导和查询重写等搜索技术,以实现更高的检索率和适应更复杂的场景。
组件
开始组件(Begin)
开始组件是唯一存在的,支持配置模式、开场白和输入参数。模式分为对话式和任务两种,分别对应对话流和工作流。开场白仅在对话模式下可开启,作为向用户发送的第一条消息,可设为欢迎语或操作指引。输入可配置输入参数及全局变量,支持单行文本、段落文本、下拉选项、文件上传、数字、布尔值等类型。
Agent 组件
Agent节点集推理、反思、工具使用及多智能体协作能力于一身。RAGFlow目前仅提供Agent节点,若需使用LLM功能,则必须选择Agent组件。
用户首先可选择模型并配置推理参数。为方便操作,系统预设了多种自由度选项,用户可根据需求直接选用。
随后是系统提示词和用户提示词的配置,在提示词中输入斜杠可插入变量。
Agent组件支持配置工具和子智能体。工具包括系统内置工具(如联网、检索等)和MCP,同时支持配置子智能体。
最后是高级设置,涵盖历史消息窗口大小、引用策略、最大重试次数、错误延迟、最大反思轮数、异常处理方式等配置。
检索组件(Retrieval)
检索组件用于从指定数据集检索信息。在多数RAG场景中,信息首先从指定知识库提取,再发送至LLM生成内容。检索组件既可作为独立工作流模块运行,亦可作为Agent组件的工具。作为工具时,Agent组件能自主控制其调用时机以进行查询和检索。
两种模式的配置项内容相同,知识库支持多选。高级设置允许用户定义和微调检索组件的搜索行为。
其他组件
开始组件为内置项,Agent与检索组件是RAG的核心构成。此外,还包括对话类的回复消息和等待输入组件,流程控制中的判断、循环、问题分类,以及数据操控和工具等组件。
保存和历史版本
已修改的智能体支持保存及查看历史版本。然而,当前版本缺少撤销功能,且历史版本仅支持下载,不提供覆盖恢复选项。
运行和日志
聊天应用不提供日志功能,仅在右侧显示会话列表;而Agent模块则提供日志选项供用户查看。值得注意的是,聊天应用中点击答案上方小灯泡查看执行过程详情的功能并未在此处体现。
2.6 文件管理(File Management)
为避免永久删除已上传至知识库的文件,我们强烈建议将文件上传至RAGFlow的文件管理模块,再将其链接到目标知识库。
相比直接将文件上传到各个知识库,先上传到RAGFlow的文件管理再链接到不同的知识库,并非多余步骤,尤其是在需要删除部分解析过的文件或整个知识库,但仍需保留原始文件时。
官方文档建议将文件首先上传至文件管理模块,再将其链接到目标知识库,以实现文件与知识库的解耦管理。每个知识库在文件管理的root/.knowledgebase目录下都有对应的文件夹,在知识库中直接添加的文件会存放于此。该文件夹不支持创建子文件夹。文档地址:https://ragflow.io/docs/dev/manage_files
RAGFlow的文件存储可能基于MinIO,文件管理提供了树形多级目录的管理界面。界面提供了全面的基本操作,包括目录和文件的增、删、改名、移动、下载(仅支持单文件)、预览(针对特定文件格式)以及批量移动和删除。详细操作可参考官方文档。
此外,用户可将整个目录或某个文件关联到单个或多个知识库。被关联的内容会在知识库中显示,但其物理位置并不会复制到root/.knowledgebase/对应知识库名称文件夹内。用户可在知识库中解除关联。关联操作是单向的(知识库->内容),且允许重复关联同一内容,因此在知识库中的操作是安全的。
文件管理仅支持当前目录下的文件名和文件夹名过滤,不会检索子目录中的文件或文件夹。
自 RAGFlow v0.20.5 起,不再支持批量下载,也不能下载整个文件夹。
2.7 API 集成
RAGFlow 的 API 调用支持 RESTful 风格的 HTTP API 或 Python SDK。使用API前,需在账号设置中创建一个API KEY。
API 文档在官方文档中有详细说明,包括知识库、知识库内文件、知识库内文件的分块、聊天应用、智能体应用、会话管理等操作接口,具体链接放在文末。需要注意的是,文件管理模块似乎没有提供API。然而,对于需要API调用的场景,文件通常无需平台统一管理,通过外部系统集成即可。
三、 RAG 使用体验
3.1 文档处理和检索
文章前面已阐述,RAGFlow不仅提供多种切片方法,还针对各类文件进行了优化,特别是其自研的DeepDoc技术,能够从视觉层面处理PDF文件内容,而非单纯提取文本,对表格的处理效果尤其出色。
RAGFlow并非一劳永逸的解决方案,它更注重灵活性,支持深度定制以适应复杂用例。自v0.17.0版本起,RAGFlow将DeepDoc的数据提取任务与PDF文件分块方法解耦,使用户可自主选择OCR、TSR、DLR等视觉模型的策略,以平衡速度与性能,满足特定需求。若PDF仅包含纯文本,可选择“Naive”选项跳过这些任务,从而缩短整体解析时间。
知识库可设置标签、召回增强、知识图谱;文档可设置元数据;分块可设置关键词、QA。RAGFlow还提供了检索测试等RAG系统基本功能。值得注意的是,定义和微调检索组件的搜索行为并非在知识库配置中完成,而是在各个应用中单独配置。
3.2 聊天和智能体
RAGFlow功能完备,但在用户体验方面仍有提升空间。例如,缺乏错误检测机制,且提示词编辑器虽支持变量插入,但未提供直观的(x)删除按钮。
RAGFlow支持多语言选择,但中文翻译质量有待提高。例如,“相似度相似度权重”实指“向量相似度权重(Vector similarity weight)”,这类翻译问题影响了用户理解。
3.3 资源占用
在本地Docker部署未限制资源时,RAGFlow的内存占用约为8G,其中Elasticsearch(ES)的开销较高。若采用Infinity替代ES,内存占用可降至4G左右。
AI辅助总结了ES与Infinity的区别:
| 对比点 | Elasticsearch | Infinity |
|---|---|---|
| 主要定位 | 通用搜索引擎(全文检索为主,向量检索为辅) | 专注 RAG(全文 + 向量)场景的数据库 |
| 向量检索 | 插件扩展,性能一般 | 原生内核支持,性能优化好 |
| 全文检索 | 成熟、功能强大 | 功能覆盖常见需求,优化更贴近 RAG |
| 资源开销 | JVM 体系,内存大、运维成本高 | 较轻量,无 JVM 依赖 |
| 混合检索(Hybrid Search) | 需要额外配置 / pipeline | 内置支持 |
| 生态成熟度 | 高,配套工具多 | 仍在发展中,生态相对弱 |
| 适合场景 | 通用搜索 + 简单 RAG | 专注 RAG,追求性能 / 精度 / 一体化 |
用户可限制资源占用或使用外部独立部署的组件,但建议配置不低于4核8GB的资源。处理包含图片等复杂格式的文件时,解析任务的资源消耗较高,资源不足可能导致未知问题。参考FAQ:https://ragflow.io/docs/dev/faq#why-does-my-pdf-parsing-stall-near-completion-while-the-log-does-not-show-any-error,https://github.com/infiniflow/ragflow/issues/1453
3.4 总结
从目前的对比来看,RAGFlow在以下情况中具有显著优势:
- 1. 需要处理大量复杂且格式多样的文档,包括扫描件、图片、表格、混合格式等,并需进行OCR或解析排版结构的场景。
- 2. 对检索准确性要求极高,需精确引用、减少幻觉、确保答案可追溯性(traceability)的业务,如法律、医疗、金融报告、合同审查、审计等。
- 3. 需要定制检索策略、重排序、混合检索,或对比测试不同嵌入模型、召回策略的业务场景。
- 4. 团队具备一定的技术实力,能够进行模型的调试、部署、维护和流程优化,且资源充足。
四、RAG 检索优化
实践中,当知识库文件数量增多后,常出现语义模糊、同质化严重等问题。以下是一些可行的优化思路:
-
• 原始数据源
- • 相似文档可考虑合并。
- • 格式固定的文档建议采用表格形式。
- • 对于结构化数据,可为原始文件定义属性、分类、关键词、元数据等信息,以便在检索时直接根据字段进行过滤。
-
• 检索召回
- • 采用混合检索策略,结合全文检索、向量相似度检索及Re-rank重排序。
- • 使用高性能的Re-rank模型,先进行宽召回TopK,再通过精排选出TopN,既保证多样性又减少同质化。
- • 结合意图识别与查询改写,先利用LLM判断用户查询意图,再将意图融入提示词进行查询,以减少语义漂移和幻觉。
-
• 流程优化
- • 对于意图特别模糊的查询,可考虑追问用户或列出候选问题,引导用户二次提问。
- • 引入分类、路由、分层机制,首先识别主题/分类/层级,然后在检索时缩小范围。
-
• 生成
- • 若以上优化仍无法解决问题,可优化生成逻辑,以提升用户体验。
