QAnything 1.4.1 中的文档解析

news2024/11/23 1:18:26

2024年初我们开源了QAnything,一个基于检索增强生成式应用(RAG)的本地知识库问答系统。对于本地知识库,QAnything支持多种格式的文档输入,允许用户上传包括PDF、图片、Word、PowerPoint、Excel、TXT,甚至音频等多种格式的数据。用户可以针对知识库进行互动问答,所有答案均能精准溯源,帮助用户确认问答的准确性。

四个月时间中,QAnything于Github的开源项目已经获得了近万颗星星,吸引了开发者社区的广泛关注,同时我们也收到了大量开发者的反馈。从提升整体问答准确性与用户体验角度出发,结合我们对目前RAG领域发展的理解。我们决定对QAnything SaaS平台中有关文档解析的部分技术进行开源,提升QAnything开源的效果。

在这里插入图片描述

在这篇博客中,我们将分享QAnything中文档解析的升级之路,包括我们对文档解析之于RAG的理解和认知,流程的设计思路,具体功能的实现路径,以及最终带来的问答效果的提升。

为什么是文档解析

随着最近半年中,一些长上下文LLM的出现和发展,很多RAG的经典问题(例如文档中的知识定位,也叫“大海捞针”)可以被很轻易的解决。一时针对RAG是否会被长上下文LLM取代的争论四起,一些悲观者甚至发出了“RAG已死”的言论。从目前的发展现状来看,RAG系统相比长上下文LLM最直接的优势普遍被认为还是计算成本,然而成本上的问题会随着时间的推移慢慢变得不是问题。

这么看来,RAG被淘汰是否只是个时间问题了?我们认为,RAG仍有两点优势是短时间内无法被替代的。其一是可以处理格式多样版式各异的文档数据,包括文档中的格式化区块(例如图片、表格、代码等等),并针对这些逻辑区块进行问答;其二是可以很直接的溯源,帮助用户快速从原文中验证答案的可靠性,从而提升整个问答系统的可信度。而这两点优势的发挥,都需要依赖一个强大的文档解析流程。

恰好,我们在文档解析领域具有一定的技术积累,做出过例如文档翻译和有道速读等成功的功能与产品,也于QAnything SaaS平台成功的应用了这项技术。

面向RAG的文档解析

早期的RAG系统或工具,都使用一套简单直接的解析方案。即直接提取文档中的所有文字信息,简单地根据等间距或文字空白对文字内容进行chunk切分,并将这些chunk转换为向量数据库用于语义检索。这样做对于一些简单场景是可行的,但我们在实践过程中发现了如下一些问题:(1)文字chunk语义的不完整(2)多栏文档阅读顺序错乱(3)非纯文本结构的区域格式错乱或直接丢失。

检索是RAG中相当重要的一个环节,一般是基于向量相似度排序来实现参考源的找回。假如文字chunk也即最小检索颗粒度中包括多条语义无关的内容,或者一些完整的语义被切分到不同的chunk中,都会导致语义向量的表示不准确,无法被特定语义的问题匹配到。因此这里的要求是尽量确保切分出的chunk内语义是完整的,同时尽量确保一些基本的连贯语义被切分到了同一个chunk中。

在这里插入图片描述

对于常见的多栏文档,例如IEEE会议论文,传统的OCR识别只能对文本行进行定位与识别,无法按照阅读顺序对文本行进行排序,无法确定正文与非正文内容。这会导致文本内容的顺序错乱,或者包含页眉页脚等非正文的无关信息,从而严重影响RAG系统的检索和问答效果。因此文档解析应具有确定文档阅读顺序的能力。

一些非纯文本结构的区域,例如图片若直接被丢弃则无法在LLM的回答中被带出,而表格则需要转化为LLM可以理解的结构化格式,才能进行针对性的问答。对于图片我们做成链接的形式存储(表格也可以转换为图片以同样的形式存储),如此便可在LLM的对话中被带出,同时可以在问答过程中更高效的溯源。而表格则需要解析为HTML或Markdown的格式,才可以针对表格内容进行提问。

综上所述,**一个面向RAG的文档解析流程应该具备有一定的版式分析能力,以及能解析表格这类具有特定结构的逻辑区域,我们以此来设计QAnything中文档解析的算法流程。**即先通过版式分析对文档中的逻辑区块进行区分与定位,这样做可以(1)确保纯文本部分只包括正文内容,将其以章节这种自然的形式切分确保其语义完整性,还有机会得到章节标题这类高阶的语义信息(2)得到配图和表格这类需要特殊处理的非纯文本区域的类别和位置(3)得到与阅读顺序一致的区域顺序。其后,我们再对非纯文本区域进行更进一步的处理。

在这里插入图片描述

我们**选择Markdown作为文档解析的统一输出格式,**因其设计初衷与面向RAG的文档解析完全一致:只关注内容而非格式。Markdown可以表示标题、正文、表格、超链接等内容,而更复杂的表格可以由内嵌HTML的形式表示。同时Markdown作为一种简洁易用的轻量级标注语言,充斥在互联网世界的各种数据中,其格式可以被市面主流的开源或商用LLM所理解,可以很好的完成基于表格等格式的对话任务。

具体技术点

版式分析

QAnything选择在切分chunk时,不是采用纯文本切分的方式,而是通过对文档的布局结构进行预测得到文字段落、图片、表格等。在QAnything切分chunk时会考虑文档的布局结构,同一语义的文字片段可以被切分到相同的chunk中,对于RAG流程中相关内容的准确召回有着极大的帮助。

在这里插入图片描述

具体的在QAnything中,我们沿用了目标识别的思路来进行文档布局分析,依托在有道文档翻译场景积累的海量数据,训练了一个多场景、高精度的布局分析模型,对文档的布局进行识别。在QAnything中,我们同时引入了一套版面恢复流程,融合版式分析的结果和OCR识别结果,将文档转换成markdown的形式进行输出,方便后续的chunk切分过程。

表格解析

QAnything中,我们发现用户的问答记录集中在对文档表格数据的提问上。为了提高问答系统对表格数据的理解和响应准确性,我们采用了LORE表结构识别模型。LORE模型的核心是逻辑位置回归网络,它将表格单元格的空间位置和逻辑位置结合在一起进行端到端建模和预测。LORE使用基于CNN的关键点分割网络提取视觉特征,通过两个回归头分别预测单元格的空间位置和逻辑位置。最终,LORE可以精确还原出整个表格的行列结构,并输出机器可解析的表示。

在这里插入图片描述

采用了表格解析方案后,QAnything的表格数据问答准确率得到了显著提升,特别是对于复杂的跨行跨列问题,极大增强了系统的实用性。

检索与问答的提升

我们以有道数字人白皮书和Qanything白皮书两个PDF文档为例,分别按照常规PDF解析方式和面向RAG的方式进行解析,最终进行问答对比,以比较两种解析方式的优劣。其中常规PDF解析将PDF文档中的文字直接进行提取,以固定窗口大小切分文字chunk;面向RAG的解析方式利用文档解析后生成的Markdown文档,按照语义章节对文档进行切分。

更新文档解析逻辑后的QAnything优势比较如下:

优势1:语义更加完整更加精准的召回,以得到更准确更加有条理的回答
Q1:QAnything的产品优势有哪些?

旧版回答:

Qanything的产品优势包括成本优势、效率提升、灵活应用、AI赋能和易用至上。具体来说,Qanything利用先进的数字技术,采用高效的数据采集与合成技术,能够快速打造出精准、神态灵动的虚拟形象,从而实现经济高效的个性化虚拟主播创建。同时,Qanything简化了创作流程,用户无需专业技术背景即可快速掌握,支持批量生产内容,显著提升了更新速度和工作效率。用户可以根据具体需要自行选择合成的片段、精确控制动作的起始位置以及插放节奏,赋予了用户充分的创作自主权,灵活适应不同场景的不同需求。此外,Qanything内置的大模型使得自动撰写播报文案成为可能,通过对大数据的学习和分析,能够即时生成各种热点话题的高质量播报文稿。最后,Qanything配备一套友好易用的视频剪辑工具,专为非专业用户设计,将原本复杂的后期处理过程变得极度简化,用户能够轻松完成整套视频制作流程。

新版回答:

QAnything问答系统的优势包括以下几点:
1、支持任意格式的本地知识库: QAnything可以处理多种格式的数据,包括PDF、Word、PPT、TXT、图片、网页链接、数据库等,使用户能够方便地管理和使用各种类型的知识。
2、基于行业专属大模型的自然语言处理技术:QAnything利用OCR技术对各种类型的数据进行结构化处理,并调用大模型的自然语言处理能力,实现对数据的智能化分析和理解,包括实体识别、关系提取、语义分析、总结等。
3、多种功能支持:QAnything提供文件管理、模型训练、模型验证、多轮问答、下载等多种功能,帮助用户实现准确、快速、靠谱的业务知识问答体验。
4、提高信息获取效率:相比以前的FAQ、ES等模式,文档问答技术进一步提高了处理效率和准确性,让用户更快速、更方便地获取所需信息。

总之,QAnything问答系统通过支持任意格式的本地知识库、基于行业专属大模型的自然语言处理技术、多种功能支持和提高信息获取效率等优势,为企业级用户提供了准确、快速、靠谱的业务知识问答体验。

优势2:可以针对表格进行问答,可以对表格中的内容进行精准定位
Q2:数字人部署8G内存可以吗?

(注:参考文档中有如下部分内容

在这里插入图片描述

旧版回答:
根据参考信息中的配置需求,有道数字人的推荐硬件配置环境中没有明确提及内存要求。因此,无法确定数字人部署是否可以使用8GB内存。建议参考有关文档或联系有道数字人的官方支持团队以获取更准确的信息。

新版回答:
根据参考信息中的配置需求,推荐的内存模块为16G+,所以8G内存可能不够满足数字人部署的要求。

Q3:embedding模型中bce-embedding和bce-rerank一起用的话,各项指标是多少?

        (注:参考文档中有如下部分内容

在这里插入图片描述

旧版回答:
bce-embedding和bce-rerank是embedding模型中的两个组件。具体的指标取决于具体的应用场景和任务。一般来说, bce-embedding用于生成语义向量,可以通过先进的embedding方法 来提取文本的深层含义,从而提高搜索结果的相关性和问答匹配度。bce-rerank则用于对搜索结果进行重排序,以进一步提高搜索的准确性和精度。
关于具体的指标,可以根据实际情况进行评估和衡量。常见的指标包括准确率、召回率、F1值等。另外,还可以根据具体任务的需求,如翻译、摘要和问答等,来评估模型的性能和效果。
总之,bce-embedding和bce-rerank的组合可以提高embedding模型在语义搜索和问答系统中的效果,具体的指标取决于具体的应用场景和任务需求。

新版回答:
根据参考信息中的数据,当使用bce-embedding时,各项指标如下:

  • WithoutReranker: 85.91/62.36
  • CohereRerank: 91.25/69.38
  • bge-reranker-large: 91.80/71.13
  • bce-reranker-base_v1: 93.46/77.02
    这些指标表示了使用bce-embedding和bce-rerank模型时的命中率(hit rate)和平均倒排(mean reciprocal rank)的表现为93.46/77.02 。

优势3:可以解析文档中的配图这类非文本信息,并在回答中给出

Q4:交互型数字人的特点是什么?

新版回答:

交互型数字人的产品特点包括:

  1. 多终端支持:支持多种终端设备连接,如PC、平板、手机、大屏幕等,实现线上线下一体化解决方式。
    在这里插入图片描述

在这里插入图片描述

  1. 支持离线模式:可以在线下终端进行批量离线部署,无需考虑宽带、GPU等硬件要求。
  2. 接入AI大脑:支持接入AI问答大模型Anything和子曰大模型,能够从多样化的知识源中提取精准答案,实现业务知识精准回答。
  3. 低运营成本:数字人交互场景即插即用,实施周期短,涉及的审批部门少,自带问答大模型,场景落地快。
    总之,交互型数字人具有多终端支持、离线模式、接入AI大脑和低运营成本等特点。
    在这里插入图片描述

QAnything 开源版已经升级到了1.4.1:

https://github.com/netease-youdao/QAnything/releases/tag/v1.4.1

在这里插入图片描述

访问 https://qanything.ai 可以直接体验商业版qanything.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

默认路由实现两个网段互通实验

默认路由实现两个网段互通实验 **默认路由:**是一种特殊的静态路由,当路由表中与数据包目的地址没有匹配的表项时,数据包将根据默认路由条目进行转发。默认路由在某些时候是非常有效的,例如在末梢网络中,默认路由可以…

牛客NC334 字典序第K小【困难 10叉树 Java/Go/PHP/C++】,力扣 440. 字典序的第K小数字

题目 题目链接: https://www.nowcoder.com/practice/670c2bda374241d7ae06ade60de33e8b https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/description/ 本答案核心 10叉树, 数学规律Java代码 import java.util.*;public class Solution {…

【Android开发】Android请求出现网络请求失败,HTTP请求,安全网络通信与权限管理

额外权限 要有这个权限&#xff1a; <uses-permission android:name"android.permission.INTERNET" />HTTP安全考虑 从 Android 9&#xff08;API 级别 28&#xff09;开始&#xff0c;默认情况下不支持通过 HTTP 访问网络&#xff0c;而要求使用 HTTPS。这…

微服务-系统架构

微服务&#xff1a; 系统架构的演变 单一应用架构 早期的互联网应用架构&#xff0c;大量应用服务 功能 集中在一个包里&#xff0c;把大量的应用打包为一个jar包&#xff0c;部署在一台服务器&#xff0c;例如tomcat上部署Javaweb项目 缺点:耦合度高&#xff0c;一台服务器…

科林Linux5_线程

一、线程基础 进程是操作系统经典的执行任务的生产力。 进程是最小的资源分配单位&#xff0c;进程的内存开销较大&#xff0c;在内存资源不变的情况下&#xff0c;提高进程的执行能力&#xff08;生产力&#xff09; 线程寄存在进程中&#xff0c;与进程共享资源&#xff0…

Leetcode 876. 链表的中间结点

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点&#xff0c…

2024年【N1叉车司机】免费试题及N1叉车司机模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N1叉车司机免费试题考前必练&#xff01;安全生产模拟考试一点通每个月更新N1叉车司机模拟试题题目及答案&#xff01;多做几遍&#xff0c;其实通过N1叉车司机模拟考试题库很简单。 1、【多选题】《中华人民共和国特…

Spring AMQP 随笔 8 Retry MessageRecoverer ErrorHandler

0. 列位&#xff0c;响应式布局好麻烦的 … 有意思的&#xff0c;chrome devtool 在调试响应式的分辨率的时候&#xff0c;比如说在 宽度远远大于 768 的时候&#xff0c;按说浏览器也知道大概率是 web端方式打开&#xff0c;样式也是如此渲染&#xff0c;但一些事件(没有鼠标…

题解:P9535 [YsOI2023] 连通图计数

题意 求&#xff1a;在所有 n n n 个点 m m m 条边的无向简单连通图中&#xff0c;满足把第 i i i 个点删去后图被分为 a i a_i ai​​ 个连通块。 n − 1 ≤ m ≤ n 1 n-1\le m\le n1 n−1≤m≤n1。 思路 将 m n − 1 , m n , m n 1 mn-1,mn,mn1 mn−1,mn,mn1​ 三…

二叉树——堆详解

目录 前言&#xff1a; 一、堆的结构 二、向上调整和向下调整 2.1 向上调整 2.2 向下调整 2.3 向上调整和向下调整时间复杂度比较 三、堆的实现 3.1 堆的初始化 3.2 堆的销毁 3.3 堆的插入 3.4堆的删除 3.5 取堆顶元素 3.6 对堆判空 四、堆排序 五、TOP-K 问题 六、代码总…

电商公司需不需要建数字档案室呢

建立数字档案室对于电商公司来说是非常有必要的。以下是一些原因&#xff1a; 1. 空间节约&#xff1a;数字档案室可以将纸质文件转化为电子文件&#xff0c;节省了大量存储空间。这对于电商公司来说尤为重要&#xff0c;因为他们通常会有大量的订单、客户信息和供应商合同等文…

Python01:初入Python(Mac)

Python环境准备 下载Python&#xff1a;官网https://www.python.org/ 下载PyCharm&#xff1a;官网https://www.jetbrains.com/pycharm/download Python与PyCharm的关系 Python&#xff08;解释器&#xff09;&#xff1a;机器语言—>翻译人员–>翻译成电脑能读懂的 PyC…

DatePicker日期选择框(antd-design组件库)简单使用

1.DatePicker日期选择框 输入或选择日期的控件。 2.何时使用 当用户需要输入一个日期&#xff0c;可以点击标准输入框&#xff0c;弹出日期面板进行选择。 组件代码来自&#xff1a; 日期选择框 DatePicker - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:…

2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针

import java.util.Scanner;public class Main {static Scanner scnew Scanner(System.in);public static void main(String[] args) {int nsc.nextInt();//数组长度int tsc.nextInt();//操作次数int arr[]new int[n];char arr1[] new char[t];int arr2[] new int[t];int vis…

金融信贷风控系统设计模式应用之模版方法

背景介绍 风控系统每种场景 如个人消费贷 都需要跑很多规则 规则1 申请人姓名身份证号实名验证规则2 申请人手机号码实名认证规则3 银行卡预留手机号码实名认证规则4 申请人银行卡预留手机号码在网状态检验规则5 申请人银行借记卡有效性核验规则6 户籍地址与身份证号归属地比…

后量子密码解决方案

什么是后量子密码学 (PQC)&#xff0c;为什么准备工作如此重要? 量子计算正在迅速发展;用不了多久&#xff0c;量子网络攻击就会成为可能。量子网络攻击将能够在几分钟内瘫痪大型网络。我们今天赖以保护我们的连接和交易的一切都将受到量子计算机的威胁&#xff0c;危及所有密…

Django中model中的抽象类

Django中model中的抽象类 当我们在app中models.py文件中定义model表并执行python manage.py makemigrations和python manage.py migrate后&#xff0c;Django就会在数据库中创建表 但是我们也可以对其默认配置修改&#xff0c;定义model类但是不在数据库中创建 from django.…

Behind the Code:Polkadot 如何重塑 Web3 未来

2024 年 5 月 17 日 Polkadot 生态 Behind the Code 第二季第一集 《创造 Web3 的未来》正式上线。第一集深入探讨了 Polkadot 和 Web3 技术在解决数字身份、数据所有权和去中心化治理方面的巨大潜力。 &#x1f50d; 查看完整视频&#xff1a; https://youtu.be/_gP-M5nUidc?…

基于Python对评论进行情感分析可视化

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 在当今数字化时代&#xff0c;用户生成内容&#xff08;UGC&#xff09;如在线评论、社交媒体…

需求响应+配网重构!含高比例新能源和用户需求响应的配电网重构程序代码!

前言 配电网重构作为配电网优化运行的手段之一&#xff0c;通过改变配电网的拓扑结构&#xff0c;以达到降低网损、改善电压分布、提升系统的可靠性与经济性等目的。近年来&#xff0c;随着全球能源消耗快速增长以及环境的日趋恶化&#xff0c;清洁能源飞速发展&#xff0c;分…