跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

源码运行 RagFlow 实现 AI 搜索与智能体编排

如何在 Windows 环境下通过 WSL 源码运行 RagFlow,包括环境搭建、依赖安装、Docker 组件配置、前后端启动流程。详细演示了如何使用 DeepDoc 和 MinerU 两种解析器处理 PDF 文档,对比了它们在公式解析上的差异,并展示了基于文档内容的 AI 搜索与检索功能。

观心发布于 2026/4/6更新于 2026/10/8130 浏览
源码运行 RagFlow 实现 AI 搜索与智能体编排

简介

RagFlow 是由 InfiniFlow 开源的一款软件,在 AI 知识库构建、智能体编排等场景中深受开发者喜爱。

ragflow

RagFlow 有开源版和商业版。如需在本地快速体验功能,可根据官方提供的 docker compose 脚本快速启动。若需进行二次开发,使用源码启动是开发人员需要掌握的技能。

源码环境搭建

RagFlow 的运行需要 Linux 系统。考虑到许多开发者使用的是 Windows 系统,可以在 Windows 中通过安装 WSL 的方式来运行它。

WSL 安装

重启电脑,打开 PowerShell,在 WSL 中安装 Ubuntu:

wsl.exe --install ubuntu

安装完成后,电脑中会出现一个 Linux 图标,通过它可以直接访问 WSL 的 Ubuntu 系统目录。

源码与依赖安装

在 WSL 中切换到用户目录,克隆代码(推荐在 WSL 系统中克隆):

cd ~
git clone https://github.com/infiniflow/ragflow.git

目前的 RagFlow 提交非常活跃,为了稳定性,建议使用最新稳定版本:

git checkout v0.22.1

如果由于网络无法克隆 GitHub 代码,可以尝试配置系统代理:

export https_proxy=http://192.168.1.66:7078; export http_proxy=http://192.168.1.66:7078; export all_proxy=socks5://192.168.1.66:7078

推荐使用 PyCharm 进行开发。点击 文件 中的 远程开发,选择 WSL 实例中的 Ubuntu,并指定刚刚克隆的项目路径。

输入以下命令安装 pipx:

sudo apt update
sudo apt install -y pipx
pipx ensurepath
source ~/.bashrc
pipx --version

再安装 uv 和 pre-commit:

pipx install uv pre-commit

安装编译所需的依赖库:

sudo apt install -y libicu-dev pkg-config build-essential python3.12-dev

uv 安装好后,使用 uv 命令安装项目所需依赖:

uv sync --python 3.12

依赖组件启动

RagFlow 不生产模型,它只是模型的搬运工,且运行还需要外部数据库和中间件:MySQL、ES、Redis、MinIO。

可以使用 RagFlow 提供的 docker compose 脚本一键启动:

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

为不和 RagFlow 在同一台机器上,可在其他机器启动上述组件。占用的端口及描述如下:

  • 1200(映射的 9200):ElasticSearch,数据检索、向量存储
  • 9000, 9001:MinIO,文件存储
  • 5455(映射的 3306):MySQL,关系型数据库
  • 6379:Valkey(Redis),内存 KV 数据库

部署节点 IP 假设为 192.168.140.110,需要在 WSL 系统中将对应服务的域名映射修改为该 IP(在 RagFlow 的 docker/.env 文件中均有体现):

sudo vi /etc/hosts
# 添加以下内容
192.168.140.110 es01 mysql minio redis

源码运行 (后端)

RagFlow 需要运行的程序有以下 3 个:

  1. ragflow/api/ragflow_server.py,后端 API 接口,Python 运行
  2. ragflow/rag/svr/task_executor.py,后端 Task 任务消费者,Python 运行
  3. ragflow/web,前端 Web 界面,使用 NPM 运行

后端程序可以参考 docker/launch_backend_service.sh 脚本启动。为了后期开发过程中更方便调试,建议单独运行每个后端程序。

在 PyCharm 中运行 Python 项目需要有一个 Python 解释器,选择 ragflow/.venv 下的 Python 程序。

打开 Python 程序的运行配置框,手动填入所需的环境变量信息 (ragflow/docker/.env)。

需要注意的是,PyCharm 无法直接读取 ragflow/docker/.env 中的内容,为此可以单独写一个文件代替,如 .env_pycharm 文件,内容为:

DOC_ENGINE=elasticsearch
NLTK_DATA="./nltk_data"

确保 Working directory 为代码根目录,.env 文件为我们新创建的 .env_pycharm 文件,之后点击运行。

提示 9380 端口监听成功,就代表 ragflow_server.py 程序启动成功了。

Curl 测试:

curl http://127.0.0.1:9380/

有 JSON 信息返回,代表测试成功。

ragflow_server.py 在任务提交时,会将所需要执行的任务写入到 Redis 中,之后再由 task_executor.py 异步拉取待处理的任务并执行。 task_executor.py 的启动方式与 ragflow_server.py 一样。

RagFlow 的 ragflow_server.py 和 task_executor.py 这两个启动程序均会读取配置文件 ragflow/conf/service_conf.yaml,这里面会配置 RagFlow 所需要连接的中间件。

源码运行 (前端)

切换到 ragflow 源码的 web 目录,依次运行以下命令安装前端项目所需依赖:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
node -v
npm install

执行 npm run dev 启动 Web 项目:

export NODE_OPTIONS="--max-old-space-size=4096"
npm run dev

执行完后,会有输出日志。到这里,就可以在浏览器中访问 RagFlow:http://localhost:9222

文档解析与检索

如果仅想在本地运行 RagFlow,只需要切换到 RagFlow 的 docker 目录,使用 docker compose 启动整个服务就可以了:

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

之后输入对应的 IP 访问。注册登录一个账号后,配置好默认的基础模型。

有了大模型的配置后,就可以体验 RagFlow 中的常用功能了。这里以 RAG 场景中常见的文档搜索为例。

DeepDoc 解析

在 RagFlow 中默认的文档解析器为 DeepDoc,是 RagFlow 自研的解析器。同时,RagFlow 在启动时,也会自动加载 DeepDoc 相关的模型到系统中。

此处以 Transformer 架构论文《Attention Is All You Need》为例,试一下用 RagFlow 如何检索这篇 PDF 文档。

首先,创建一个 Dataset,并在其中上传 PDF 论文到其中,并点击解析按钮进行解析。

待解析完成后,再次点击文件,会弹出解析后的切片结果。点击某一个切片 (Chunk),RagFlow 也允许对内容进行二次编辑,左边的原文黄色高亮部分也会体现出所对应的解析原文。

当 RagFlow 完成文档的解析切片后,便可以对它进行检索。RagFlow 中提供了多种方式可以让我们对文档搜索,可以直接用的有以下两种方式:

  • Chat(LLM 对话方式)
  • Search(AI 检索)

分别发起一个问题:什么是 Transformer?

RagFlow 的 chat 则会根据 Transformer 的文档切片内容进行 LLM 汇总概括。点击每一个【小感叹号】也会弹出对应的文档片段引用。

再试下将同样的问题发给 RagFlow 中的 Search 看一下效果。

这部分则更像是文档搜索,它会列出对应的文档,以及搜索出来的 top 文档片段。

MinerU 解析 (API 方式接口)

上面使用 DeepDoc 对文档处理时,对于某些公式提取的还不够完美。这时,可以将 RagFlow 自带 DeepDoc 替换为 MinerU。

编译 MinerU 镜像。以 Docker 方式部署它,有 GPU 更佳。

wget https://gcore.jsdelivr.net/gh/opendatalab/[email protected]/docker/china/Dockerfile
docker build -t mineru:latest -f Dockerfile .

启动 MinerU:

docker run -d --name mineru \
  --shm-size 32g \
  -p 8000:8000 \
  mineru:latest \
  mineru-api --host 0.0.0.0 --port 8000

集成到 MinerU 中。确保 MinerU 的 HTTP 接口没问题后,接入 RagFlow 也很简单,仅在 ragflow/docker 的 .env 环境变量中加入一行配置:

MINERU_APISERVER=http://192.168.31.174:8000

也就是将上面部署的 MinerU 的 API 地址,再重启 RagFlow 的 docker compose,使其容器内的环境变量生效,就可以使用 MinerU 来解析文档了。

更多关于 MinerU 接入 RagFlow 的详细配置,可参考官方文档。

目录

  1. 简介
  2. 源码环境搭建
  3. WSL 安装
  4. 源码与依赖安装
  5. 依赖组件启动
  6. 添加以下内容
  7. 源码运行 (后端)
  8. 源码运行 (前端)
  9. 文档解析与检索
  10. DeepDoc 解析
  11. MinerU 解析 (API 方式接口)

更多推荐文章

查看全部
  • 计算机专业在 AI 浪潮下的学习路径:从代码写手到系统掌舵者
  • 掌握三大 AI 设计技能,前端独立实现产品全流程
  • LLaMA 大模型微调实践:LoRA 高效方案与部署
  • Facefusion:开源 AI 换脸工具功能解析与使用指南
  • LeetCode 二分查找、移除元素与有序数组平方题解
  • Python Tkinter Frame 核心解析与实战指南
  • 数据结构入门:详解顺序表的实现与操作
  • Visual Studio 2022 无法使用 GitHub Copilot 的排查与解决
  • OpenClaw 配置飞书机器人完整指南
  • AI 时代,写作是比编程更核心的元技能
  • 前端调试入门:如何使用 debugger 设置断点
  • Stable Diffusion WebUI 本地部署完整教程
  • 使用 frontend-design Skill 提升大模型前端设计审美
  • x64 与 ARM64 架构解析:如何识别并选择正确的安装包
  • 使用 Python 和强化学习训练 MOBA 游戏 AI 原理
  • Qwen3-4B-Instruct 模型本地 CPU 部署与 WebUI 配置
  • 网络安全从新手入门到大师的学习路径指南
  • 前端状态管理方案选型指南:从 Redux 到 Zustand 再到 Pinia
  • GitHub 开源项目日报:2026 年 2 月 23 日 AI 工具与代理热榜
  • 基于星辰 RPA 实现小红书自动发文机器人

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online