提到RAGFlow,这并非一款普通的RAG工具。它基于深度文档理解构建,本质上是一个开源引擎,专为各类机构和个人打造精简高效的RAG工作流程。搭配大语言模型(LLM)使用,它能针对各种复杂格式的数据,提供可靠、可溯源的问答反馈,并且每个回答都有理有据。
RAGFlow 核心功能详解
“Quality in, quality out”——质量源于输入
- 真正支持无限上下文(token)场景,快速完成大海捞针式精确检索。
- 基于深度文档理解技术,可从各类复杂格式的非结构化数据中精准提取真知灼见。
基于模板的文本切片机制
- 提供多种文本模板供灵活选用。
- 不仅追求智能,更强调可控性与可解释性。
有理有据,最大程度降低幻觉
- 文本切片过程可视化,支持手动微调。
- 答案提供关键引用快照,支持追根溯源,这一特性至关重要。
兼容各类异构数据源
- 支持丰富文件类型:Word、PPT、Excel、TXT、图片、PDF、复印件、结构化数据,甚至网页均可纳入。
全程无忧、自动化的 RAG 工作流
- 基于多路召回、融合重排序的检索策略。
- 大语言模型(LLM)及向量模型均支持灵活配置。
- 提供易用的 API,可轻松集成到各类企业系统中。
- 全面优化的 RAG 工作流,无论是个人应用还是超大型企业的生态系统,均能出色支撑。
RAGFlow 的核心引擎:DeepDoc
RAGFlow 引擎的核心是 DeepDoc,它主要由视觉处理和解析器两大部分组成。
视觉处理
想象一下,我们人类如何利用视觉信息理解文档?DeepDoc 在这方面投入了大量努力。
- OCR(光学字符识别)。许多文档本身就是图像形式,或至少可转化为图像。因此,OCR 成为文本提取的基础、通用且极其重要的解决方案。您可通过以下命令体验:
python deepdoc/vision/t_ocr.py --inputs=path_to_images_or_pdfs --output_dir=path_to_store_result
输入可以是图像或 PDF 的目录,也可以是单个文件。运行后,在 path_to_store_result 文件夹中,将包含演示结果的位置图像,以及一个包含 OCR 文本的 txt 文件。
- 布局识别(Layout recognition)。不同领域的文件布局千差万别,报纸、杂志、书籍、简历各有不同的布局规则。机器只有正确理解布局,才能判断文本段落是连续还是独立、是否需要表结构识别(TSR)来处理,或者某部分是图形并用标题注释。它包含 10 个基本布局组件,基本覆盖了大多数场景:
- 文本、标题
- 配图、配图标题
- 表格、表格标题
- 页头、页尾
- 参考引用、公式
想看布局检测结果?试试这个命令:
python deepdoc/vision/t_recognizer.py --inputs=path_to_images_or_pdfs --threshold=0.2 --mode=layout --output_dir=path_to_store_result
输入同样是图像或 PDF 的目录或单个文件。在 path_to_store_result 文件夹中,将看到带有检测结果的可视化图像。
- TSR(表结构识别)。数据表是展示数字或文本数据的常用结构,但表格结构可能相当复杂,比如层级化标题、跨行跨列和投影行标题。除了识别结构,我们还会将内容重新组织成 LLM 易于理解的句子。TSR 任务定义了 5 个标签:
- 列、行
- 列标题、行标题
- 合并单元格
表结构识别结果可通过此命令查看:
python deepdoc/vision/t_recognizer.py --inputs=path_to_images_or_pdfs --threshold=0.2 --mode=tsr --output_dir=path_to_store_result
输入方式同上。在 path_to_store_result 中,包含图像和 html 页面,清晰展示检测结果。
解析器
对于 PDF、DOCX、EXCEL 和 PPT 这四种常见文档格式,RAGFlow 均配备了专用解析器。其中,PDF 解析器最为复杂,因为 PDF 格式极为灵活。其输出包括:
- 在 PDF 中拥有固定位置的文本块(包含页码和矩形坐标信息)。
- 带有 PDF 裁剪图像的表格,以及已转化为自然语言句子的表格内容。
- 图中带有标题和文字的图。
RAGFlow 快速部署与上手指南
前置条件
开始之前,请确保环境满足以下要求:
- CPU >= 4 cores
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
若尚未安装 Docker,可参考官方安装文档。
启动服务器
整个启动过程非常直观,按照以下步骤操作即可:
- 检查并设置系统参数:确保
vm.max_map_count大于等于 262144。
检查当前值:
$ sysctl vm.max_map_count
若不足,执行:
$ sudo sysctl -w vm.max_map_count=262144
但此设置重启后会失效,建议将其添加到 /etc/sysctl.conf 文件中:
vm.max_map_count=262144
- 克隆项目
$ git clone https://github.com/infiniflow/ragflow.git
- 使用 Docker 构建并启动
以下命令会自动下载开发版 RAGFlow Docker 镜像。如需特定版本,修改
docker/.env文件中的RAGFLOW_VERSION即可,例如RAGFLOW_VERSION=v0.6.0。
$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose up -d
核心镜像约 9 GB,首次加载可能较慢。
- 检查服务器状态
$ docker logs -f ragflow-server
看到类似以下输出,说明启动成功:
____ ______ __
/ __ ____ _ ____ _ / ____// /____ _ __
/ /_/ // __ `// __ `// /_ / // __ | | /| / /
/ _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ |
/_/ |_| __,_/ __, //_/ /_/ ____/ |__/|__/
/____/
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:9380
* Running on http://x.x.x.x:9380
INFO:werkzeug:Press CTRL+C to quit
建议确认完全启动后再登录访问,否则浏览器可能报网络异常。
- 登录 RAGFlow。在浏览器中输入服务器 IP 地址即可。
默认配置下,直接输入
http://IP_OF_YOUR_MACHINE即可,因为可省略默认的 HTTP 端口 80。
配置 LLM 模型
RAGFlow 作为 RAG 引擎,需搭配 LLM 才能提供接地气、低幻觉的问答。目前它支持 OpenAI、通义千问、Moonshot、DeepSeek-V2 等多种大模型,且列表持续扩充。
注意:RAGFlow 也支持通过
Ollama或Xinference在本地部署 LLM。
- 在页面右上角找到“模型提供商”设置入口,点击进入。
每个 RAGFlow 账户均可免费使用通义千问的
text-embedding-v2模型,因此默认已添加模型列表中可见通义千问,不过可能需要后续更新 API 密钥。
- 选择所需 LLM(例如 DeepSeek-V2),并更新对应的 API 密钥。
添加成功后,模型列表将显示如下:

- 接下来,在“系统模型设置”中选择默认模型,包括对话模型、嵌入模型和图像转文本模型。

部分模型(如图生文模型
qwen-vl-max)是特定 LLM 的附属模型,使用前可能需要更新对应的 API 密钥。
创建首个知识库
知识库本质上是数据集的集合。您可将文件上传至 RAGFlow 知识库,再解析为可用数据集。RAGFlow 的问答可基于一个或多个知识库。支持的文件格式全面:文档类(PDF、DOC、DOCX、TXT、MD)、表格类(CSV、XLSX、XLS)、图片类(JPEG、JPG、PNG、TIF、GIF)和幻灯片(PPT、PPTX)。
- 点击顶部菜单栏“知识库”选项卡,选择“创建知识库”。
- 输入知识库名称并确认,进入该知识库的配置页面。

- RAGFlow 提供多种分块模板,以适应不同文档布局和文件格式。此处需为知识库选择嵌入模型和 chunk 模板。
注意:嵌入模型一旦选定并开始解析文件,后续将无法更换。原因在于,同一知识库中所有文件必须使用相同嵌入模型解析,以确保它们在相同的语义空间中进行比较。
- 点击“+ Add file” > “Local files”,开始上传文件。
- 上传后,点击文件条目上的“播放”按钮,开始解析文件。

解析完成后,状态将显示为“SUCCESS”。
干预文件解析
RAGFlow 的一大优势在于可见性和可解释性。您可以查看分块结果,并在必要时进行人工干预。
- 点击解析完成的文件,即可查看分块结果。

- 将鼠标悬停至每个快照上,可快速浏览对应的文本块。
- 双击分块文本,可添加关键字或进行手动修改。
- 在“检索测试”中输入一个快速问题,可验证配置是否有效。从下方示例可见,RAGFlow 给出了带真实引用的回答。
配置 AI 聊天助手
在 RAGFlow 中,对话基于一个或多个知识库。创建知识库并完成文件解析后,即可开始 AI 对话。
- 点击“Chat”选项卡 > “Create an assistant”。
- 配置助手:命名、指定要使用的知识库。
- 设置“空回复”:若希望 RAGFlow 的回答严格限定在知识库范围内,可在此设置统一回复。若留空,当检索不到答案时,LLM 可能自行发挥(存在产生幻觉的风险)。
- 更新提示工程设置,或保留默认值。
- 配置模型设置。
- RAGFlow 也提供对话 API。将鼠标悬停在“Chat Bot API”上,可获取集成方式,方便将聊天功能嵌入自有应用。
- 随后即可测试聊天功能。
往期推荐
- 2024 年最完整的 AI Agents 清单,覆盖 13 个领域,上百个 Agents!
- 3 款强大的开源低代码 LLM 编排工具,可视化定制专属 AI Agent 和 AI 工作流!
- 当 AI 遇上爬虫:让数据提取变得前所未有地简单!
- 告别传统客服:支持十几个平台的 AI “懒人客服” 来了!
- 卖货主播大模型开源了,让销冠触手可及!
- Kimi+麦肯锡,5 秒摸透一个行业!
- Kimi 10 秒生成流程图,别再手动绘图了!
- 万字长文秒变精华!Kimi 的超强提示词秘籍
- 阿里开源的自动化视频剪辑工具,太好用了!
参考资料
[1] RAGFlow: https://github.com/infiniflow/ragflow
[2] Install Docker Engine: https://docs.docker.com/engine/install/
```