# 🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)
🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)
太棒了!经过我们深入的讨论和推演,现在为您呈上这份完美的**《基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)》**。
这个方案彻底摒弃了不稳定的“物理合并”,采用**“入库保持极简 + 查询端动态截取匹配”**的先进架构,完美兼顾了数据原真性、搜索精准度和前端渲染的灵活性。
🚀 基于 MinerU 的 RAG 溯源高精度匹配策略方案(最终版)
🎯 核心痛点与挑战回顾
在 RAG(检索增强生成)场景下,大模型返回的溯源文本是一句或一段连贯的话,而 MinerU 解析出的 PDF 数据在物理上是高度碎片化的:
同行碎片化(Span 级):例如特殊符号
10m会被拆分为10和m两个 Span。跨行断裂(Line 级):一句话可能跨越 PDF 中的多行(甚至跨页)。
排版复杂性:由于存在多级列表(a, b, c)、无序号标题、表格等复杂排版,无法通过简单的正则或标点符号进行可靠的“入库物理合并”。
💡 方案核心思想
入库做减法,查询做加法。
入库端:绝不跨行合并,保留 PDF 最真实的物理行形态,确保坐标(
bbox)绝对精准。查询端:利用“前缀定位页码 + 单/双页内存动态拼接映射”的算法,实现跨行、跨页文本的完美匹配与坐标反推。
一、 入库解析阶段(MinerUProcessServiceImpl)
原则:以物理行(Line)为最小入库单位。
层级遍历:遍历
middle.json时,解析粒度深入到Line级别(即lines数组的每一个元素)。解决同行碎片(问题1):
遍历当前
Line下的spans数组。将所有
Span的content字符串进行简单拼接(如10+m->10m)。将拼接后的字符串作为当前行的
text字段入库。坐标存储:
当前行的
bbox直接存入数据库(无需转换为多框数组,就是单行的[x1, y1, x2, y2])。数据
原创不易,完成人机校验,阅读全文