今天是2025年01月07日,星期二,北京,天气晴。
今天是腊八节。
最近观察到一个很奇怪的现象,就是越来越多人看不懂公众号文章,但并不会去翻开原文去做进一步的查阅,这其实很要不得的。
这也引出了老刘想跟大家说的话,大家一定要重视,不要总看公众号,看公众号爽文没意义,一定要看论文原文,看blog原文,看github原文,公众号的意义是基本过滤+索引指引,不是知识学习,这个要记清楚,我们想要的的细节和答案,都在原论文,原博客,原代码里。老刘在写文章时,都会注明技术点或者论文出处,这个其实是一个基本功能,那就是索引。
”基本过滤+索引指引“是公众号为数不多的知识价值(所以也呼吁大家写的时候,能够有这种意识,增加出处),前者可以作为一个基本概要,供不同的人,根据自身的兴趣点进行过滤,哪些应该进一步跟进,那些应该直接跳过。后者则给出一个指引,这样能够作为一个纽带,给看文章的人找到对应的链接。而除此之外,公众号文章剩余的价值,其实只是情绪价值,是一种娱乐属性。泛泛而谈的这种,对于很深入的了解一个技术点,或者体系化的知识,公众号并不是一个很好的的来源,反而会加剧盲区化。
今天,我们继续来看RAG,看看RAG的噪声问题,并看OCR的问题对于RAG的影响。
专题化,体系化,会有更多深度思考。大家一起加油。
一、从RAG的噪声说起
RAG总会遇到很多的噪声问题,而噪声的标准其实并不一致,例如,InfoRAG(《Unsupervised Information Refinement Training of Large Language Models for Retrieval-Augmented Generation》, https://arxiv.org/pdf/2402.18150)将检索文本中的这种噪声描述为错误和不相关内容,并揭示了其对RAG性能的影响。
RAAT(《Enhancing noise robustness of retrieval-augmented language models with adaptive adver sarial training》,https://arxiv.org/pdf/2405.20978)进一步将噪声分为相关噪声、反事实噪声和不相关内容类型。
但是除了这方面,其实还有数据生产阶段的产生的噪声,这个是一手噪声。放眼目前的方案,大多是逃不出ocr的范畴的。
我们顺便再来回顾下当前OCR的一些方案,可以分为三类:基于pipeline的系统、端到端模型以及使用VLMs进行OCR。其中:基于pipeline的系统将OCR分解为多个子任务,如布局检测、文本、公式和表格识别,从而实现细粒度的数据提取。端到端模型以文档图像为输入,并以端到端的方式输出整体识别结果。
二、现有OCR这块的效果对RAG的影响是如何的?
这块做以下还是有意义的, 例如最近的工作《OCR Hinders RAG: Evaluating the Cascading Impact of OCR on Retrieval-Augmented Generation》(https://arxiv.org/pdf/2412.02592,https://github.com/opendatalab/OHR-Bench),里面提到几个数据集,对于我们做文档方面的工作还是有些意义的。
例如,可以做ocr现有不同组件的评估,包括来自各个领域的4000多个非结构化PDF页面,包括教科书、法律、金融、报纸、手册和学术界以及来自多模态文档元素的问答数据集。每个PDF页面都配备了经过人工验证的真实结构化数据;
又如,可以用来评估引入语义噪声和格式噪声,并根据现实世界的OCR误差引入了轻度、中度和重度扰动后,现有rag系统的影响面。就如该工作所说的,有端到端的方式,也有pipeline的方式,但即便是最好的OCR解决方案,与结构化真实数据相比,至少也表现出**7.5%**的性能差距。此外,仅输入图像无法达到使用OCR文本的性能,但通过简单结合这两种输入,VLM可以将性能提高多达24.5%,并接近真实文本基线的性能,表明其在RAG系统中应用VLMs具有巨大潜力。
可以关注下以下几个点:
一个是数据集的构建过程,汇编了一个代表六种常见RAG应用情景的PDF文档集:教科书、法律、金融、报纸、手册和学术论文。
一个是OCR噪声数据的生成。两种主要的OCR噪声类型,语义噪声和格式噪声。
对于语义噪声,语义噪声源自OCR预测错误,包括拼写错误、误识别的公式符号,以及表格中的内容和结构错误。这种类型的噪声影响了解析内容的语义,使检索器和大模型偏离整合与用户查询相关的正确信息。
由于其出现不规则通过提供示例并采用GPT-4o来模仿它来引入这种类型的噪声。具体来说,从当前OCR结果中收集真实示例。根据它们与真实值的编辑距离,将它们分为三类,并提示GPT-4o基于这些示例在三个层级上修改真实值的结构化数据。扰动涵盖所有文档元素,包括纯文本、表格和公式。
如图3所示,对表格的轻微扰动包括打字错误,而中等扰动通过添加或错位行和列来破坏结构,这使得检索和大模型的认知变得更加复杂。严重扰动产生带有控制字符缺失的表格,这些表格无法正确渲染,模拟OCR识别故障。对于纯文本和公式,引入不同比例的拼写错误、视觉上相似的字符以及截断,以生成三种不同程度的噪声。
对于格式噪声,指的是用于样式渲染的格式命令,例如用于美化公式的空白字符,以及用于提高可读性的粗体和斜体命令,还有像Markdown和LaTeX表格这样的结构化数据的不同的表示方法。尽管与语义无关,这种噪声却使得检索器和大模型的信息整合变得复杂。
通过回顾当前OCR输出中的格式噪声情况,并制定规则通过添加、移除和格式转换策略来复制这些格式噪声。对于纯文本,扰动从标记级别的变化(例如,粗体、斜体和下划线)到段落级别的调整(例如,标题和阅读顺序的打乱)。在公式和表格中,关注像公式中的“\quad”和表格中的“\hline”这样的多余元素,以及等效符号如“\mathbf{}”、“\boldsymbol{}”和“\mathbb{}b{}^{\prime}”。通过改变真实结构化数据中这些变化的比例,创建了三组具有不同程度格式噪声的扰动数据。
一个是评估结论,如下表所示:
有三个结论值得看看:
首先,包括拼写错误、公式符号误识以及表格内容和结构错误这类的语义噪声会对检索和生成阶段产生显著影响,**导致大多数检索器和LLM的性能下降近50%**。例如,表格相关问题的F1值下降了50%,表明正确解析表格结构的重要性。
其次,包括样式渲染命令(如空白字符、粗体和斜体)以及不同格式的结构化数据(如Markdown和LaTeX表格)的格式噪声主要影响涉及多模态元素的查询,BM25和Qwen2-7B在检索和生成阶段的性能分别下降了16.8%和19.4%。例如,使用HTML表格进行检索时,BM25的性能显著下降。
此外就是,markdown 表示表格,在这里面看来,其实是最合适的,html是最差的;markdown>latex>html。
最后,单独使用图像输入的性能仍然落后于使用OCR文本输入。然而,将图像和OCR文本结合使用可以显著提高性能。GPT-4o在使用图像和OCR文本结合输入时的F1值提高了24.5%,接近基准文本输入的性能。
总结
本文主要回顾了RAG中OCR的噪声对整体RAG 效果的影响分析,其中对数据的构建、噪声的设定以及几个评测结论,都很有意思,推荐大家跟随原文进行阅读,会有更多收获。
参考文献
1、https://arxiv.org/pdf/2402.18150
2、https://arxiv.org/pdf/2405.20978
3、https://arxiv.org/pdf/2412.02592
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入