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. 最近很火的Vue Vine是如何实现一个文件中写多个组件

    前言 在今年的Vue Conf 2024大会上,沈青川大佬(维护Vue/Vite 中文文档)在会上介绍了他的新项目Vue Vine.Vue Vine提供了全新Vue组件书写方式,主要的卖点是可以在一个 ...

  2. 解决方案 | Claunch 如何更新配置文件

    1.问题 比如我的电脑上有Claunch 3.26版本(绿色版本),但是更新的时候如何保证我的新版本的图标.链接也更新是个问题. 官网说得比较模糊: 2.解决方法 打开复制data数据覆盖到新版本同样 ...

  3. 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题

    首先确保阿里云配置规则和服务器防火墙已开发6379端口 阿里云linux安装完成redis,并且已经运行,检测6379端口,显示redis-server正在监听,如图 修改redis.conf配置 将 ...

  4. PowerShell 使用 Azure

    PowerShell 使用 Azure Azure 提供了三种管理工具: Azure 门户:Azure 门户是一个网站,可在其中创建.配置和更改 Azure 订阅中的资源,该门户是一个图形用户界面 ( ...

  5. RBAC权限模型概述

    RBAC即role-based access control,基于角色的访问控制 通过角色来管理用户对系统资源的访问权限.RBAC是一种权限管理模型,核心思想是分离用户与具体权限,通过角色作为中介来实 ...

  6. Jmeter函数助手29-dateTimeConvert

    dateTimeConvert函数用于将源格式进行目标格式的转换. 格式化时间:传入时间参数,此处格式需要与源时间格式一致 源时间格式:传入参数的时间格式 目标时间格式:想要转换成的格式 1.将源格式 ...

  7. .Net内存管理释放的两种方式

    在.Net中,资源回收主要是指内存管理和非托管资源的释放.分别提供了两种主要的方式进行处理: 垃圾回收(GC) 确认性资源释放(DRD) 官网相关文档的链接:https://learn.microso ...

  8. 某宝上搞来的电子书,经典的量化投资书籍,《Advances in Financial Machine Learning》—— 《金融机器学习的进展》、《量化投资与机器学习》、《金融机器学习研究进展》

    英文书名: <Advances in Financial Machine Learning> 经典的量化投资书籍,某宝上6元搞来的电子版:

  9. 服务器上运行 xvbf 时报错 —— Unknown encoder 'libx264'

    解决方法: 使用conda环境(不具体交代) conda install ffmpeg 成功运行:

  10. baselines算法库common/tile_images.py模块分析

    该模块只有一个函数,全部内容: import numpy as np def tile_images(img_nhwc): """ Tile N images into ...