整合MinerU + Chonkie + RAG-Anything 的 RAG系统技术实现

今日略研究了一下整合MinerU + Chonkie + RAG-Anything 的 RAG系统技术实现:

MinerU:开箱即用的高保真版面解析(表格/跨页/公式/图题),且输出结构化 JSON + Markdown,特别适合后续切块与证据回显。

Chonkie:专注“切块就位”,轻量、性能高、策略多样,能直接作为统一切块层;TS 版本可在前后端同构,方便处理在线文档流。

RAG-Anything:多模态、双图+混合检索+多阶段编排的“一体化 RAG 框架”,正好补足“跨文本-表-图-公式”的检索推理能力,与 LightRAG 生态兼容。

一、技术架构

4 层架构:L1采集解析 → L2切块归档 → L3检索编排 → L4生成与反馈)

L1 采集与解析(Documents → Structured Multimodal)

1)MinerU 解析服务(CLI/SDK/API):将 PDF/图片/Office 转为 Markdown + 结构化 JSON,并同时导出表格、公式、图像片段的位置信息与可视化调试文件,确保复杂表格、跨页单元格等高保真抽取。

2)对象存储/版本化:原始文件与 MinerU 产物入 MinIO/S3(raw/mineru/md/mineru/json/mineru/assets/)。

L2 切块与归档(Structured → Chunks+KG)

3) Chonkie 切块器:针对 MinerU 的 Markdown/JSON 进行“语义-结构双感知”的切块(章节/段落/表格/图题/代码/公式),并保留 source_url / page / bbox / section_path / modality 等元数据。Chonkie 提供高性能、轻量级的多种 chunker(Recursive、ByHeaders、FixedTokens 等),适合做 RAG 侧的标准化切块层。

4) 知识图谱构建(RAG-Anything):把“文本块、表格、图片、公式”等作为节点,章节关系、图表-图题、表-引用、跨页续表、同名实体作为生成“双图”(结构图 + 语义图),为跨模态检索提供导航骨架。

5) 向量与稀疏索引

  • 文本:bge-m3 / e5-mistral 等;
  • 表格:表格文本化(Markdown/CSV)+ 专用 embedding;
  • 图片/图表:CLIP/Multimodal embedding;
  • 稀疏:BM25/ColBERT-X(可选)。
    (RAG-Anything 原生支持多模态与多阶段检索编排,可与 LightRAG 生态兼容。)
L3 检索与编排(Query → Multistage Retrieval)

6) 跨模态检索编排器(RAG-Anything):输入查询后,先在结构图上定位候选区域(章节/小节/图表族),再做向量+稀疏混合召回,最后用 reranker(bge-reranker-v2 等)重排,得到“证据集合”(文本段、表格、图片、公式)。

7) 片段融合器:按“主题线索 + 版面邻接 + 跨页续表”将证据拼合,生成上下文包(Context Pack),保持引用顺序与可视化坐标。

L4 生成与反馈(Context → Answer+Citations)

8) 答案生成器:多模态 LLM(或文本 LLM + 表格/图像专用解释器)在严格 token 预算下生成答案,并输出逐条引用(文档/页码/图号/单元格坐标)。

9) 反馈闭环:用户点选“引用证据”触发纠错/精修(Refine)与索引更新(对低质量块回流 MinerU 配置与 Chonkie 切块策略),实现持续提升。

运行形态:Web API(FastAPI)+ 后台任务(Celery)+ 向量库(FAISS/PGVector/Weaviate)+ 图数据库(Neo4j/ArangoDB)+ 对象存储(MinIO)+ 观测(Prom+Grafana+OpenTelemetry)。

二、关键流程(端到端)

1) 解析与入库(MinerU)
  • 触发:上传/监听 raw/
  • 执行:调用 MinerU(本地 CLI 或服务端 API)输出 Markdown + 结构 JSON + 资产。
  • 质量:开启可视化调试文件与“结构化数据文件”,便于二次处理与质检。

MinerU 能高保真处理旋转表格、跨页合并单元格,适合金融/科研/规范标准等苛刻版面。

2) 语义切块(Chonkie)
  • 规则:优先 ByHeaders → Paragraph → Recursive,表格/图题单独为块;遇长表分“标题 + 片段块(含行号范围)”。
  • 目标:稳定 token 上限(如 300–500)+ 结构对齐(与 MinerU 的 section/anchor 对应)。
  • 实现:Python 侧直接用 chonkie;前端/Node 任务可用 @chonkiejs/core 同构重用。
3) 索引与建图(RAG-Anything + 自建索引)
  • 文本/表格/图片分别嵌入,写入向量库 namespace={modality}
  • 构建双图
    • 结构图(章节层级、块邻接、图↔图题、表↔表题、正文↔引用);
    • 语义图(相似块、实体共现、跨模态对齐)。
  • 将双图入 Neo4j,并把块-节点 ID 回写到向量条目元数据中。
4) 多阶段检索与编排(RAG-Anything)
  1. 结构先导:在图上定位候选章节/图表族;
  2. 混合召回:在候选子图里做向量+BM25 混合(减少噪声);
  3. 交叉重排:用跨模态 reranker;
  4. 证据打包:同页邻接优先、跨页续表合并、图题随图。
    RAG-Anything的设计目标就是“多模态、多阶段、跨模态理解”,与传统纯文本 RAG 的差距在于它把多模态当作互联的知识实体来统一处理。
5) 生成与可追溯
  • LLM 收到 Context Pack(分区:正文/表格摘要/图题/跨页补丁);
  • 输出逐证据引用doc_id#page:line_range / Fig.x / Tab.y[row-range]);
  • UI 侧提供“证据高亮预览”(用 MinerU 的 bbox 映射回原 PDF 视图)。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注