腾讯 Ima 知识库架构解读
腾讯 AI 智能工作台 Ima 是腾讯推出的智能办公产品,依托混元大模型与 RAG 架构打造知识管理体系,支持 Windows/Mac 双平台,提供 AI 问答、多模态文本创作、图像生成等核心功能。其核心能力覆盖多格式文档智能整合管理、大模型驱动的精准问答交互、动态知识图谱构建与更新,以及跨部门知识协同共享等场景。
最近有机会深入了解 ima 的实现过程,由于腾讯 Ima 未开源,可通过研究其旗下另一款开源同构产品 WeKnora 间接推测其架构。二者同属腾讯知识管理类产品,定位虽有差异,但共享核心技术理念。
WeKnora 的主力开发语言为 Go,项目启动前需在本地完成 Ollama 与 Docker 的安装配置:其中 Ollama 用于部署所需大模型,Docker 则负责部署数据库等相关镜像组件。

从架构图可见,WeKnora 核心分为两大模块:左侧绿色模块聚焦用户文档的上传与解析,同步完成知识库与向量库的构建。右侧紫色模块聚焦问答交互——即基于用户问题检索知识库,整合信息后生成精准回答。
一、文件上传:多格式解析与知识库构建
首先我们来看看文件上传后的处理逻辑。从代码层面可知,WeKnora 支持多种格式文件上传,涵盖 PDF、TXT、MD、DOCX、DOC、JPG、PNG、CSV、XLSX 及 XLS 等 11 类格式。

按文件属性可将其归为三大类:第一类是文本类文件(含可直接解析为文本的格式),包括 TXT、MD(Markdown)、DOC/DOCX(Word)、CSV/XLSX/XLS(表格)及纯文本 PDF;第二类是无法直接解析为文本的流式文件,如 JPG/JPEG/PNG 图片及扫描件 PDF;第三类是图文混合文件(如含图文的 PDF)。由于混合文件的处理逻辑本质是'文本 + 图片'的融合处理,因此后续将聚焦文本类与图片类数据展开讨论。
WeKnora 为每种文件类型单独设计了处理类,所有处理逻辑均封装在 /docreader/parser 目录中。

其中 PDF 解析逻辑最为复杂(需兼顾文本与图片内容),因此框架采用责任链模式实现解析。优先使用 MinerU 工具解析,若解析失败则使用微软开源的 Markitdown 文件解析工具。

从 mineru_parser.py 文件的实现逻辑来看,WeKnora 会先将 PDF 拆分为文本与图片两部分,完成图片保存后再对两部分分别解析。(下图)

先来看看文本部分的处理逻辑,不同文本类型(如 TXT、DOC、Excel)的处理细节虽有差异,但核心流程保持一致。对于文本类文件,框架会先通过正则匹配识别'不可切分的整体内容'(如 MD 表格、图片占位符等)。即使此类内容体积过大,仍然会直接作为单个 chunk 保留(不进行切分)。(这种情况理论上会影响系统实际运行性能)











