KnowFlow v1.0.0 终于迎来了众多群友期待的功能点:接入 MinerU 2.0。为什么我们第一时间决定要接入 MinerU 2.0,这里有几点考虑:

  • • 原先 KnowFlow 是通过 Python 直接调用 MinerU 1.x 的 API 接口,部署成本较高,架构设计高度耦合,不利于扩展

  • • 社区同学反馈 MinerU 2.0 vlm-sglang 效果非常好,解决了原先文档 OCR 过程中存在的一系列问题,效果逐渐逼近付费 OCR 效果

  • • KnowFlow 始终坚持的一点:高准确率,这个功能点可大幅提升文档识别和解析效果

图片

 

同时近期也和 RAGFlow 官方产品经理做了深度沟通,产品经理高度肯定了 KnowFlow 产品的出发点和价值,也欢迎更多的朋友支持 RAGFlow 的发展。

MinerU 2.0 功能简介

MinerU 2.0 共支持三种部署模式,这里我们直接放官方示例图:

图片

 

pipeline 模式

pipeline 模式简单理解就是 MinerU 1.x 的功能,MinerU 2.0 相当于做了向下兼容。这种模式配置要求最低,本地 MAC 开发开启了 mps 模式后,pipeline 跑起来速度还是令人惊喜。

vlm-transformers 模式

该模式使用 HuggingFace transformers 库直接加载和运行视觉语言模型,实现端到端的文档理解。实测真的很慢,配置要求挺高,存在 vlm-sglang 模式前提下,不建议采用此模式。

vlm-sglang 模式

vlm-sglang 包含两种子模式:

  • • vlm-sglang-engine

    • • 架构:本地 SGLang 引擎集成

    • • 性能:通过 SGLang 加速,在单卡 NVIDIA 4090 上可达 10,000+ tokens/s 吞吐量

    • • 硬件要求:需要 24GB+ VRAM

  • • vlm-sglang-client

    • • 架构:远程 SGLang 服务器客户端连接

    • • 部署方式:支持分布式处理,客户端仅需 CPU 和网络连接

    • • 服务器配置:使用自定义的 SGLang 服务器

对于 KnowFlow 来说,本次 vlm-sglang 支持 vlm-sglang-client

KnowFlow v1.0.0 功能简介

考虑后续可能会对接更多的 OCR 引擎, KnowFlow v1.0.0 本次架构设计采用 FastAPI 和 MinerU2.0 进行对接。

MinerU 2.0 Web API

截止到发稿日为止,MinerU 2.0 仍未推出官方的 Web API 服务。KnowFlow 在原先 MinerU 1.x 的基础上适配了 Web API ,并将源码开放,方便后续持续升级和维护 MinerU 最新版本以及自定义改造。

图片

 

该 Web API 服务和独立于 KnowFlow 单独使用,符合组件化设计思想。

同时项目中提供了 demo 文件、测试脚本、解析后的结构化数据样例等,方便后续的测试联调

考虑到部分用户用不到 vlm-sglang 模式,KnowFlow 提供了两个镜像

  • • zxwei/mineru-api-full:包含完整的 VLM 功能,支持所有后端类型

  • • zxwei/mineru-api:基础版本,主要支持 pipeline 后端

其中 mineru-api 镜像体积较小,适合不需要本地开发,而只是简单本地体验用户;mineru-api-full 适合生产环境,保证足够强的解析效果。

图片

 

考虑到部分开发者觉得镜像体积太大,只需要本地开发联调,我们贴心的提供了本地 MinerU2.0 web api 部署方式。这样的话,就无需拉取体积巨大的镜像了。

# 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

KnowFlow Client

有了 MinerU2.0 Web API 的服务端,对于 KnowFlow client 端,我们提供了非常简单的配置参数,可以很方便的指定解析模式以及配置相关参数。

# =======================================================
# MinerU 文档解析配置 (客户端配置)
# =======================================================
mineru:
# FastAPI 客户端配置
  fastapi:
    # FastAPI 服务地址
    # 本地开发: http://localhost:8888
    # Docker部署: http://host.docker.internal:8888 (Docker Desktop)
    #           或 http://宿主机IP:8888 (Linux Docker)
    #           或 http://mineru-api:8888 (Docker Compose网络)
    url: "http://host.docker.internal:8888"
    
    # HTTP 请求超时时间(秒)
    timeout: 30000

# 默认使用的后端类型
# 选项: pipeline, vlm-transformers,  vlm-sglang-client
  default_backend: "pipeline"

# Pipeline 后端请求参数
  pipeline:
    # 解析方法: auto, txt, ocr
    parse_method: "auto"
    
    # 文档语言(提升OCR准确率)
    lang: "ch"
    
    # 是否启用公式解析
    formula_enable: true
    
    # 是否启用表格解析
    table_enable: true

# VLM 后端配置
  vlm:
    sglang:
      # SGLang 服务器地址(vlm-sglang-client 后端需要)
      # Docker部署时同样需要使用宿主机IP或容器网络地址
      server_url: "http://host.docker.internal:30000"

实测过程中,强烈推荐大家采用 vlm-sglang-client 模式,该模式速度上比 vlm-transformers 提高了很多倍,当然显存占用大点,我实测单卡 48 G 显存 500KB PDF 文件,解析速度大概在 5s 左右

项目开发过程中,有一个细节值得提出来:pipeline 和 vlm-sglang-client MinerU 2.0 官方模型吐出来的数据协议竟然有差别,这个问题真诡异,建议 MinerU 2.0 后续予以统一。

KnowFlow 未来展望

至此,MInerU 2.0 接入告一段落,后续将会重新和大家一起将 RAGFlow 源码深度解读, 围绕我们日常关心的功能点,如知识图谱、元数据、Tag、分块原理、混合检索原理等。

读源码的过程中才能更加深入理解 RAGFlow 产品细节,才能逐渐的从适应它到掌控它

有部分同学关于 KnowFlow 前端 UI 源码开源的事,后面我们也会把前端代码开源出来,让更多的人参与进来,设计出更友好的交互体验。

图片

 

为了让更多的人了解 KnowFlow ,最后一个计划是准备在 B 站和抖音给大家科普下本项目部署和使用的一些细节。

交流联系

本项目代码已完全开源,欢迎关注「KnowFlow 企业知识库」,加入交流群,一起沟通交流。

写了这么多,也想分享下本周的一些感受。身体不知道是阳了还是怎么的,顶着发烧,头昏脑涨,把这个版本如期发出去了。

有人问,你开源这个项目,能赚钱么?

说实话,没赚到一分,那为什么还在做?

我始终认为:输出一些有价值的东西出去,和更多的人产生交流和联系,获得一部分人的认可,这就足够了。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐