TextIn团队的文档解析测评工具Markdown Tester在Github发布后,我们陆续与大家探讨了目前业内对PDF解析工作的评判标准与我们各项测评指标的设计原理,包括段落、表格、公式、阅读顺序等维度。
今天,我们将介绍另一项重要指标,也是业内面对的一项普遍性难点:标题识别,以及它如何影响数据清洗与RAG系统开发。
 
我们依旧从指标设计出发

 
 
 
 
此前,我们在讨论段落检测维度的文章《所见即所得,赋能RAG:PDF解析里的段落识别与阅读顺序还原》(+link)中详细说明过识别率、召回率与F1的设计原理。
标题检测中,相关指标通过相似规则构建:标题识别率测量的是标题解析是否足够准确,即被识别为标题的项目中有多少是正确的;而标题召回率测量的是段落解析是否足够全面,能不能避免长文档中有没被找到的“漏网之鱼”;F1值是识别率和召回率的调和平均值,它综合考虑了这两个指标,用于评估文档解析的整体性能。
树状编辑距离的概念,可以参考《聊聊文档解析测评里的表格指标》(+link)。相对于表格树状结构,标题会更易于理解。凡长文档,大部分会包含多层级标题,将标题层级以树状结构的方式表达,并测量预测值与真值间的编辑距离,即可评判各层级标题的解析准确程度。
简而言之,如果解析产品将一篇论文中的二级标题检测为三级子标题,在这项指标里就会被扣分。
 
标题检测是PDF解析的主要维度之一,在长文档解析中尤为重要。
TextIn团队研发了文档树引擎这一关键技术,针对性提升标题检测能力。
物理版面分析技术支持对目标区块的检测与元素识别,并利用标题区块的高度(即字号)判断一级、二级、三级、......N级标题。这种方法解决了一部分问题,但较难在文档格式多样的复杂场景中保持良好表现。在此基础上,文档树引擎从语义出发,增强了标题识别率与召回率。
TextIn文档树引擎遵循以下路径工作:
一、输入
  • 整份文档的段落内容,以序列化形式传入模型
二、预测
  • 提取当前段落的embedding值
  • 预测每个段落和上一个段落的关系,分为子标题、子段落、合并、旁系、主标题、表格标题
  • 如果是旁系类型,则再往上找父节点,并判断其层级关系,直到找到最终的父节点
三、输出
  • 基于每个段落的情况,构造该文档的文档树,并按 JSON 结构输出(右图中未渲染段落节点)

 
 
 
 
正确的标题检测结果输出与文档树构建对数据质量有重要的提升作用,对后续数据清洗、大模型语义理解与RAG开发应用场景意义尤为明显。
简单来说,当AI对长文档进行检索与理解,清晰的标题及层级识别,能帮助机器快速读取全文的逻辑结构,并锚定我们希望查找或归纳的信息位置。不论我们需要LLM帮助快速阅读、生成摘要,还是提取细节内容,标题目录都能起到重要作用。
以RAG(Retrieval-Augmented Generation)这一主要场景为例,在系统开发过程中,Chunking(分块)对整体性能有着显著的影响。RAG在进行信息检索的时候需要将检索出来的有价值的文本段送给模型,模型才能生成可靠有用的内容。分块是将整篇文本分成小段的过程,当我们使用LLM embedding内容时,分块可以帮助优化从向量数据库被召回的内容的准确性,因此文本段的质量也是RAG中比较重要的一环。良好的分块能够减少计算资源的消耗,提高检索效率,并提升生成质量。
常见的Chunking方式包括以下几种:
1、固定长度切分:将文本按固定长度进行切分,例如每1000或2000个字符切分为一个块。这种方法简单直接,便于快速处理,但可能无法充分考虑文本的实际语义结构,导致上下文断裂,影响重要的语义信息。
2、基于句子的切分:按照句子粒度进行切分,比如以句号、点号等标点符号进行切分。该方法能保证每个句子的完整性、上下文连贯性。但如果句子过长,可能丢失一些细节,或由于切分不准确影响检索效果。
3、滑动窗口切分:创建一个重叠的滑动窗口,比如设置窗口大小为500,步长为100。这种方法可以减少因固定长度或句子边界切分可能引入的信息丢失问题,在一定程度上平衡文本的连续性和语义完整性,但上下文重叠导致信息重复,增加计算量,而窗口的开始和结束可能会在句子或短语中间,导致语义不连贯。
不同的Chunking策略和参数设置会导致生成Chunk的特点差异,进而影响RAG模型在下游任务中的性能表现。在常规方法之外,也存在对文档要求更高的分块方式:按文档结构切分。这种策略要求文档具有明确的结构化信息,可以有效利用文档的层次信息,保持语义的连贯性。
基于语义分割的优化使用各级子标题作为分块依据,能够最大程度锚定完整内容。优化的实现需要充分的前提条件:文档解析工具能为RAG提供结构清晰、机器可读的长文档,例如自带标题层级的Markdown文本。
好的文档解析工具能让分块处理“不打没准备的仗”,为语义分割提供良好基础。
 
目前,TextIn文档解析工具已在RAG知识库问答中发挥重要功能,文档树引擎在年报、财报、行研报告等金融文件领域展现了较为明显的优势。
对于文档解析工具在RAG、LLM场景下的效果,欢迎各位开发者随时向我们提出其他需求,与我们共同交流您当下的用途和需要~
TextIn文档解析产品目前正在提供开发者福利,添加合合信息企V,即可申领!
关于测评工具、产品或需求,都可以找我们沟通。我们欢迎所有探讨和交流!

TextIn文档树引擎,助力RAG知识库问答检索召回能力提升的更多相关文章

  1. bs4--官文--搜索文档树

    搜索文档树 Beautiful Soup定义了很多搜索方法,这里着重介绍2个: find() 和 find_all() .其它方法的参数和用法类似,请读者举一反三. 再以“爱丽丝”文档作为例子: ht ...

  2. bs4--官文--遍历文档树

    遍历文档树 还拿”爱丽丝梦游仙境”的文档来做例子: html_doc = """ <html><head><title>The Dor ...

  3. bs4--官文--修改文档树

    修改文档树 Beautiful Soup的强项是文档树的搜索,但同时也可以方便的修改文档树 修改tag的名称和属性 在 Attributes 的章节中已经介绍过这个功能,但是再看一遍也无妨. 重命名一 ...

  4. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  5. Python爬虫系列(六):搜索文档树

    今天早上,写的东西掉了.这个烂知乎,有bug,说了自动保存草稿,其实并没有保存.无语 今晚,我们将继续讨论如何分析html文档. 1.字符串 #直接找元素soup.find_all('b') 2.正则 ...

  6. 使用requests爬取梨视频、bilibili视频、汽车之家,bs4遍历文档树、搜索文档树,css选择器

    今日内容概要 使用requests爬取梨视频 requests+bs4爬取汽车之家 bs4遍历文档树 bs4搜索文档树 css选择器 内容详细 1.使用requests爬取梨视频 # 模拟发送http ...

  7. MaltReport2:通用文档生成引擎

    UPDATED: 本文仅适用 MaltReport 2.x ,3.x 版本文档还在撰写当中,目前请参考项目中的 Samples. MaltReport 是我几年前写的开源单据.报表引擎,最近进行了较大 ...

  8. Linux 基础命令、文档树 和 bash

    最近发现了一个总结得更好的:bash cheatsheet 本文只是我对 linux 基础学习的一个总结,可能仅适用于复习用.算是我的 Linux 备忘录. 最基础 tab 补全 * 通配符 ctrl ...

  9. [整理] ES5 词法约定文档树状图

    将ES5 词法说明整理为了树状图,方便查阅,请自行点开小图看大图:

  10. smarty3.0中文手册文档API及使用指南

    1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...

随机推荐

  1. FPGA CFGBVS 管脚接法

    说明 新设计了1个KU040 FPGA板子,回来之后接上JTAG FPGA不识别.做如下检查: 1.电源测试点均正常: 2.查看贴片是否有漏焊,检查无异常,设计上NC的才NC: 3.反复检查JTAG接 ...

  2. php.ini文件与php.d

    `php.ini` 是 PHP 的主要配置文件,用于全局配置 PHP 的行为和功能.它包含了许多 PHP 的核心设置,如内存限制.错误报告级别.扩展加载等. `php.ini` 文件通常位于 PHP ...

  3. MySQL ibdata1文件太大的解决办法

    在MySQL数据库中,如果不指定innodb_file_per_table=1参数单独保存每个表的数据,MySQL的数据都会存放在ibdata1文件里,时间久了这个文件就会变的非常大. 下面是参考网上 ...

  4. [oeasy]python0007-Guido的简历

    ​ 执行 esc 退回到正常模式 ​ 编辑 esc退出插入模式 准备底行命令模式运行当前py文件 保存执行 ​:w|!python3 %​ 保存并用 python3 解释当前程序(%) ​ 编辑 可以 ...

  5. Vue 基于VSCode结合Vetur+ESlint+Prettier统一Vue代码风格

    基于VSCode结合Vetur+ESlint+Prettier统一Vue代码风格 插件安装 安装Vetur,ESlint, Prettier - Code formatter插件 安装方法(安装ESl ...

  6. Linux 中 Crontab 执行时的环境变量问题(allure命令不执行)

    前几天做了UI自动化脚本部署linux服务器,但是放下脚本的allure命令不执行(生成allure报告和启动allure服务的命令不执行),然后就各种找问题,一开始怀疑是allure的环境变量问题, ...

  7. 面试题-python 什么是装饰器(decorator )?

    前言 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.很多python初学者学到面向对象类和方法是一道大坎,那么py ...

  8. HCIA first

    每台电脑都有网线 网线连的是什么? 网线插在接入交换机 流量给入汇聚交换机 汇聚给核心交换机 核心交换机 堆叠是指将一台以上的交换机组合起来共同工作,以便在有限的空间内提供尽可能多的端口.多台交换机经 ...

  9. 【JavaWeb】 接口鉴权

    一年前写过一篇,叫Webservice校验机制,叫法不太对,就是接口鉴权 https://www.cnblogs.com/mindzone/p/15078436.html 这东西就是说,你提供给外部的 ...

  10. 【SpringBoot】日志在项目中的应用

    日志的目的: 为了方便日后的运维,快速定位BUG,错误信息等等 日志算是一个救命稻草 pom.xml需要的依赖: <?xml version="1.0" encoding=& ...