写点什么

拯救重复劳动:无代码实现 Markdown 文本抽取与切分

作者:数由科技
  • 2025-07-29
    北京
  • 本文字数:1202 字

    阅读完需:约 4 分钟

拯救重复劳动:无代码实现 Markdown文本抽取与切分

自 2022 年 11 月 ChatGPT 3.5 发布以来,距今已快三年。这两年多来,LLM 概念从最初的引人关注到现在的深入人心,获得了巨大的发展。无论组织还是个人都希望利用 LLM 激活磁盘中经年累月积攒下的文件数据的价值以及提升应用的效率。

RAG(检索增强生成)无疑是目前利用 LLM 技术激活文件数据价值的最佳方案。其主要技术思想是,将文件中的数据抽取并合理切分后,转换为向量存储在拥有向量检索能力的数据库中。当有使用者提出问题时,将问题转换为向量并从向量库中检索出与问题相关的文档块信息。在对所有文档块信息进行适当排序整理后,连同问题一起交给 LLM,由 LLM 依据文本块信息来回答使用者的问题。

在这个技术方案中,如果要获得好的应用效果,首先需要文件数据块拥有较高的切分质量,即数据块中的数据尽量自然内聚,语义明确。否则,在进行向量匹配时,匹配到的文本块与问题的相关度不高或噪音过多,都无法通过 LLM 归纳获得高质量的回答。

那么,如何切分文档能获得明确语义的文本块呢?按照文档的章节切分是一个不错的选择。因为,任何文档的章节内的文本都是语义集中且明确的。现行主流的文档格式 DOC、PDF、Markdown 等都有章节的编辑功能,但由于 DOC、PDF 这类文件的格式结构复杂,章节信息不易提取;而 Markdown 为纯文本结构,章节信息容易提取。故建议将所有其它类型的结构文件都统一转为 Markdown 结构后再进行文本抽取和切分。

下面,我们就介绍下如何使用 HuggingFists 系统无代码实现 Markdown 中数据的抽取与切分。

流程解读



如图所示,Markdown 章节拆分算子对前置算子输入的 Markdown 格式的文档按照章节进行拆分。Markdown 章节拆分算子前的文件输入算子用于从文件系统中输入需要处理的 Markdown 文件;由于每个数据流只能被读取一次,图中的流程使用了两个 Markdown 章节拆分算子,意味着要对数据流读取两次。故而使用了流复制算子,用于对数据流进行复制。而后的两个 Markdown 章节拆分算子分别在两种参数状态下对文件进行拆分,一个拆分设置了块大小为-1,一个设置了块大小为 500。Markdown 章节拆分算子的属性含义如下:

  • 块大小:缺省值为-1,表示按照章节标题进行自然的拆分抽取。若该值不等于-1,表示按照设置的块大小和自然章节一起拆分文本块。当一个章节特别大,或 Markdown 文件中没有章节信息时,该块大小可有效补充文本拆分的特殊情况。

  • 块重叠值:缺省值为 0,表示文本块之间不留重叠部分。当该值不为 0 时,文本块会在块前指定长度的前块数据。以便拆分文本块时可以保留上下两个文本块可能存在的语义连贯性。

下面我们看一下流程的执行结果。

结果展示

章节拆分



章节+分块拆分



从上面的 2 张图可以看到,Markdown 章节拆分算子的输出结果集包括:Markdown 文件名、拆分后的文本块、以及章节的路径信息。在只按章节拆分的结果中,我们可以看到每个章节被抽到了 1 个文本块中。而在按章节+分块的结果中,我们可以看到,文本块比较大的章节按照块大小的设置,被拆分为了多个小的文本块。

用户头像

数由科技

关注

还未添加个人签名 2019-03-22 加入

还未添加个人简介

评论

发布
暂无评论
拯救重复劳动:无代码实现 Markdown文本抽取与切分_markdown_数由科技_InfoQ写作社区