首页 > 其他分享 >TextIn文档树引擎,助力RAG知识库问答检索召回能力提升

TextIn文档树引擎,助力RAG知识库问答检索召回能力提升

时间:2024-08-13 11:05:34浏览次数:8  
标签:段落 RAG TextIn 知识库 标题 切分 文档 解析

​ TextIn团队的文档解析测评工具Markdown Tester在Github发布后,我们陆续与大家探讨了目前业内对PDF解析工作的评判标准与我们各项测评指标的设计原理,包括段落、表格、公式、阅读顺序等维度。 今天,我们将介绍另一项重要指标,也是业内面对的一项普遍性难点:标题识别,以及它如何影响数据清洗与RAG系统开发。   我们依旧从指标设计出发 Tester试用链接:https://github.com/intsig/markdown_tester         此前,我们在讨论段落检测维度的文章《所见即所得,赋能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,即可申领! 关于测评工具、产品或需求,都可以找我们沟通。我们欢迎所有探讨和交流! ​

标签:段落,RAG,TextIn,知识库,标题,切分,文档,解析
From: https://www.cnblogs.com/intsig/p/18356464

相关文章

  • 5 大场景上手通义灵码企业知识库 RAG
    大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代码提交信息(CommitMes......
  • 5 大场景上手通义灵码企业知识库 RAG
    大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代码提交信息(CommitMes......
  • RAG知识库之构建知识库图谱
          前面几篇文章谈了多种针对RAG的优化如多表示索引(Multi-representationindexing)、Raptor等但其都是存储在向量库中的,这里将介绍一种新的存储模式,图数据库,适合存储数据高度相关的数据。其存储实体与实体间的关系,存储着丰富的关系类型数据,能给RAG知识库带来更精准的上下......
  • 一文搞懂RAG:从理论到实践
    一、引言在人工智能和自然语言处理领域,RAG(Retrieval-AugmentedGeneration)作为一种新兴的模型架构,正在引起越来越多的关注。RAG结合了信息检索与文本生成的优势,能够在生成文本时利用外部知识库,提高生成内容的准确性和丰富性。本文将深入探讨RAG的原理、架构以及在实际应用中的......
  • 使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
    使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)使用OpenAI模型体验GraphRag——以《边城》为例在使用SiliconCloud之前,先使用OpenAI的模型看看GraphRag的效果。GraphRAG是一种基于AI的内容理解和搜索能力,利用LLMs,解析数据以创建知识图谱,并对用户......
  • bugbountyhunter scope BARKER:第十滴血 存储型 Storage Cross-Site Scripting XSS 添
    登录后点击MemberDogs,Addyourdog头像处可以上传SVG图片检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker......
  • bugbountyhunter scope BARKER:第九滴血 存储型 Storage Cross-Site Scripting XSS SVG
    登录后来到Myprofile页面,页面里存在一个EditProfile头像处可以上传SVG图片检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2......
  • OpenWebUI + Ollma 构建本地AI知识库
    本机环境:rocky_linux9.4,10G8核,100G磁盘部署的实验 安装Docker#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/......
  • bugbountyhunter scope BARKER:第八滴血 存储型 Storage Cross-Site Scripting XSS SVG
    登录后来到home页面,留言中存在一个Attachimage检查xsspayload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSSInjection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker-social.com......
  • 使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
    使用OpenAI模型体验GraphRag——以《边城》为例在使用SiliconCloud之前,先使用OpenAI的模型看看GraphRag的效果。GraphRAG是一种基于AI的内容理解和搜索能力,利用LLMs,解析数据以创建知识图谱,并对用户提供的私有数据集回答用户问题的方法。GitHub地址:https://github.com/microsoft......