AI编程

# 🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)

🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)


太棒了!经过我们深入的讨论和推演,现在为您呈上这份完美的**《基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)》**。

这个方案彻底摒弃了不稳定的“物理合并”,采用**“入库保持极简 + 查询端动态截取匹配”**的先进架构,完美兼顾了数据原真性、搜索精准度和前端渲染的灵活性。


🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)

🎯 核心痛点与挑战回顾

在 RAG(检索增强生成)场景下,大模型返回的溯源文本是一句或一段连贯的话,而 MinerU 解析出的 PDF 数据在物理上是高度碎片化的:

  1. 同行碎片化(Span 级):例如特殊符号 10m 会被拆分为 10 和 m 两个 Span。

  2. 跨行断裂(Line 级):一句话可能跨越 PDF 中的多行(甚至跨页)。

  3. 排版复杂性:由于存在多级列表(a, b, c)、无序号标题、表格等复杂排版,无法通过简单的正则或标点符号进行可靠的“入库物理合并”。

💡 方案核心思想

入库做减法,查询做加法。

  • 入库端:绝不跨行合并,保留 PDF 最真实的物理行形态,确保坐标(bbox)绝对精准。

  • 查询端:利用“前缀定位页码 + 单/双页内存动态拼接映射”的算法,实现跨行、跨页文本的完美匹配与坐标反推。


一、 入库解析阶段(MinerUProcessServiceImpl)

原则:以物理行(Line)为最小入库单位。

  1. 层级遍历:遍历 middle.json 时,解析粒度深入到 Line 级别(即 lines 数组的每一个元素)。

  2. 解决同行碎片(问题1):

    • 遍历当前 Line 下的 spans 数组。

    • 将所有 Span 的 content 字符串进行简单拼接(如 10 + m -> 10m)。

    • 将拼接后的字符串作为当前行的 text 字段入库。

  3. 坐标存储:

    • 当前行的 bbox 直接存入数据库(无需转换为多框数组,就是单行的 [x1, y1, x2, y2])。

  4. 数据

原创不易,完成人机校验,阅读全文

相关推荐