“ 文档处理是人工智能应用领域中的重要环节,其业务需求复杂,技术实现难度高;因此,怎么处理复杂文档是每个技术人员都需要考虑的问题。”
文档处理在当前人工智能行业下是一个非常基础也非常重要的工作,不论是模型的训练和微调,还是以RAG检索增强,亦或者是在传统的搜索引擎(包括百度,谷歌这种搜索引擎;以及电商等内部平台的搜索需求)中都是必不可少的一个重要环节。
但面对复杂的文档格式和类型,文档处理的难度相当大;而且在不同的需求场景下,同样格式和内容的文档需要不同的处理方式;比如说在开放性问答场景和精确性的企业服务场景下,对文档处理的要求和质量是不一样的。
所以,今天我们就来讨论一下文档处理过程中存在的一些问题以及相对的解决方案和技术选型。
文档处理
关于文档处理我们需要从两个方面进行考虑,一个是业务场景,另一个是技术实现。
业务场景
先说业务场景,文档处理的业务场景有很多;上面所说的RAG,模型训练,搜索引擎等都需要文档处理;而在垂直领域,比如医疗,金融,法律等面对快速爆炸的知识密集场景中,文档处理依然是很重要的一环。
特别是面对多年积累的大量历史数据,怎么快速从这些历史数据中找到关键信息;除了搜索算法和大模型的应用之外,文档的前期处理是必不可少且非常重要的一环。
因为,对于未经过处理的数据,再强大的算法或模型都很难得到精确的查询或检索效果;所以,文档处理的方式,以及处理结果的质量都会成为影响数据召回的重要因素。
技术实现
技术实现也需要从多个角度进行说明和分析,主要包括不同文档的类型和技术实现两个方面。
文档类型
在文档处理领域中,不同的文档类型和内容需要使用不同的处理方式;当然,这里所说的文档并不只是指我们常见的word,pdf,md等文档,还包括数据库文档,网页文档,图片,表格等多种文档类型。
从形式来看,文档的类型多种多样,包括我们常见的office三件套,markdown文档,csv,数据库文档,网页,日志文件等。
但从技术的角度来看,不管什么形式的文档,主要都是以下三种格式:
- 结构化数据
- 半结构化数据
- 非结构化数据
结构化数据主要包括excel,csv,数据库文档,xml文档,日志文件等。
半结构化数据主要包括网页,mongdb,email等这种有部分是结构化数据,而部分是非结构化数据;比如说网页中的标签,h1,li;email的收件人,发件人等。
非结构化数据就是更常见的数据类型了,比如word,pdf,ppt,md,txt等;特别是word,pdf,md这种支持富文本,表格图片的文档格式;由于其复杂的文档结构,导致其在处理过程中会存在非常多的困难点;比如常见的文本,图片,表格同时存在的项目文档;以及充斥大量架构图,结构图和流程图的PDF文档等。
而在人工智能应用场景中,我们不但需要保证这些文档内容的连续性(比如表格拆分的问题),还需要保证其语义和结构性,比如目前对于存在大量结构图和流程图的文档处理效果都不怎么好。
因此,面对这些复杂的文档类型和内容,怎么进行有效性处理是很多企业和领域都需要思考和解决的问题。
技术方案
根据以上复杂的文档类型,我们需要使用不同的数据处理方案;下面我们就以结构化,半结构化和非结构化这三种类型进行说明。
结构化数据
在这三种数据类型中,结构化数据是最好处理的一种数据格式;不论是数据库,json数据,xml数据等;由于其有标准的格式,因此我们只需要根据其数据格式进行处理即可;而且由于计算机技术发展这些年,对这方面的数据处理技术已经非常成熟了。比如说python的pandas就非常适合处理数据库,json和csv等格式的数据。
半结构化数据
半结构化数据相对来说处理过程相对较复杂一点,但又不像非结构化数据那么复杂。
比如说以网页文档为例,在爬虫领域网页爬取是一项非常基础的功能;而对爬取之后的网页进行解析,可以使用正则表达式或一些三方网页解析库进行处理;其效果还不错。
非结构化数据
非结构化数据在文档处理领域中,属于技术难度最大,处理方式最复杂的一种数据格式。
非结构化数据处理复杂的原因就在于,上面所说的文档结构复杂,可能同时存在文字,图片,表格,流程图等多种不同的数据格式;而面对如此复杂的数据格式,再加上不同应用场景下对数据处理质量的要求;因此没有办法进行统一的处理;因此只能选择在处理过程中的部分环节进行一定的抽象。
比如说,对文档中的文字,图片,表格分别进行提取;然后再进行特定的处理;这种一般会选择多模态模型进行数据提取。
其次,对于一些图片中存在大量文字描述的内容,可以选择使用ORC等技术,把内容从图片中提取出来然后当成文本数据进行处理。
当然,也可以使用最简单的方式,通过多模态模型把整个文档进行概要总结;然后使用总结的概要作为结果进行应用。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。