GitHub - kunger309/KnowFlow: KnowFlowRAG · GitHub
Skip to content

About

KnowFlowRAG

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

160 Commits

Folders and files

Repository files navigation

KnowFlow 企业知识库

项目介绍

KnowFlow 是一个基于 RAGFlow 的开源项目,持续兼容 RAGFlow 官方版本,同时会将社区里做的比较好的最佳实践整合进来。 KnowFlow 可以理解成 RAGFlow 官方开源产品真正落地企业场景的最后一公里服务。

🌐 官方网站: https://weizxfree.github.io/KnowFlowSite/

📺 B站视频: https://www.bilibili.com/video/BV1Vfg8zDEUf/


🚀 项目亮点

🌟 KnowFlow 优势
🔌 插件化架构:无缝兼容 RAGFlow 任意版本,所有增强均可热插拔,升级无忧
🛡️ 零入侵增强:通过 Plugin & Patch 机制,增强 RAGFlow 而不破坏原生代码
🧩 分块策略丰富:支持多种分块算法,检索更精准,适配多场景文档
🏢 企业级特性:MinerU2.x OCR 引擎、团队/用户/权限管理、企业微信、LDAP/SSO(开发中)
📈 最佳实践集成:持续吸收社区优质方案,助力企业高效落地

功能介绍

适配 RAGFlow 全新 UI

基于 RAGFlow v0.18.0 二次开发全新 UI 页面,目前已适配 v0.19.0。

KnowFlow 企业知识库
KnowFlow 企业知识库

用户后台管理系统

参考 ragflow-plus

用户后台管理系统

移除原登陆页用户注册的通道,搭建用户后台管理系统,可对用户进行管理,包括用户管理、团队管理、用户模型配置管理等功能。

特点:新建用户时,新用户会自动加入创建时间最早用户的团队,并默认采取和最早用户相同的模型配置。

图文混排输出

  1. 支持市面上常见的文件格式,如 ppt/png/word/doc/excel/...等等
  2. 保持和官方 markdown 完全一致的分块规则,共提供了三种分块策略:文档结构分块、按标题分块、RAGFlow 原分块
  3. 无缝对接 RAGFlow 知识库系统,文档自动解析和分块
图文混排

支持企业微信应用

支持企业微信应用,可将企业微信应用作为聊天机器人,使用企业微信应用进行聊天。具体使用方式参照 server/services/knowflow/README.md 中的说明。

企业微信应用

使用方式

0. MinerU 本地调试(开发环境)

如果您需要在本地环境进行开发调试,可以直接运行 MinerU 服务:

# 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 服务时,需要修改 server/services/config/settings.yaml 中的服务地址:

mineru:
  fastapi:
    # 本地开发服务地址
    url: "http://localhost:8888"
  
  vlm:
    sglang:
      # 本地SGLang服务地址(如果使用vlm-sglang-client后端)
      server_url: "http://localhost:30000"

💡 提示: 本地调试模式适合开发环境,生产环境建议使用Docker方式部署

1. 使用 Docker Compose 运行

  1. 启动 MinerU 服务

    选择以下两种镜像之一:

    完整版(推荐)- 包含所有功能

    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 后端
    • server/services/config/settings.yaml 可以配置选择 MinerU 模式、配置服务地址
    • 如需 GPU 加速,请确保已安装 nvidia-container-toolkit
  2. 执行安装脚本,自动生成配置

    ./scripts/install.sh

    💡 自动配置功能:

    • 脚本会自动检测本机IP地址
    • 自动创建 .env 配置文件(如果不存在)
    • 如果 .env 文件已存在,会提供选项:保留现有配置或重新生成
  3. 完善 .env 文件配置

    安装脚本会自动创建 .env 文件模板,您只需要填写必要信息:

    # RAGFlow 服务地址 (必须手动填写)
    RAGFLOW_BASE_URL=http://检测到的IP:实际端口号

    💡 提示: 其他配置项(如HOST_IP、ES_HOST等)已由脚本自动填写

  4. 启动容器,开始愉快之旅

    docker compose up -d

    访问地址:服务器ip:8081,进入到管理界面

2. 源码运行

参照 Docker Compose 使用方式的前面步骤,确保 MinerU 服务已启动。

启动后端:

  1. 打开后端程序 management/server,安装依赖

    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
  2. 开启文件格式转化服务(可选,支持 PDF 以外文件格式需要开启)

    docker run -d -p 3000:3000 gotenberg/gotenberg:8
  3. 启动后端

    python3 app.py

启动前端:

  1. 打开前端程序 management\web,安装依赖

    pnpm i
  2. 启动前端程序

    pnpm dev

浏览器访问启动后的地址,即可进入系统。

💡 提示: 图文混排功能,聊天助手的提示词很重要,配置不正确会无法显示图片。模板如下:

请参考{knowledge}内容回答用户问题。
如果知识库内容包含图片,请在回答中包含图片URL。
注意这个 html 格式的 URL 是来自知识库本身,URL 不能做任何改动。
请确保回答简洁、专业,将图片自然地融入回答内容中。


RAGFlow UI(无 RAGFlow UI 更新需要可忽略)

参照 ragflow-ui/README.md

编译 Docker(无编译需要可忽略)

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 .

TODO

  • 支持更多文档格式的 MinerU 解析
  • 增强 MarkDown 文件的分块规则
  • 优化 Excel 文件分块
  • MinerU 2.0 接入
  • RAGFlow 前端 UI 源码开源

交流群

如果有其它需求或问题建议,可加入交流群进行讨论。

如需加群,加我微信 skycode007,备注"加群"即可。

鸣谢

本项目基于以下开源项目开发:

更新信息获取

目前该项目仍在持续更新中,更新日志会在我的微信公众号[KnowFlow 企业知识库]上发布,欢迎关注。

常见问题

1. 如何选择 MinerU 镜像版本

zxwei/mineru-api-full(推荐):

  • 包含完整的 VLM 功能
  • 支持所有后端类型:pipeline, vlm-transformers, vlm-sglang-engine, vlm-sglang-client
  • 镜像较大,但功能最全

zxwei/mineru-api:

  • 基础版本,镜像较小
  • 主要支持 pipeline 后端
  • 适合基础文档解析需求

2. 如何给 MinerU 进行 GPU 加速

1)安装 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

2)启动 MinerU 容器时确保包含 --gpus=all 参数(如上面的示例命令)

3)在 settings.yaml 中配置使用 GPU 后端:

mineru:
  default_backend: "vlm-sglang-client"  # 使用 VLM 后端

3. 容器网络配置

如果 KnowFlow server 也运行在容器中,需要正确配置网络地址:

  • Docker Desktop:使用 http://host.docker.internal:8888
  • Linux Docker:使用宿主机IP,如 http://192.168.1.100:8888
  • Docker Compose:使用服务名,如 http://mineru-api:8888

详细配置参考 DOCKER_NETWORK_GUIDE.md

4. 常见错误处理

1)端口冲突:

  • MinerU 服务使用端口 8888 和 30000
  • KnowFlow 前端使用端口 8081
  • 后端服务使用端口 5000
  • 确保这些端口未被其他服务占用

2)内存不足:增加 Docker 内存限制或调整 --shm-size 参数

3)GPU 不可用:检查 nvidia-container-toolkit 安装和 GPU 驱动

4)网络连接问题:检查防火墙设置和容器网络配置

5)通过 RAGFlow 网络连接(推荐):

如果您已经部署了 RAGFlow 服务,可以通过连接 RAGFlow 的 Docker 网络来实现更稳定的网络连接(适用于不方便开公网端口权限用户)。

配置步骤:

  1. 修改 docker-compose.yml 文件:
services:
  frontend:
    container_name: knowflow-frontend
    image: zxwei/knowflow-web:v0.7.0
    ports:
      - "8081:80"
    depends_on:
      - backend
    environment:
      - API_BASE_URL=/api
    networks:
      - management_network
      - ragflow_ragflow  # 连接到 RAGFlow 网络

  backend:
    container_name: knowflow-backend
    image: zxwei/knowflow-server:v1.1.3
    ports:
      - "5000:5000"
    environment:
      - RAGFLOW_BASE_URL=${RAGFLOW_BASE_URL}
      - DB_HOST=${DB_HOST}
      - MYSQL_PORT=3306 
      - MINIO_HOST=${MINIO_HOST}
      - ES_HOST=${ES_HOST}
      - ES_PORT=${ES_PORT}
      # ... 其他环境变量
    volumes:
      - ./server/services/config:/app/services/config:ro
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - management_network
      - ragflow_ragflow  # 连接到 RAGFlow 网络

  gotenberg:
    image: gotenberg/gotenberg:8
    ports:
      - "3000:3000"
    networks:
      - management_network
      - ragflow_ragflow  # 连接到 RAGFlow 网络

networks:
  management_network:
    driver: bridge
  ragflow_ragflow:
    external: true  # 使用外部的 RAGFlow 网络
  1. 配置 .env 文件:
# RAGFlow API 配置
RAGFLOW_BASE_URL=http://8.134.177.47:15002

# 通过 RAGFlow 网络连接的服务地址
ES_HOST=ragflow-es-01
ES_PORT=9200
DB_HOST=ragflow-mysql
MINIO_HOST=ragflow-minio
REDIS_HOST=ragflow-redis

优势:

  • 避免网络地址配置问题
  • 直接使用 RAGFlow 的服务容器名进行通信
  • 更稳定的容器间网络连接
  • 减少端口暴露和安全风险

注意事项:

  • 确保 RAGFlow 服务已正常运行
  • RAGFlow 网络名称可能不同,请根据实际情况调整(通常为 ragflow_ragflow 或 ragflow_default)
  • 可通过 docker network ls 查看可用的网络

Star History

Star History Chart

About

KnowFlowRAG

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages