🌐 官方网站: https://weizxfree.github.io/KnowFlowSite/
📺 B站视频: https://www.bilibili.com/video/BV1Vfg8zDEUf/
KnowFlow 是一个基于 RAGFlow 的企业级开源知识库解决方案,专注于为企业提供真正落地的最后一公里服务。我们持续兼容 RAGFlow 官方版本(当前适配 RAGFlow v0.20.1),同时将社区最佳实践整合进来,为企业知识管理提供更加完善的解决方案。
- RAGFlow 企业落地的最后一公里:解决从开源到生产的关键差距
- 插件化增强平台:通过独立服务方式扩展 RAGFlow 功能
- 企业级知识管理系统:提供完整的用户权限、团队协作、数据安全保障
KnowFlow 采用分布式微服务架构,通过独立的服务组件为 RAGFlow 提供增强功能:
graph TB
subgraph "用户端"
User[👤 用户]
Browser[🌐 浏览器]
User --> Browser
end
subgraph "RAGFlow 生态系统"
direction TB
subgraph "RAGFlow 核心服务"
RF_Frontend[RAGFlow 前端<br/>端口: 80/443]
RF_Backend[RAGFlow 后端<br/>端口: 9380]
RF_DB[(RAGFlow 数据库<br/>MySQL)]
RF_ES[(Elasticsearch<br/>端口: 9200)]
RF_Minio[(MinIO 存储<br/>端口: 9000)]
RF_Redis[(Redis 缓存<br/>端口: 6379)]
end
subgraph "KnowFlow 扩展服务"
direction TB
KF_Backend[KnowFlow 后端<br/>端口: 5000<br/>• 用户管理<br/>• 团队协作<br/>• MinerU集成<br/>• API Token管理]
KF_Gotenberg[Gotenberg 文档转换<br/>端口: 3000<br/>• PPT/Word/Excel转PDF<br/>• 文档格式标准化]
subgraph "MinerU 解析引擎"
MinerU_API[MinerU API 服务<br/>端口: 8888<br/>• OCR 文字识别<br/>• 图像提取<br/>• 文档结构分析]
MinerU_VLM[VLM 视觉模型<br/>端口: 30000<br/>• 图像理解<br/>• 多模态分析]
end
end
end
%% 用户访问流程
Browser --> RF_Frontend
%% RAGFlow 内部服务通信
RF_Frontend --> RF_Backend
RF_Backend --> RF_DB
RF_Backend --> RF_ES
RF_Backend --> RF_Minio
RF_Backend --> RF_Redis
%% RAGFlow 与 KnowFlow 集成
RF_Frontend -.->|API 调用| KF_Backend
RF_Backend -.->|共享数据库| RF_DB
%% KnowFlow 内部服务通信
KF_Backend --> KF_Gotenberg
KF_Backend --> MinerU_API
MinerU_API --> MinerU_VLM
%% KnowFlow 与 RAGFlow 数据层集成
KF_Backend --> RF_DB
KF_Backend --> RF_ES
KF_Backend --> RF_Minio
KF_Backend --> RF_Redis
架构特点:
- 🔌 独立服务:KnowFlow 作为独立微服务运行,不修改 RAGFlow 核心代码
- 🔗 API 集成:通过 RESTful API 与 RAGFlow 前端无缝集成
- 💾 共享数据层:复用 RAGFlow 的数据库、存储等基础设施
- ⚡ 高性能解析:集成 MinerU 2.x 引擎,支持 GPU 加速
- 📄 格式转换:内置 Gotenberg 服务,支持多种文档格式转换
| 📚 智能文档解析 | 🧠 增强检索问答 | 👥 企业级管理 | 🔌 开放集成 |
|---|---|---|---|
| • MinerU2.x OCR引擎 • 图文混排输出 • 多种分块策略 • 20+文档格式支持 |
• 精准语义检索 • 上下文感知问答 • 多模态内容理解 • 实时知识更新 |
• RBAC权限管理 • 团队协作空间 • 纯离线部署 • 企业微信集成 • LDAP/SSO支持 |
• 插件化架构 • API开放接口 • 自定义扩展 • 第三方系统集成 |
| 🌟 | KnowFlow 优势 |
|---|---|
| 🔌 | 插件化架构:无缝兼容 RAGFlow 任意版本,所有增强均可热插拔,升级无忧 |
| 🏗️ | 微服务设计:通过独立服务方式增强 RAGFlow,不修改核心代码 |
| 🧩 | 分块策略丰富:支持多种分块算法,检索更精准,适配多场景文档 |
| 🏢 | 企业级特性:MinerU2.x OCR 引擎、RBAC权限管理、纯离线部署、企业微信、LDAP/SSO |
| 📈 | 最佳实践集成:持续吸收社区优质方案,助力企业高效落地 |
| 🔧 | 简化部署:一键安装脚本,Docker Compose 开箱即用 |
- Docker 20.10+
- Docker Compose 2.0+
- 至少 8GB 内存
- 可选:NVIDIA GPU + nvidia-container-toolkit(GPU加速)
可以在 MinerU 和 Dots 服务中任选一种,推荐 Dots ,MarkDown 文件标题识别效果更好。
基于 SGLang 的 MinerU 完全离线部署方案,镜像包含所有必要的模型文件,无需运行时下载:
SGLang 模式(推荐)- 支持所有后端模式
docker run -d \
--gpus all \
-p 8888:8888 \
-p 30000:30000 \
-e MINERU_MODEL_SOURCE=local \
-e SGLANG_MEM_FRACTION_STATIC=0.8 \
--name mineru-sglang \
zxwei/mineru-api-full:v2.1.11Pipeline 模式 - 仅支持标准 Pipeline 后端
docker run -d \
--gpus all \
-p 8888:8888 \
--name mineru-pipeline \
-e MINERU_MODEL_SOURCE=local \
-e INSTALL_TYPE=core \
zxwei/mineru-api-full:v2.1.11💡 镜像特性:
- 完全离线部署: 所有模型文件已预下载并打包在镜像中
- 最新版本: 使用 MinerU v2.1.11 最新版本
- SGLang 集成: 基于 SGLang v0.4.7-cu124 官方镜像
- 全功能支持: 支持 Pipeline 和 VLM 两种模式
- 高性能: GPU 加速推理,支持 CUDA 12.4
- 智能启动: 支持环境变量配置,灵活的参数调优
在 /knowflow/server/services/config/settings.yaml 配置文件中,配置 MinerU 服务地址以及解析模式:
fastapi:
# FastAPI 服务地址
# 本地开发: http://localhost:8888
# Docker部署: http://host.docker.internal:8888 (Docker Desktop)
# 或 http://宿主机IP:8888 (Linux Docker)
url: "http://宿主机IP:8888"
# HTTP 请求超时时间(秒)
timeout: 30000
# VLM 后端配置
vlm:
sglang:
# SGLang 服务器地址(vlm-sglang-client 后端需要)
# Docker部署时同样需要使用宿主机IP或容器网络地址
server_url: "http://宿主机IP:30000"进入到 knowflow/dots 目录下, 执行拉取 Dots 镜像脚本,该脚本可以自动下载模型以及下载 Dots 镜像。
cd knowflow/dots
./deploy.sh默认端口是 8000,如有冲突,可以手动调整 compose 文件。
在 /knowflow/server/services/config/settings.yaml 配置文件中,配置 Dots 服务地址以及解析模式:
dots:
# VLLM 服务配置
vllm:
# DOTS OCR 服务地址
# 远程服务示例: http://{ip}:8000
# 本地服务示例: http://localhost:8000
url: "http://localhost:8000"
# 模型名称(根据部署配置调整)
model_name: "dotsocr-model"
# 请求超时时间(秒)
timeout: 300
# 生成参数
temperature: 0.1
top_p: 1.0
max_completion_tokens: 16384
- 拉取本项目代码:
git clone https://github.com/weizxfree/KnowFlowPro.git- 进入到
docker目录执行(此步骤和 RAGFlow 官方一致):
如有 GPU 则选择:
docker compose -f docker-compose-gpu.yml up -d无 GPU 则选择:
docker compose -f docker-compose.yml up -d访问地址:http://服务器IP:80,进入 KnowFlow 首页
系统启动后,请使用以下默认超级管理员账户登录:
邮箱:[email protected]
密码:admin
💡 安全提示: 首次登录后,请及时修改默认密码以确保系统安全。
- Python 3.9+
- Node.js 16+
- pnpm
- MinerU 服务(参考上述步骤)
- 安装 Python 依赖
cd knowflow/server
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt- 启动文件转换服务(可选)
# 支持 PDF 以外文件格式需要启动此服务
docker run -d -p 3000:3000 gotenberg/gotenberg:8- 执行 install 脚本,初始化环境变量
cd knowflow/
./scripts/install.sh --local- 启动 knowflow 后端服务
python3 app.py- 修改 docker/entrypoint.sh 文件
# 注释掉 nginx 行
# /usr/sbin/nginx- 激活 Python 虚拟环境
source .venv/bin/activate
export PYTHONPATH=$(pwd)- 配置 HuggingFace 镜像(可选)
# 如果无法访问 HuggingFace,设置镜像站点
export HF_ENDPOINT=https://hf-mirror.com-
检查配置文件 确保
conf/service_conf.yaml中所有主机和端口配置正确。 -
启动后端服务
方案一:
# 设置内存分配器和启动任务执行器
JEMALLOC_PATH=$(pkg-config --variable=libdir jemalloc)/libjemalloc.so
LD_PRELOAD=$JEMALLOC_PATH python rag/svr/task_executor.py 1
# 启动 API 服务器
python api/ragflow_server.py方案二:
./local_entrypoint.sh- 安装 Node.js 依赖
cd web
pnpm install- 启动开发服务器
pnpm dev浏览器访问启动后的地址,即可进入系统。
基于 RAGFlow v0.20.1 二次开发,提供更加现代化的用户界面:
管理员可以进行统一的管理:
核心特性:
- RBAC权限管理:基于角色的访问控制,精细化权限分配
- 纯离线部署:支持完全离线环境部署,满足高安全性要求
- 移除前端用户注册通道,管理员统一管理用户
- 用户管理、团队管理、模型配置管理
- 新用户自动加入创建时间最早用户的团队
- 继承团队模型配置,降低配置复杂度
支持格式: PPT、PNG、Word、DOC、Excel 等 20+ 种常见文件格式
分块策略:
- 文档结构分块:基于文档原生结构进行智能分块
- 按标题分块:根据标题层级自动划分内容块
- RAGFlow 原分块:保持与官方完全一致的分块规则
- 父子分块:父块较大用于补充上下文,子块用于向量检索
- DOTS 解析:先进的文档智能解析引擎,支持复杂版式和多模态内容
支持企业微信应用,可将企业微信作为聊天机器人入口:
详细配置方式参照 server/services/knowflow/README.md
通过环境变量自定义 MinerU 启动行为:
# 自定义 SGLang 服务器参数
docker run -d \
--gpus all \
-p 8888:8888 \
-p 30000:30000 \
-e MINERU_MODEL_SOURCE=local \
-e SGLANG_TP_SIZE=2 \
-e SGLANG_MEM_FRACTION_STATIC=0.9 \
-e SGLANG_ENABLE_TORCH_COMPILE=true \
--name mineru-sglang-custom \
zxwei/mineru-api-full:v2.1.11方法一:环境变量文件
# 创建本地 .env 文件
cp .env.example .env
vim .env
# 挂载配置文件
docker run -d \
--gpus all \
-p 8888:8888 \
-p 30000:30000 \
-v $(pwd)/.env:/app/.env \
-v $(pwd)/mineru.json:/root/mineru.json \
-e MINERU_MODEL_SOURCE=local \
--name mineru-sglang \
zxwei/mineru-api-full:v2.1.11方法二:完整配置挂载(生产环境推荐)
# 创建配置目录
mkdir -p config
cp .env config/
cp mineru.json config/
# 挂载整个配置目录
docker run -d \
--gpus all \
-p 8888:8888 \
-p 30000:30000 \
-v $(pwd)/config/.env:/app/.env \
-v $(pwd)/config/mineru.json:/root/mineru.json \
-v $(pwd)/data:/app/data \
-v $(pwd)/output:/app/output \
-e MINERU_MODEL_SOURCE=local \
--name mineru-sglang \
zxwei/mineru-api-full:v2.1.11.env 文件配置:
# 基础配置
INSTALL_TYPE=all
MINERU_MODEL_SOURCE=local
API_PORT=8888
SGLANG_PORT=30000
# SGLang 性能参数
SGLANG_TP_SIZE=2 # 张量并行大小
SGLANG_DP_SIZE=1 # 数据并行大小
SGLANG_MEM_FRACTION_STATIC=0.8 # 内存分配比例
SGLANG_ENABLE_TORCH_COMPILE=true # 启用编译优化
SGLANG_MAX_SEQ_LEN=8192 # 最大序列长度
SGLANG_BATCH_SIZE=64 # 批处理大小
# 高级配置
STARTUP_WAIT_TIME=20 # 启动等待时间
LOG_LEVEL=INFO # 日志级别
VERBOSE=true # 详细日志高性能配置(多 GPU)
SGLANG_TP_SIZE=4
SGLANG_MEM_FRACTION_STATIC=0.85
SGLANG_ENABLE_TORCH_COMPILE=true
SGLANG_MAX_SEQ_LEN=16384
SGLANG_BATCH_SIZE=128内存受限环境
SGLANG_TP_SIZE=1
SGLANG_MEM_FRACTION_STATIC=0.7
SGLANG_MAX_SEQ_LEN=4096
SGLANG_BATCH_SIZE=32仅 API 服务(不启动 SGLang)
INSTALL_TYPE=core如果需要在本地环境进行开发调试:
# 1. 安装 Python 依赖(注意:zsh 需要用引号包围方括号)
pip install "mineru[core]" fastapi uvicorn python-multipart
# 2. 设置环境变量
export MINERU_DEVICE_MODE=cpu
export MINERU_MODEL_SOURCE=modelscope
# 3. 进入项目目录
cd knowflow/web_api
# 4. 启动本地服务
python app.py配置 settings.yaml:
mineru:
fastapi:
# 本地开发服务地址
url: "http://localhost:8888"
vlm:
sglang:
# 本地SGLang服务地址(如果使用vlm-sglang-client后端)
server_url: "http://localhost:30000"配置 DOTS 解析
- 在知识库设置中选择"DOTS"解析方式
- 支持复杂文档版式和多模态内容理解
- 提供更准确的文档结构识别
使用步骤
# 1. 创建知识库时选择 DOTS 解析器
# 2. 上传文档自动使用 DOTS 解析
# 3. 获得更精准的图文混排输出健康检查
curl http://localhost:8888/health文档解析 API
# 上传文档进行解析
curl -X POST "http://localhost:8888/parse" \
-F "[email protected]" \
-F "mode=pipeline"# 后端镜像
docker buildx build --platform linux/amd64 --target backend -t zxwei/knowflow-server:v0.3.0 --push .
# 前端镜像
docker buildx build --platform linux/amd64 --target frontend -t zxwei/knowflow-web:v0.3.0 --push .# 安装 uv
sudo snap install astral-uv --classic
# 安装 libicu
sudo apt-get update
sudo apt-get install -y python3.12-dev build-essential pkg-config libicu-dev
uv run download_deps.py
docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .
docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .
docker tag infiniflow/ragflow:nightly-slim zxwei/knowflow:v2.0.2
docker push zxwei/knowflow:v2.0.2
vim docker/.env
RAGFLOW_IMAGE=infiniflow/ragflow:nightly-slim
默认注册的账号不具备管理员权限,如需使用管理功能,需要对账号进行授权。
运行 KnowFlow 之后,执行 docker/set_superuser.sh 脚本:
./set_superuser.sh set [email protected] - 支持更多文档格式的 MinerU 解析
- 增强 MarkDown 文件的分块规则
- 优化 Excel 文件分块
- MinerU 2.0 接入
- RAGFlow 前端 UI 源码开源
- API Token 自动生成机制
- MinerU 支持自动问题,自动关键词,Raptor,知识图谱
- 文档审批工作流
zxwei/mineru-api-full:v2.1.11(推荐):
- ✅ 完全离线部署: 所有模型文件已预下载并打包在镜像中
- ✅ 最新版本: 使用 MinerU v2.1.11 最新版本
- ✅ SGLang 集成: 基于 SGLang v0.4.7-cu124 官方镜像
- ✅ 全功能支持: 支持 Pipeline 和 VLM 两种模式
- ✅ 高性能: GPU 加速推理,支持 CUDA 12.4
- ✅ 智能启动: 默认支持环境变量配置,灵活的参数调优
- 安装 nvidia-container-toolkit
# 添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装组件
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 重启 Docker
sudo systemctl restart docker-
启动容器时使用 GPU 确保启动命令包含
--gpus=all参数 -
配置 GPU 后端
mineru:
default_backend: "vlm-sglang-client" # 使用 VLM 后端1. 构建时间过长
- 模型下载需要时间,请耐心等待
- 建议使用 ModelScope 源(国内网络更快)
2. 内存不足
- 确保 Docker 有足够内存(建议 8GB+)
- 调整
SGLANG_MEM_FRACTION_STATIC参数 - 可以分阶段构建或使用更大的机器
3. GPU 不可用
- 确保安装了 nvidia-docker2
- 检查 CUDA 驱动版本兼容性
4. SGLang 服务启动失败
- 检查 GPU 内存是否足够
- 调整
SGLANG_TP_SIZE和SGLANG_MEM_FRACTION_STATIC - 增加
STARTUP_WAIT_TIME等待时间
5. 环境变量不生效
- 确保
.env文件格式正确(无空格、正确的键值对) - 检查文件挂载路径是否正确
- 使用
docker exec进入容器检查环境变量
6. 端口冲突
- 修改
API_PORT和SGLANG_PORT环境变量 - 确保宿主机端口未被占用:
- MinerU API 服务:8888
- SGLang 服务:30000
- KnowFlow 前端:8081
- KnowFlow 后端:5000
7. 配置文件挂载问题
- 确保配置文件路径正确且文件存在
- 检查文件权限(建议 644 权限)
- 验证 JSON 格式是否正确(使用
jq工具验证) - 确保挂载路径与容器内路径匹配
8. 模型路径配置错误
- 检查
mineru.json中的models-dir配置 - 确保模型文件在指定路径存在
- 验证模型文件完整性
# 查看容器日志
docker logs mineru-sglang
# 实时查看日志
docker logs -f mineru-sglang
# 进入容器检查配置
docker exec -it mineru-sglang bash
# 检查环境变量
docker exec mineru-sglang env | grep -E "(SGLANG|API|MINERU)"
# 验证配置文件
docker exec mineru-sglang cat /app/.env
docker exec mineru-sglang cat /root/mineru.json
# 检查模型文件
docker exec mineru-sglang ls -la /app/models/
# 验证 JSON 配置格式
docker exec mineru-sglang jq . /root/mineru.json网络连接问题: 检查防火墙设置和容器网络配置
图片显示问题: 确保聊天助手提示词包含图片显示指令:
请参考{knowledge}内容回答用户问题。
如果知识库内容包含图片,请在回答中包含图片URL。
注意这个 html 格式的 URL 是来自知识库本身,URL 不能做任何改动。
请确保回答简洁、专业,将图片自然地融入回答内容中。
- 使用 GPU: 启用 GPU 加速可显著提升处理速度
- 内存配置: 为容器分配足够内存(推荐 8GB+)
- 存储优化: 使用 SSD 存储可提升 I/O 性能
- 网络配置: 如需外网访问,配置适当的防火墙规则
KnowFlow 采用 GNU Affero General Public License v3.0 (AGPL-3.0) 开源许可证。
- 使用:个人学习、研究、开发和部署
- 修改:根据需要修改源代码
- 分发:分享给他人使用
- 贡献:提交 PR 和 Issue,参与开源协作
- 源码开放:如果您修改了 KnowFlow 并通过网络提供服务,必须向用户提供修改后的完整源代码
- 相同许可:基于 KnowFlow 的衍生作品必须同样采用 AGPL-3.0 许可证
- 版权保留:保留原始版权声明和许可证信息
AGPL-3.0 允许商业使用,但有重要约束:
- 如果您将修改版本作为网络服务提供,必须开源所有修改
- 如果这不符合您的商业需求,请联系获取商业许可
- 💬 微信:skycode007(备注"商业授权咨询")
注意:AGPL-3.0 是一个严格的 copyleft 许可证,特别适用于网络服务。使用前请仔细阅读 完整许可证条款。
如有需求或问题建议,可加入交流群讨论。
加微信 skycode007,备注"加群"即可。
项目持续更新中,更新日志会在微信公众号 [KnowFlow 企业知识库] 发布,欢迎关注。
本项目基于以下开源项目开发:
- ragflow - 核心 RAG 框架
⭐ 如果这个项目对您有帮助,请不要忘记点个 Star!
🚀 让我们一起构建更好的企业知识库解决方案!