TextIn 优化RAG功能必备 一款低劣的文档解析神器
前言
在私有畛域常识问答和企业常识治理畛域,联合检索增强型生成模型(Retrieval-Augmented Generation, RAG)大模型(Large Language Model, LLM)已成为一种趋向。但是,在RAG系统的文档预处置阶段和检索阶段,经常碰到三个关键疑问。
本文将先讨论下文档解析的准确性对RAG系统的影响;而后引见下智能文档解析关键技术,并引见闭源的通用文档解析服务——,还引见了一款开源的文档解析品质评测工具- Markdown Tester ,最后引见下合合消息开发的向量表征模型- acge_text_embedding 。
RAG普通流程
一、文档解析的准确性对RAG系统的影响
在RAG的预处置阶段,文档解析的准确性是至关关键的。假设文档解析不准确,这将间接影响到后续的检索和生成阶段,造成整个RAG系统的功能降低。以下是文档解析不准确或许带来的详细疑问及其影响:
因此,关于C端文档问答的RAG系统运行产品,迫切的须要对文档启动精准解析。现实状况下,文档解析器应具有以下关键特色:
二、文档解析的技术路途
关于便捷的文档解析,langchain 和 llama_index 中集成了各种基于规定引擎的解析工具(如:解析pdf的pdfplumber,pyPDF2等)或许便捷的开源的ocr工具(如:paddleocr),能够对多种文件类型启动解析。
解析工具常发生的疑问
关于复杂的文档解析,常 基于深度学习的方法 启动解析,在上篇文章中(《 【文档智能 & RAG】RAG增强之路:增强PDF解析并结构化技术路途打算及思绪 》)也解说了文档解析的一些关键的开源技术门路及打算。
文档内容解析门路
智能文档(文本内容)技术路途
但是,关于通用文档解析而言还存在着一些应战:
2.1 版式剖析
版式剖析
版面剖析指的是对文档启动区域划分,经过bounding box定位其中的关键区域,如:文字、题目、表格、图片等。
版式剖析的好处 :
1.经过少量标注的数据,准确的划分出文档关键区域。如:
2.能对复杂的版式启动区块识别
复杂版式
版式剖析的缺陷 ,目前基本都是经过目的检测的方式启动版式剖析,因此其应战也是随同着特定场景的标注数据,尤其是通用场景的版式剖析,难度渺小。
2.2 表格识别与解析
表格识别与解析的难点普通如下:
2.3 公式识别与解析
公式识别类型
数学公式识别与解析是一个技术应战性很高的畛域,关键难点包括:
2.4 阅读顺序
由于文档规划的复杂性,包括多栏、嵌套表格、不规定的文本框等,这参与了阅读顺序复原的难度。往期中也引见了阅读顺序相关内容(《 【文档智能】合乎人类阅读顺序的文档模型-LayoutReader及非官网权重开源 》)
多列规划阅读顺序复原
小结 :以上文档解析的每个环节无论是数据标注、模型训练、试验,都须要投入渺小的老本和精细化的优化,在工业落地场景, 在保障解析成果的同时,还须要关注文档的解析速度 。尤其是OCR环节,文字密集型文档的解析速度影响特意大。
三、TextIn
针对以上痛点,笔者深度体验了一下合合消息自研文档解析技术-。该技术深度融合了文字识别(OCR)、计算机图形图像技术以及智能图像处置引擎,使得纸质文档或图片中的文字消息 能够迅速、精准地转化为计算机易于处置的文本格局 。
TextIn文档智能关键技术如下:
3.1 版面剖析关键技术 Layout-engine
3.2 文档树提取关键技术 Catalog-engine
3.3 解析体验
测试样例:
TextIn解析输入:
TextIn解析结果
可以看到,TextIn将pdf文件解析成markdown格局,并将题目、段落、行内公式及行间公式准确解析。
值得关注的是,题目,段落的准确解析、并依照阅读顺序启动输入,这是生成文档目录及文档树的基础。
极速上手代码:
import requestsimport jsondef get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()class TextinOcr(object):def __init__(self, app_id, app_secret):self._app_id = app_idself._app_secret = app_secretself.host = 'https://api.textin.com'def recognize_pdf2md(self, image, options):"""pdf to markdown:param options: request params:param image: file bytes:return: responseoptions = {'pdf_pwd': None,'dpi': 72,'page_start': 0,'page_count': 24,'apply_document_tree': 0,'markdown_details': 0,'table_flavor': 'md','get_image': 'none','parse_mode': 'auto',}"""url = self.host + '/ai/service/v1/pdf_to_markdown'headers = {'x-ti-app-id': self._app_id,'x-ti-secret-code': self._app_secret}return requests.post(url,>
3.4 一个解析引擎速度的关键性
目前,基于多模态大模型技术的极速开展,文档解析可以经过多模态大模型启动处置,如:gpt-4o等,但是,基于多模态大模型的处置打算,老本大、十分耗时、容易发生幻觉疑问,尤其是表格的解析,数值上的幻觉疑问是劫难性的。
笔者在体验TextIn时,觉得解析速度十分快,这关于RAG系统的增益可以从离线和在线两个方面开展讲:
2. 在线形式
4、文档解析评测工具-Markdown Tester
在文档解析中,有了解析工具后, 关于开发者 ,针对文档解析的解析成果,须要一款比拟好用的评估工具来客观对解析成果启动评估;关于 购置解析服务的c端客户 ,雷同也须要评估文档解析服务的成果,在自建数据集上先评测一下,而后有针对性的启动解析服务选购。因此,上方引见一下 Markdown Tester :
该评测工具用于 评估markdown文档相似性,从段落、题目、表格和公式四个维度启动评估 ,相关评估目的的定义如下表:
段落、题目、表格和公式四个维度定义
关于RAG中文档解析,必定强调 为什么经常使用markdown 启动示意:Markdown格局因其繁复性和易于解析的特点,被宽泛以为是LLM(大型言语模型)友好的文档格局。Markdown经过明白的标志语法, 协助模型更好地理解文档结构和内容 ,从而 提高消息提取的准确性和效率 。特意在存在 少量公式、表格 的学术论文场景下,Markdown或许是更适宜的格局选用。这种格局选用的要素关键包括:
4.1 经常使用方法
git clonemarkdown_tester./install.sh
dataset/├── pred/│├── gpt-4o/│├── vendor_A/│├── vendor_B/│├── ...├── gt/
python run_test.py --pred_path path_to_pred_md--gt_path path_to_gt_md
4.2 运转成果
对比表格
对比雷达图-可视化
笔者在评测环节中发现,自研模型关于识别准确率较高,但召回率普遍不行。
五、text embedding在RAG环节的作用
由于LLM固有的疑问,如:LLM的常识不是实时降级的;LLM不可回答私域常识疑问。 由于,LLM的专长在于生成和了解复杂的人造言语查问。嵌入模型(比如Embedding)的专长在于将文本映射到高维空间中,以便启动相似性比拟;生成可用于高效检索的密集向量。
因此,目前干流的成功方式都是经过RAG的方式对上述疑问启动处置。text embedding在RAG中充任关键的角色,关键有以下几个作用:
上方引见一个成果比拟好的文本向量嵌入的表征模型- acge_text_embedding
5.1 acge_text_embedding
acge_text_embedding是由合合消息研发的向量表征模型,技术架构上,acge_text_embedding驳回了 俄罗斯套娃示意学习 (Matryoshka Representation Learning,MRL)编码 不同粒度 的消息,并让一个编码能够顺应不同计算资源的下游义务。MRL的目的是学习许多个小于等于的前维表征,即总维度的前维。在训练时,MRL依据指定维度的向量来计算多个。
一种比拟高效的做法是将每个投射头看成是一个大投射头的的一局部,即,这种做法在大输入空间时尤其关键,称之为Efficient Matryoshka Representation Learning (MRL–E)。
因此,该示意学习框架的 外围现实是学习不同粒度的消息 ,准许一个嵌入向量在坚持准确性和丰盛性的同时,顺应不同计算资源的需求,并可以无缝地顺应大少数示意学习框架,并且可以裁减到多种规范计算机视觉和人造言语处置义务。
acge_text_embedding 经过运行多模态示意学习(MRL)技术,能够成功一次性训练环节,从而取得丰盛多样的表征维度。特意值得一提的是,自顺应粗粒度到细粒度示意(acge)模型,它驳回了一种档次化的方法,从微观到微观逐渐粗浅表征的深度和精度。这种方法不只在推理和部署阶段无需额外老本,还提供了一种灵敏且高效的表征方式。在详细的通常运行中,为了更好地顺应不同义务的需求,acge模型驳回了战略学习的训练方法。这种方法经过针对性地调整学习战略,清楚优化了模型在检索、聚类和排序等义务上的功能体现。此外,模型还引入了继续学习的训练机制,有效处置了神经网络在学习环节中或许发生的劫难性忘记疑问。这使得模型能够在训练迭代中到达愈加低劣的收敛形态,为继续优化和优化模型功能奠定了基础。
5.2 acge_text_embedding经常使用
from sentence_transformers import SentenceTransformersentences = ["数据1", "数据2"]model = SentenceTransformer('acge_text_embedding') # 交流成你下载的权重地址print(model.max_seq_length)embeddings_1 = model.encode(sentences, normalize_embeddings=True)embeddings_2 = model.encode(sentences, normalize_embeddings=True)similarity = embeddings_1 @ embeddings_2.Tprint(similarity)
from sklearn.preprocessing import normalizefrom sentence_transformers import SentenceTransformersentences = ["数据1", "数据2"]model = SentenceTransformer('acge_text_embedding') # 交流成你下载的权重地址embeddings = model.encode(sentences, normalize_embeddings=False)matryoshka_dim = 1024embeddings = embeddings[..., :matryoshka_dim]# Shrink the embedding dimensionsembeddings = normalize(embeddings, norm="l2", axis=1)print(embeddings.shape)# => (2, 1024)
5.3 acge_text_embedding好处总结
功能好处 :
框架好处 :
总结
本文关键讨论了检索增强型生成模型(RAG)在私有畛域常识问答和企业常识治理中的运行,重点剖析了文档解析的准确性对RAG系统功能的影响,引见了智能文档解析的关键技术,并引见了合合消息自研的文档解析服务TextIn,以及开源的文档解析品质评测工具Markdown Tester。此外,还引见了合合消息开发的文本向量嵌入模型acge_text_embedding,强调了其在RAG系统中的作用和好处。全体而言,文档解析的准确性、速度和品质对RAG系统的功能至关关键,而TextIn和acge_text_embedding等工具能够清楚优化文档解析的成果和效率。
参考文献
原文链接: