一人公司做企业知识库,一年拿下 40+ 客户,KnowFlow 到底做对了什么?

0 阅读14分钟

很多企业第一次看知识库产品,都会被演示效果打动。

上传几份 PDF,问几个问题,回答里带引用,界面也挺顺滑。可一旦项目真的进到生产环境,问题马上就变了:扫描件识别不干净,图文混排被拆坏,表格和图片说明丢在不同 chunk 里,权限分不清,导入导出做不了,评估没抓手,出了问题只能靠猜。

这也是为什么,企业知识库项目最后比拼的往往不是“模型接上了没有”,而是底层文档处理、分块、检索、权限和运维体系有没有做扎实。

KnowFlow 这套产品,就是围绕这个现实场景长出来的。它基于 RAGFlow 深度二开,但重点从来不是换个界面、堆几个模型,而是把知识库真正放进企业环境以后会碰到的那一层层问题做透。过去一年多,这套产品已经服务了 40 家客户,场景覆盖上市公司、制造业、研究院、国资基金,行业上含基金证券、传统制造业、互联网、研究院、法律等。 客户愿意长期投入,原因通常很简单:系统能落地,效果能复盘,出了问题还能定位。

图片

一、KnowFlow 的产品定位,先把“知识怎么进来”解决好

企业知识库最容易被低估的,是原始数据质量。

真实企业文档从来不是整整齐齐的纯文本。它可能是扫描 PDF,也可能是带复杂目录层级的 Word、PPT,可能有图注、表格、附录、页眉页脚,甚至还夹着图片、音视频和截图。如果底层解析把这些东西搞乱了,后面的 chunk 再精致、prompt 再漂亮,最终效果还是飘。

所以 KnowFlow 的核心思路很清楚:知识库不是从向量化开始的,而是从文档结构理解开始的。

这一点决定了它和很多“文本喂模型”的方案,从第一步就走在不同的轨道上。

二、解析层为什么坚持双引擎:MinerU 负责精细,PaddleOCR 负责通用

KnowFlow 现在的文档解析主线,是 MinerU + PaddleOCR 双引擎。

图片

这不是为了“给客户多一个选项”,而是为了让底层结构理解能力能跟着外部生态一起进化。过去一年里,这个判断越来越被验证。MinerU 和 PaddleOCR 在速度、识别精度、表格和版面处理能力、文档格式支持上都在持续提升,最近 MinerU v3.1.0  docx / pptx 的支持就是一个很典型的例子。

对企业客户来说,这件事的价值很直接。知识库系统最怕底层卡死在一套封闭解析器里,今天能识别 PDF,明天面对合同、PPT、研究报告、制度文档时就开始掉链子。双引擎设计让 KnowFlow 的解析能力不依赖单一实现,也让整个系统能持续吃到 OCR 基础设施升级的红利。

更关键的是,KnowFlow 在解析层不是“读完直接切块”,而是把 OCR 和 chunking 解耦了。

在 rag/app/modern_parser_base.py 里,这条主链路被拆成两个阶段:

  1. 1. _run_ocr()

  2. 2. _run_chunking()

前者负责把原始文件转换成 Markdown 和坐标映射,后者才根据策略去分块。OCR 产物还会被持久化下来,这样做有两个实际价值:

  • • 第一,客户如果发现某类文档解析有偏差,可以审阅和定位,而不是整条链路黑盒运行。

  • • 第二,OCR 修正和分块调优可以分开做,不用每次都把整条流程从头跑一遍。

说白了,这是一种更偏工程化的设计。它承认文档解析本身并不完美,所以留出了“可审阅、可复盘、可重分块”的空间。这也是 KnowFlow 比较像一套长期运营系统,而不是一次性 demo 的原因之一。

三、smart 分块真正解决的问题,不是切得多聪明,而是别把文档切坏

做知识库的人都会很快意识到,分块是个“看起来简单,实际很容易翻车”的环节。

分得太碎,模型拿不到完整上下文;分得太大,召回不精准;父标题丢了,引用位置没了,表格说明被拆开,图和图注分家,最后回答看着也像有点关系,但总差那一下。

KnowFlow 现在支持 smart、page、parent-child、title、regex 等多种分块方式,但真正最能代表这套产品方法论的,是 smart 分块

它的实现不是简单按 token 数量硬切,而是沿着 Markdown 结构去做多阶段处理。在 knowflow/server/services/knowledgebases/mineru_parse/utils.py 里,split_markdown_to_chunks_smart() 明确是一个四阶段 pipeline:

  1. 1. 原子绑定和语义切分

  2. 2. 合并同标题下过小的块

  3. 3. 合并兄弟小节

  4. 4. 根据配置补回缺失的父标题

这里面有几个点特别关键。

1. 把该绑在一起的东西先绑住

代码里有专门的 _bind_figure_groups()_bind_intro_paragraph_with_list() 等逻辑,意思很直白:

  • • 图标题要和图片绑定

  • • 引导段落要和后面的列表绑定

  • • 表格引导段落和表格主体要尽量保持在一起

  • • 代码说明和代码块要尽量别拆散

很多企业文档的错误,其实不是 OCR 错了,而是语义单元在分块阶段被切坏了。KnowFlow 在 smart 分块上优先做的是“保住结构关系”。这样最终召回出来的 chunk,更接近一个人真实阅读文档时看到的语义单元。

2. 把父标题补回来

在真实企业文档里,一段内容单独拿出来常常没法看。标题、章节、上下文才是决定这段话到底在讲什么的关键。split_markdown_to_chunks_smart() 在最后会根据 heading_metadata 把缺失的父标题补回 chunk 内容里。这样检索阶段拿到的不是孤零零的一段文本,而是一段带结构位置的内容。

这会直接影响回答质量,尤其是在制度、合同、研究报告、技术手册这类强结构文档里。

3. page 和 parent-child 不是备用选项,是不同检索任务的工具箱

企业场景里没有一种 chunking 能吃遍天下。

  • • 有些任务天然依赖物理页,page 模式更稳。

  • • 有些任务既要精确命中小片段,又要回收完整上下文,parent-child 更合适。

  • • 有些客户文档格式稳定、规则明确,regex 反而是最高效的。

KnowFlow 没把 chunking 做成一个黑盒默认值,而是给不同场景留了足够明确的策略空间。对企业项目来说,这非常关键,因为知识库效果优化从来不是“一次设置永远正确”。

四、Milvus 这一层,KnowFlow 做的不是简单接入,而是把检索结构和上游解析结果对齐

很多团队做 RAG 时,会把向量库看成标准件:能存、能搜就够了。真正上线以后才会发现,检索层和上游文档结构如果对不齐,系统会出现一种很典型的问题:每一层单看都说得过去,整体效果却一直不稳定。

KnowFlow 在 Milvus 上做的重点,是让它和上游 OCR 产物、分块结构、展示字段形成一个统一体系。

在 rag/utils/milvus_conn.py 里可以看到,这一层不是单纯的 dense vector 搜索,而是围绕企业知识库场景做了几件事:

1. 稠密向量 + BM25 稀疏向量混合检索

Milvus 这里同时支持:

  • • 稠密向量搜索

  • • BM25 稀疏向量搜索

  • • 混合搜索

这件事的意义很大。企业知识库里有不少问题,纯向量语义检索会命中“意思接近”的段落,但对某些关键术语、标准编号、专业词、规范性表述,BM25 的词项匹配仍然很重要。KnowFlow 把这两条路线放在一个检索体系里,而不是押宝单一向量召回。

2. 存储结构为展示和引用做了专门设计

Milvus 里不只是存 embedding,还会存:

  • • content_with_weight

  • • position_int

  • • page_num_int

  • • top_int

  • • doc_type_kwd

  • • img_id

  • • video_id

  • • keyframes_json

这些字段的意义,是让“检索”这件事不是停在返回一段文本,而是能继续支撑:

  • • 页面定位

  • • 图片引用

  • • 图文高亮

  • • 视频片段回放

  • • 多模态展示

也就是说,检索层不是只为模型服务,也是为前端可解释性和用户交互服务。

五、OCR 审阅和引用高亮,真正价值在于“出了问题以后能定位”

企业知识库项目上线以后,最怕的不是偶发错误,而是错误发生以后没有定位工具。

OCR 错了、图注没保住、表格结构偏了、引用位置不准,这些问题如果没有中间层可视化,最后只能落到一句“模型不稳定”。这对交付团队和客户都没有帮助。

KnowFlow 的 OCR 审阅和 PDF 高亮能力,本质上是在给知识库构建一个可观察层。

前端高亮是直接消费坐标信息渲染的。前面我们在图文混排、高亮和 chart/figure 这条链路上做的修正,其实反映的是同一个产品原则:展示层看到的内容,必须和解析层、分块层、检索层是一致的。

只有这样,客户才有机会判断:到底是文档解析出了问题,还是分块逻辑需要调整,还是回答阶段需要优化。这种“能定位”的能力,在企业场景里往往比单次回答更重要。

六、DeepRead 这套能力,解决的是长文档和复杂问题的“浅回答”问题

标准 RAG 很适合 FAQ,但一碰到长文档、多章节、推理链比较长的问题,系统就容易答浅。原因并不复杂:这类问题往往不是一次检索拿一段文本就能回答的,它更像人阅读文档时的过程,先定位,再往下读,再决定答案怎么组织。

KnowFlow 的 DeepRead 正是沿着这个思路做的。

在 rag/advanced_rag/deep_read.py 里,DeepRead 不是简单多检几次,而是把文档组织成结构化坐标系统:

  • • 章节层级

  • • 段落坐标

  • • 页面范围

  • • chunk 到章节的反向索引

然后通过一套工具循环完成:

  • • retrieve:先定位相关文档和结构坐标

  • • read_section:按章节连续读取

  • • read_page:按页读取

这样做的价值,是让系统在处理复杂长文档时,不是“靠模型猜哪段最重要”,而是沿着文档结构把问题逐步展开。对合同、制度、研究报告这类需要深读的材料,差别会非常明显。

七、多模态能力,重点不在“支持图片”,而在让原始知识形态真正可用

企业知识从来不只存在于文字里。

制造业里有图纸、设备照片、视频;研究院里有论文图表和实验材料;客服场景里有流程截图;培训资料里有音视频。很多系统名义上支持多模态,实际落地时还是退化成 OCR 文本。这样一来,图片和视频里最有价值的信息仍然进不了知识体系。

KnowFlow 在多模态上做得比较深,关键点不只一个。

图片

图文混排和图片理解

系统会尽量保留图片和上下文的位置关系,同时支持图片理解增强,让图片不只是“有一张图”,而是能带着语义进入 chunk。前面图表标题、高亮和 caption 保持一致性的那套工作,都是围绕这个目标展开的。

ColPali 视觉检索

这层能力的价值,在于让“以文搜图”和视觉匹配变成真正可用的检索方式,而不是只能靠 OCR 文字碰碰运气。对于图纸、表单、截图、报告图表这类材料,视觉检索往往比纯文本匹配更贴近业务需求。

ColPali 知识库 ColPali 知识库

视频理解

在 rag/app/video.py 里,视频处理也不是简单抽取全文字幕。它会:

  • • 先做视频分段

  • • 再抽关键帧并去重

  • • 对视频整体做语音转写

  • • 对关键帧或视频片段做视觉描述

  • • 最后把时间范围、文字、视觉描述合成可检索的 chunk

这意味着视频资料进库以后,不只是“有了个摘要”,而是能按时间片段、画面内容和文字内容一起被检索。

这对培训、巡检、操作演示类知识非常有价值。

八、企业工程化能力,才是客户愿不愿意长期用下去的分水岭

很多知识库产品演示时都很好看,真正进企业以后,差距就出在工程层。

图片

1. 离线导入 / 导出

企业环境里,测试、预发、生产之间要迁移,客户也会要求备份和恢复。没有导入导出能力,知识库很难真正成为企业资产,只能算一个在线工具。

2. 企业微信、钉钉、飞书接入

企业不一定愿意再推广一个新入口。把知识服务直接接入已有协同平台,决定了它能不能进入日常工作流。

3. KnowEval 评估体系

“感觉好像不错”在企业里不够。上线以后要知道:哪些问答答对了,哪些文档效果差,优化有没有带来提升。评估系统的价值,是把知识库从主观体验拉回到可量化运营。

4. RBAC 权限治理

知识库在企业里一定有边界。谁能看,谁能编辑,谁能配置,谁能管理,这些不是附加功能,而是上线前提。KnowFlow 在 RBAC 上投入比较多,就是因为真正的企业项目不能接受“全员全库可见”的粗放模式。

RBAC 总览 RBAC 总览

5. 私有化部署

对很多 B 端客户来说,这不是加分项,是进入项目名单的前提条件。尤其国央企、研究院、制造业和高合规行业,更看重系统能不能在自己的网络、权限和运维体系里长久运行。

九、为什么我们敢说 KnowFlow 不是 Demo

因为它已经在真实客户环境里跑了足够长时间,也因为这套产品的价值不是靠某一个 flashy 功能撑起来的。

客户最后真正买单的,通常是三件事:

  • • 文档能不能解析准

  • • 回答出了问题能不能定位

  • • 系统能不能长期运营

过去一年多,KnowFlow 在 40 家客户中的打磨,其实不断在验证同一个事实:企业知识库项目最终拼的是底座的完整度。OCR、分块、检索、多模态、评估、权限、私有化部署,这几层只要有一层是拼凑出来的,系统就会在真实业务里露短板。

KnowFlow 走到今天,价值恰恰在于这些层是一起设计的,而不是上线前临时补齐的。

十、接下来更值得关注的方向

知识库项目往下走,价值不会停在“员工问一句,系统答一句”。

更有价值的方向,通常是让知识直接进入业务流程。比如:

  • • 合同审核

  • • 智能问数

  • • 智能客服

这些场景真正依赖的,仍然是底层结构理解、可验证检索和工程治理能力。知识库如果底座不稳,往上堆再多智能流程也会晃。反过来说,底座一旦稳下来,上层场景会越长越快。

结尾

企业知识库这件事,表面看是在做问答,底层其实是在重建企业知识的组织方式。

如果只看演示效果,很多系统看起来都不错。可一旦进到生产环境,真正拉开差距的,是文档进库前怎么理解、进库后怎么切、检索怎么召回、错误怎么定位、权限怎么治理、系统怎么部署和运营。

KnowFlow 这套产品能走到今天,靠的不是某个单点功能,而是把这些底层问题一层层做扎实。对 B 端客户来说,这才是一套知识库产品能不能真正上线、并且长期跑下去的关键。

如果你想进一步了解 KnowFlow 的产品能力、技术路线和部署方式,可以关注KnowFlow企业知识库或访问官网:www.knowflowchat.cn/