微信扫码
添加专属顾问
 
                        我要投稿
RAGFlow:开源RAG引擎的深度解析,助你轻松实现文档智能问答。 核心内容: 1. RAGFlow的核心功能与安装配置指南 2. 知识库管理及文档解析的详细操作说明 3. 分块管理与元数据设置的高级技巧
 
                                
RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。与 LLM 集成后,它能够提供真实的问答功能,并以来自各种复杂格式数据的可靠引用为支撑。
RAGFlow 的安装是基于 Docker 的,具体的安装步骤可以直接参考 官方使用文档 或者仓库的 README文件,官方建议的配置是 16G 的内存、50G 的硬盘。如果不想安装也可以访问官方提供的 演示站点 进行体验。
目前的各个版本区别如下表所示,slim 精简版的镜像会小一点。这里的镜像大小指的是已下载的 Docker 镜像的大小,该镜像是被压缩过的。Docker 运行镜像时会将其解压,这会导致磁盘占用量显著增加。例如,精简版镜像解压后会膨胀到 7GB 左右。
| v0.20.5 | |||
| v0.20.5-slim | |||
| nightly | Unstable | ||
| nightly-slim | Unstable | 
进入首页可以切换语言,有知识库、聊天、搜索、智能体、文件管理 5 个功能,将知识库放在第一个而不是聊天或者智能体,可能也说明该工具侧重点跟名字一样,是在于 RAG 的功能吧。
和 dify 类似,设置里面可以配置模型、MCP 等功能,也提供了 HTTP API 接口及 文档 供外部调用。
进入知识库首页可以管理之前的知识库或创建新的知识库。每创建 1 个知识库,都会在文件管理的 root/.knowledgebase 目录下创建对应的同名文件夹,这个可以先不用管。
知识库可以上传文件,也可以上传空文件,上传的文件会存放在 文件管理 中。文档解析可以在上传创建时,也可以传好后在列表中操作。官方建议直接将文件上传到文件管理中,然后链接到目标知识库,以便于解耦。
上传后的文件有未解析、解析中、取消、失败等状态,可以进行启用/禁用、改名、查看属性、下载、删除等操作。
可以重新解析,重新解析的时候可以选择是否清空已解析出来的分块,每个文件可以单独设置切片方式,解析或重新解析的时候以自己的为准,不会使用知识库配置的切片方法。
文档可以设置元数据,比如如果您有一个 HTML 文件数据集,并且希望 LLM 在响应您的查询时引用源 URL,请向每个文件的元数据添加 "url" 参数。
RAGFlow 具有可见性和可解释性,允许您查看分块结果并在必要时进行干预。点击标题可以查看详细的分块结果,可以创建、启用/禁用、删除分块,双击分块可以添加关键字、问题、标签,或在必要时进行手动更改。
可以进行检索/召回测试,详细内容可以参考:https://ragflow.io/docs/dev/run_retrieval_test
RAGFlow 在聊天中使用了全文搜索和向量搜索的多重召回功能。在设置 AI 聊天之前,请考虑调整以下参数,以确保预期信息始终出现在答案中:
• 相似度阈值:相似度低于阈值的块将被过滤。默认情况下,该值设置为 0.2。 
• 向量相似度权重:向量相似度对总分的贡献百分比。默认设置为 0.3。 
可以配置知识库,普通选项可以修改名称、头像、描述这些基本信息。也可以修改分块方式,每一种切片方法还配了说明和示例。
可选的分块方式如下所示,不同方式支持的文件格式是不一样的,一般用 General 就行。
| Template | ||
|---|---|---|
其实在我们选择切片方法的同时,还有一个很重要的一个设置文档解析器:DeepDoc。不同格式和不同检索要求的大量文档,准确的分析成为一项极具挑战性的任务。DeepDoc 就是为了这个目的而诞生的。到目前为止,DeepDoc 中有两个组成部分:视觉处理和解析器。
知识库、无幻觉聊天和文件管理是 RAGFlow 的三大支柱。RAGFlow 中的聊天基于一个或多个特定知识库。创建知识库、完成文件解析并 运行检索测试 后,即可开始 AI 对话。
具有管理会话、多模型对比、嵌入网站、聊天设置等功能,前三个功能没有什么复杂的内容,挑一点聊天设置中的一些内容说下。
选择对应的知识库,可以选择一个或多个知识库,但请确保它们使用相同的嵌入模型,否则会出错。
从 v0.17.0 开始,RAGFlow 支持在 AI 聊天中集成 DeepResearch。要激活此功能,需要在聊天设置中启用推理切换。
变量是指系统提示中要使用的变量(键)。{knowledge} 为保留变量。点击 “添加” 可为系统提示添加更多变量。{knowledge} 是系统的保留变量,表示从“助手设置”选项卡下“知识库”指定的知识库中检索到的块。如果您的聊天助手与某些知识库关联,您可以保留它。从 v0.17.0 开始,您可以在不指定知识库的情况下启动 AI 聊天,在这种情况下,我们建议删除 {knowledge} 变量以避免不必要的引用,并将 Empty response 字段保留为空以避免出现错误。除了 {knowledge},您还可以定义自己的变量来与系统提示配对。要使用这些自定义变量,您必须通过 RAGFlow 的官方 API 传入它们的值。从 v0.20.5 开始,如果您在此处添加自定义变量,则传递其值的唯一方法是调用 API。
可以点击在答案上方的灯泡💡按钮查看执行过程的详细信息,但是要注意只有在当前会话中,答案全部输出完才有,离开或者查看其他对话不会有这个按钮。一开始我都没注意,以为是黑盒的看不到呢。
点击答案上方的灯泡图标,查看扩展的系统提示:Click the light bulb icon above the answer to view the expanded system prompt:
灯泡图标仅适用于当前对话。The light bulb icon is available only for the current dialogue.
AI 搜索是使用预定义检索策略(加权关键词相似度和加权向量相似度的混合搜索)和系统默认聊天模型进行的单轮 AI 对话。它不涉及知识图谱、自动关键词或自动提问等高级 RAG 策略。相关块会根据其相似度得分按降序排列在聊天模型的响应下方。
在调试聊天助手时,您可以参考 AI 搜索来验证您的模型设置和检索策略。
聊天是一种多轮 AI 对话,您可以在其中定义检索策略(在混合搜索中,可以使用加权重排序分数来替代加权向量相似度)并选择聊天模型。在 AI 聊天中,您可以根据具体情况配置高级 RAG 策略,例如知识图谱、自动关键词和自动提问。检索到的区块不会与答案一起显示。
搜索和知识库检索测试的区别,检索测试应该是看纯召回重排序的效果,搜索感觉是介于检索和聊天之间的一种状态,与聊天最大的区别是没有多轮对话。
Agent 和 RAG 是互补的技术,在业务应用中相互增强。RAGFlow v0.8.0 引入了 Agent 机制,前端提供无代码工作流编辑器,后端提供基于图的全面任务编排框架。该机制构建于 RAGFlow 现有的 RAG 解决方案之上,旨在编排查询意图分类、对话引导和查询重写等搜索技术,以实现以下目标:提供更高的检索率,适应更复杂的场景。
开始组件只能有一个,可以配置模式、开场白和输入参数。模式可以从对话式和任务之中选一个,就是对话流和工作流的区别;开场白只能在对话模式下选择开启,在聊天中向用户发送的第一条消息,可以是欢迎语或引导用户继续操作的指令;输入可以配置输入参数以及全局变量,可选类型:单行文本、段落文本、下拉选项、文件上传、数字、布尔值。
Agent 节点具备推理、反思、工具使用和多智能体协作能力,RAGFlow 只有 Agent 节点,没有纯 LLM 节点,需要用 LLM 的地方就要选择 Agent 组件了。
首先可以选择模型,并配置推理参数,并且预设了一些自由度选项,不理解这些参数的可以从中选一个。
然后是系统提示词和用户提示词,输入斜杠可以插入变量。
可以配置工具和子智能体,工具包括系统内置工具(联网、检索等)和 MCP,智能体可以配置子智能体。
最后是高级设置,包括历史消息窗口大小、引用、最大重试次数、错误后延迟、最大反思轮数、异常处理方式等配置内容。
从指定数据集检索信息的组件。在大多数 RAG 场景中,信息从指定的知识库中提取,然后发送到 LLM 进行内容生成。 检索组件既可以作为独立的工作流模块运行,也可以作为 Agent 组件的工具运行。在后者角色中, Agent 组件可以自主控制何时调用它进行查询和检索。
两种方式的配置项内容是一样的,知识库可以多选,高级设置可以定义和微调检索组件的搜索行为。
开始组件是自带的,Agent 和检索组件是 RAG 的核心组件。除此之外还有对话类的回复消息和等待输入组件,流程控制的判断、循环、问题分类,以及数据操控和工具等组件。
修改的智能体可以保存以及查看历史版本,但是我在写文档进行一些修改的时候,发现没有取消的功能,历史版本也只能下载没有覆盖的功能。
前面讲聊天应用的时候是没有日志的,只是右侧有个会话列表,Agent 这里有日志选项可以查看。不过聊天应用点击答案上方小灯泡查看执行过程的详细信息的功能应该是没有的。
虽然直接将文件上传到知识库似乎更方便,但我们强烈建议您将文件上传到文件管理 ,然后将其链接到目标知识库。这样,您就可以避免永久删除已上传到知识库的文件。
相比直接将文件上传到各个知识库,将文件上传到 RAGFlow 的文件管理中,再链接到不同的知识库, 并不是一个多余的步骤,尤其是当你想删除一些解析过的文件或者整个知识库,但保留原始文件的时候。
官方文档建议直接将文件上传到文件管理中,然后链接到目标知识库,以便于解耦。每个知识库在文件管理的 root/.knowledgebase 目录下都有对应的文件夹,在知识库中直接添加的文件在这个文件夹中,这个文件夹不能创建子文件夹。文档地址:https://ragflow.io/docs/dev/manage_files
RAGFlow 的文件应该是存在 MinIO 中的,文件管理提供了树形多级目录的管理界面。基本的操作该有的都有,包括目录和文件的增、删、改名、移动、下载(仅单文件)、预览(个别文件格式)以及批量的移动和删除操作。可以自己试下或者参考官方文档。
除此之外,就是将整个目录或某个文件关联到单个或多个知识库的操作。被关联的内容会在知识库中显示,但不会存在于 root/.knowledgebase/对应知识库名称 文件夹中,可以在知识库中删除关联的内容。关联是一个单次的操作,一直关联同一个内容是允许的,也就是说这个关联是一个单向的:知识库->内容,所以在知识库中可以放心的操作。
文件管理仅支持当前目录下的文件名和文件夹名过滤,不会检索子目录中的文件或文件夹。
从 RAGFlow v0.20.5 开始,不支持批量下载,也不能下载整个文件夹。
RAGFlow 的 API 调用是通过 RESTful 风格的 HTTP API 或者 Python SDK,使用 API 需要先在账号设置中创建一个 API KEY。
API 文档在官方文档中有详细说明,包括知识库、知识库内文件、知识库内文件的分块、聊天应用、智能体应用、会话管理等操作接口,具体链接放在文末。不过似乎是没有提供文件管理模块的 API,不过都用 API 调用了,文件应该也不太需要平台统一管理,通过外部系统集成就行。
前面看了不仅有多种切片方法,针对各种类型的文件都有对应的优化,特别是还有自研的 DeepDoc 可以从视觉上处理 PDF 文件内容,而不仅仅只是读取 PDF 中的文本来处理,对于表格处理的也很好。
RAGFlow 并非万能之选。它注重灵活性,并支持深度定制,以适应更复杂的用例。从 v0.17.0 开始,RAGFlow 将 DeepDoc 特定的数据提取任务与 PDF 文件的分块方法分离。这种分离使您能够自主选择 OCR(光学字符识别)、TSR(表格结构识别)和 DLR(文档布局识别)任务的视觉模型,以平衡速度和性能,从而满足您的特定用例。如果您的 PDF 仅包含纯文本,您可以选择 “Naive” 选项跳过这些任务,以减少整体解析时间。
知识库可以设置标签、召回增强、知识图谱,文档可以设置元数据,分块可以设置关键词、QA。当然也提供了检索测试等 RAG 系统基本的功能,不过定义和微调检索组件的搜索行为不是在知识库配置,而是各个应用中分开配置的。
基本的都有但是体验一般,比如完全没有错误检测,提示词编辑器可以用变量但是没有 (x) 按钮。
提供了多种语言可供选择但是中文翻译差,比如有一个相似度相似度权重,其实是向量相似度(Vector similarity weight)的意思,有种浏览器插件翻译的感觉。
我本地使用 docker 部署未限制的情况下,内存占用约为 8G,主要是 ES 的占用还是比较高的。使用 Infinity 替换 ES 的话会减少到 4G 左右。
关于 ES 和 Infinity 的区别,我让 AI 帮我简单总结了下:
也可以限制资源占用或使用外部独立部署的组件,但不建议低于 4C8G,带图片的复杂文件处理解析的时候占用很高,资源不够会出现未知问题。参考 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
从目前的对比看,下面这些情况 RAGFlow 特别有优势:
实践中在知识库文件比较多了之后,经常存在语义模糊、同质化严重,可以采用以下思路进行优化:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
 
            2025-09-15
2025-09-02
2025-08-05
2025-08-18
2025-08-25
2025-08-25
2025-08-25
2025-09-03
2025-08-20
2025-09-08
2025-10-04
2025-09-30
2025-09-10
2025-09-10
2025-09-03
2025-08-28
2025-08-25
2025-08-20