赞
踩
企业中有很多的知识并不总是简单的文字形态,很多是以半结构化与非结构化文档的形式存在,最常见的就是图、文、表混排的PDF文档。针对复杂PDF文档的解析、分割与向量化是常见的一种复杂知识处理需求,且在实际应用中达到的效果往往不尽如人意(有少量原因是一些文档自身排版与格式的过度随意与不规范)。
处理复杂多模态文档一般需要借助到第三方的PDF解析工具、多模态大模型、关联检索等技术。整体上的思路如下:
以最常见的复杂PDF处理为例:
1. 借助解析工具从PDF中分类提取Text、Table、Image不同形态内容;提取的Table内容一般用Markdown文本等表示,Image则提取成本地或网络文件。
2. 对不同形态的提取内容采用不同的索引与检索方法处理:
【文本】:按照普通文本知识相同的方法做向量嵌入与检索。
【表格】:直接对Table的文本内容做嵌入通常检索效果欠佳,可以借助大模型(LLM)生成表格内容描述与摘要用于嵌入与检索(比如下图)。这有利于提高检索精准度及LLM对表格内容的理解。在检索阶段,需要关联检索出原始的Table内容用于后续生成。
* 将纯文字信息图片利用OCR识别转化成文本信息。在识别成纯文本后,按照普通的文字信息作嵌入与检索即可。
* 理解并生成图片的摘要与总结信息用于嵌入与检索。但是在检索后需要关联检索出原始图片用于后续生成
3. 在查询阶段,将上述检索出来的关联知识输入大模型进行生成,注意如果需要输入原始图片,则需要借助多模态模型进行响应生成。
上述流程中主要涉及到三种关键技术:
主要针对半结构化/结构化的PDF文档解析与提取,考虑的工具为:
LlamaParse:这是著名的LLM开发框架LlamaIndex提供的在线文档解析服务,主要提供复杂PDF文档的在线解析与提取,其最大优势是与LlamaIndex有极好的集成,比如可以借助模型在提取时自动生成表格的摘要信息。缺点是必须在线使用。
Open-Parse:一个相对轻量级的复杂文档分块与提取的开源库。支持语义分块与OCR,简单易用,且支持与LlamaIndex框架的集成,比如将提取的文档直接转化为LlamaIndex中的Node。
此外,国内开源的RAG引擎平台RAGFlow内置了很强的深度文档理解能力,(但未开放文档解析的独立API),如果你需要构建基于深度文档解析的在线RAG引擎,可以考虑尝试。
多模态视觉模型可以借助在线的智谱GLM-4v,阿里qwen-vl,Openai的GPT-4o,或部署开源的Llava模型等。如果希望提取图像中的文本信息(如文字扫描图像),则需要结合OCR技术:
一种是借助具备OCR能力的多模态模型比如qwen-vl
一种是借助专业的OCR模型与工具库。比如上面的unstructured、ominiparse都可以在加载语言的模块后具备OCR识别能力
在将多模态内容输入给LLM生成时,往往需要借助关联检索从向量检索出来的Chunk关联到原始的表格内容或者图片,这种关联检索在常见的两种框架中都有支持:
LangChain:可借助多向量存储与检索(MultiVectorRetriever)来实现,将存储向量的VectorStore与图片存储做关键存储与检索
LlamaIndex:可借助构建递归检索器(RecursiveRetriever)来实现,将存储文本向量的Node指向存储原始表格内容或图片的Node
查询重写(也可以称作查询转换,或者查询分析等),已经成为大模型应用中一种很重要的工作环节。有时,用户查询可能不够明确或不够具体,这就需要查询重写以提高检索准确性。因此,查询转换是一种“检索前”的流程环节,用于将输入问题更换成一种或者多种其他形式的查询输入。
我们介绍RAG应用中常见的四种查询重写策略:
HyDE(Hypothetical Document Embeddings,假设性文档嵌入)是一种已经被证明在很多场景下有着较好效果的查询改写技术。其基本过程是:
根据输入问题,生成一个假设性的答案。注意,这个答案来自LLM本身的知识,可能包含错误或者不够准确。
对该假设性的答案进行嵌入,并检索出具有相似向量的知识块(可以同时携带原问题)。
用检索出的知识块和原问题借助LLM生成最终答案。
HyDE方案被证明在很多场景下可以提高检索的准确率,但缺点在于假设文档有可能误导查询或者引入偏差,需要谨慎使用。
分步问题重写的思想为:从初始的复杂查询开始,经过多步的查询转换与检索生成,直至能够完整的回答输入问题。每一次转换都基于之前的推理过程,提出下一步的问题,通常是为了解答原问题所需要的一个步骤中的问题。以一个例子说明:“2022年世界杯冠军球队的成员有哪些?”,那么基本过程如下:
分解出第一个问题:“2022年世界杯冠军球队是哪个国家队?”,然后首先查询出该问题的答案。
根据原问题以及之前的推理过程,分解出第二个问题:“2022年世界杯阿根廷国家队球员有哪些球员?”
对分解出的第二个问题进行查询,并得出最终答案。
分步问题重写过程有点类似Agent完成任务的推理过程:观察已有的过程,并根据原始问题,推理下一步的问题。
与分步问题重写类似的是子问题重写。子问题重写是在问答时通过生成与原问题相关的多个具体的子问题,帮助更好的解释与理解原问题,并有助于得出最终答案。其基本过程是:
将输入问题借助LLM生成多个相关的子问题,这些子问题可以是LLM自身可以回答,也可以是借助某个已有的RAG引擎能够回答。
对多个子问题进行查询,通过检索生成,得出子问题的答案。
根据多个子问题的答案与原问题,推理并合成,输出最终问题答案。
子问题重写也类似Agent在完成任务过程中的子任务分解 ,因此在实际应用中常常会利用Agent的思想:将一个问题推理分解成可以由多个RAG引擎(或Agent工具)回答的子问题,各自完成后合成答案。
后退问题重写通常用来引导LLM从具体事例中提取出更加通用或关于基本原理的问题,再利用这些问题的答案重新推理原问题的答案。这种方法可以显著提高LLM遵循正确的推理路径解决问题的能力。其基本过程是:
借助LLM将原问题解释为一个更通用的后退问题。比如原问题是“Joe出生在哪个国家?在哪里度过了他的童年”。生成的后退问题可能是“Joe的生平经历有哪些”。
对重写的后退问题进行RAG检索与生成,获得相关的知识内容与答案。
将重写问题的生成答案、原问题输入(也可结合原问题检索的相关知识)再次通过LLM进行生成,输出最终答案。
在将一个软件投入应用与生产之前,传统软件过程中一个必不可少的流程环节是软件测试与评估,这是验证与衡量软件是否具备上线与生产条件的重要手段。具体到RAG应用(包括Agent),作为一种新的人工智能时代的应用形式,这个环节仍然举足轻重,甚至显得比传统应用更加重要,这源自于:
需要衡量大模型输出不确定性的影响。
LLM应用在持续演进中的能力改进评估。
定期评估与了解知识库变化带来的影响与干扰。
评估大模型或嵌入模型的选择,以及版本的影响。
基于大模型的RAG应用与传统的软件应用还有一个很大的不同:传统应用软件的输出大多是确定且易于衡量的,比如输出一个确定的数值;而RAG应用中的输入输出都是自然语言,评估其相关性与准确性等都无法通过简单的定量判断,往往需要借助基于更智能的工具与评估模型来完成。
RAG应用评估的依据,也即评估模块的输入一般包括以下要素:
输入问题(question):即用户在使用RAG 应用时的输入问题。
响应结果(answer):RAG应用的最终输出,即问题的答案。
上下文(contexts):用来增强RAG应用输出的参考上下文。
事实依据(reference_answer):真实的正确答案,通常需要人类标注。
基于这些评估的依据,对RAG应用进行评估的常见指标有:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAG应用的评估可以借助开发框架自身的评估工具与模块:
LlamaIndex的Evaluation模块,内置了检索与生成阶段的各指标评估器。
Langchain的LangSmith平台,有完善的评估数据集管理与批量评估方案。
也可借助第三方的评估框架,它们通常与上述框架具有较好的集成性,比如:
RAGAS评估框架
LangFuse:一个类似LangSmith的开源大模型应用工程化平台
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
保证100%免费
】Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。