🌐 官方网站: https://weizxfree.github.io/KnowFlowSite/
📺 B站视频: https://www.bilibili.com/video/BV1Vfg8zDEUf/
KnowFlow 是一个基于 RAGFlow 的企业级开源知识库解决方案,专注于为企业提供真正落地的最后一公里服务。我们持续兼容 RAGFlow 官方版本,同时将社区最佳实践整合进来,为企业知识管理提供更加完善的解决方案。
- 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+文档格式支持 |
• 精准语义检索 • 上下文感知问答 • 多模态内容理解 • 实时知识更新 |
• 用户权限管理 • 团队协作空间 • 企业微信集成 • LDAP/SSO支持 |
• 插件化架构 • API开放接口 • 自定义扩展 • 第三方系统集成 |
| 🌟 | KnowFlow 优势 |
|---|---|
| 🔌 | 插件化架构:无缝兼容 RAGFlow 任意版本,所有增强均可热插拔,升级无忧 |
| 🏗️ | 微服务设计:通过独立服务方式增强 RAGFlow,不修改核心代码 |
| 🧩 | 分块策略丰富:支持多种分块算法,检索更精准,适配多场景文档 |
| 🏢 | 企业级特性:MinerU2.x OCR 引擎、团队/用户/权限管理、企业微信、LDAP/SSO |
| 📈 | 最佳实践集成:持续吸收社区优质方案,助力企业高效落地 |
| 🔧 | 简化部署:一键安装脚本,Docker Compose 开箱即用 |
- Docker 20.10+
- Docker Compose 2.0+
- 至少 8GB 内存
- 可选:NVIDIA GPU + nvidia-container-toolkit(GPU加速)
选择以下两种镜像之一:
完整版(推荐)- 包含所有功能
docker run --rm -d --gpus=all \
--shm-size=32g \
-p 8888:8888 -p 30000:30000 \
--name mineru-api \
zxwei/mineru-api-full:2.1.0基础版 - 仅包含基础功能
docker run --rm -d --gpus=all \
--shm-size=32g \
-p 8888:8888 \
--name mineru-api \
zxwei/mineru-api:2.1.0💡 镜像说明:
zxwei/mineru-api-full:包含完整的 VLM 功能,支持所有后端类型zxwei/mineru-api:基础版本,主要支持 pipeline 后端- 如需 GPU 加速,请确保已安装 nvidia-container-toolkit
在 /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"进入到 docker 目录执行(此步骤和 RAGFlow 官方一致):
docker compose up -d访问地址:http://服务器IP:80,进入 KnowFlow 首页
- 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.19.0 二次开发,提供更加现代化的用户界面:
管理员可以进行统一的管理:
核心特性:
- 移除前端用户注册通道,管理员统一管理用户
- 用户管理、团队管理、模型配置管理
- 新用户自动加入创建时间最早用户的团队
- 继承团队模型配置,降低配置复杂度
支持格式: PPT、PNG、Word、DOC、Excel 等 20+ 种常见文件格式
分块策略:
- 文档结构分块:基于文档原生结构进行智能分块
- 按标题分块:根据标题层级自动划分内容块
- RAGFlow 原分块:保持与官方完全一致的分块规则
支持企业微信应用,可将企业微信作为聊天机器人入口:
详细配置方式参照 server/services/knowflow/README.md
如果需要在本地环境进行开发调试:
# 1. 安装 Python 依赖(注意:zsh 需要用引号包围方括号)
pip install "mineru[core]" fastapi uvicorn python-multipart
# 2. 设置环境变量
export MINERU_DEVICE_MODE=cpu
export MINERU_MODEL_SOURCE=modelscope
# 3. 进入项目目录
cd 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"# 后端镜像
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
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 .
vim docker/.env
RAGFLOW_IMAGE=infiniflow/ragflow:nightly-slim
默认注册的账号不具备管理员权限,如需使用管理功能,需要对账号进行授权。
运行 KnowFlow 之后,执行 docker/set_superuser.sh 脚本:
./set_superuser.sh set xxxx@xxx.com - 支持更多文档格式的 MinerU 解析
- 增强 MarkDown 文件的分块规则
- 优化 Excel 文件分块
- MinerU 2.0 接入
- RAGFlow 前端 UI 源码开源
- API Token 自动生成机制
- TextIn 接入
- MinerU 支持自动问题,自动关键词,Raptor,知识图谱
- 多租户数据隔离
- 知识库版本管理
- 文档审批工作流
zxwei/mineru-api-full(推荐):
- 包含完整的 VLM 功能
- 支持所有后端类型:pipeline, vlm-transformers, vlm-sglang-engine, vlm-sglang-client
- 镜像较大,但功能最全
zxwei/mineru-api:
- 基础版本,镜像较小
- 主要支持 pipeline 后端
- 适合基础文档解析需求
- 安装 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 后端端口冲突:
- MinerU 服务:8888, 30000
- KnowFlow 前端:8081
- 后端服务:5000
- 确保端口未被占用
内存不足:
增加 Docker 内存限制或调整 --shm-size 参数
网络连接问题: 检查防火墙设置和容器网络配置
图片显示问题: 确保聊天助手提示词包含图片显示指令:
请参考{knowledge}内容回答用户问题。
如果知识库内容包含图片,请在回答中包含图片URL。
注意这个 html 格式的 URL 是来自知识库本身,URL 不能做任何改动。
请确保回答简洁、专业,将图片自然地融入回答内容中。
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!
🚀 让我们一起构建更好的企业知识库解决方案!