本人项目地址大全:Victor94-king/NLP__ManVictor: 优快云 of ManVictor
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
1 概述
在解析(1)使用MinerU将PDF转换为Markdown中我们提到了将各种文档解析为Markdown的好处,本文我们接着上一篇文章处理后的Markdown,讲解如何对Markdown文档进行切分。
在很多文档中,标题都是非常重要的信息,例如企业内部的办理流程,稍微规范点的文档,标题里面都会体现重点信息的。
既然转成了Markdown,标题肯定是保留下来了,本文将首先介绍基于Markdown标题的切分方法,以及另外一种常规的Markdown切分方法。Langchain中对于Markdown文档专用的切分器,其实也只有两类:
- 普通的Markdown切分方法(Langchain中的MarkdownTextSplitter),效果和使用PyPDFLoader加载解析PDF的效果是一致的
- 基于标题的切分方法(Langchain中的MarkdownHeaderTextSplitter类),与直觉理解还不太一样,直接-使用langchain的Markdown标题切分类,效果并不好,我们将通过对结果的简单分析,尝试发现问题,并进行优化,下图是经过2次优化后的结果,效果答复提升,最终效果基本上是与基础流程打平了
本文将介绍这两种切分方法,并介绍如何通过对基于标题的切分结果进行简单的数据分析,尝试发现问题并进行解决。
2 效果对比
下图是效果对比,从结果上来看,并没有体现出将PDF使用MinerU转换成Markdown的优势,可能的原因有以下两点:
- 我们示例所使用的文档,转成Markdown后只有一级标题,标题的层级不够丰富,意味着转Markdown后,标题所能发挥的作用有限
- 由于最初在使用RAG技术构建企业级文档问答系统之QA抽取构造的测试集是使用PyPDFLoader加载解析PDF并直接切分构造的,从这个角度讲,基础流程是与测试集更加契合的
- 0.71相比0.72只低了1个点,并没有显著得低,这个结果未必置信
3 核心代码
3.1 基于标题切分
3.1.1 直接使用MarkdownHeaderTextSplitter
这部分完整代码在:
<