开篇
书接上文,在上文《谈LORA微调与数据质量处理之争》中我们详细叙述了:LORA微调手段和数据清洗之分,以及如何平衡和组合使用LORA微调与数据清洗的手法。
文末我们提到了“下一篇我们讲着重讲述:在打造企业数据清洗工具、平台和落地过程中又会遇到什么挑战”。因此本篇就着重讲企业数据清洗的架构与设计。
接着上文中这一个示意图即:
理想中的AI RAG在召回企业原始数据、语义资料时的设想
实际我们面临的问题和准备要采取的后续措施
在上文中我们提到了“补链”这个手段。
数据清洗就是“补链”
数据清洗就是“补”,的确,数据清洗不仅仅只是“去除重复的、无用的数据”,它主要包含着一堆的科学化、合理化的高科技组合手段。
手段很多,但是最最重要的手段有以下几种,这些是在实际我们面临企业原始数据通过embedding技术进入向量库前必须要经历的步骤,它们是:
- 原始段落折分(包括按行折、按段折);
- 语义合并(对于跨段落甚至跨页同语义数据内容进行合并);
- 图文组合(把图和文组成一段进入向量库);
- 重复内容去除(在合并或者折分时势必遇到不少语句冲突或者重复的内容);
- 内容重写(这块逃不掉的,有些原始数据来自于一些非结构化数据很杂乱,你自己要重新组织);
- 内容扩写(有些太简单了,需要适当的加一些前缀、后缀);
- 翻译(有些缩写你肯定不能用或者是一些专用组织内用语);
- 纠错(包括错别字、有岐义的词句甚至是原数据根本就写错了);
- 打标签;
- 人工Review;
上述10步,必不可少,其实还有更多。
下面我们通过实例展开这10个点来看。
企业数据进入向量库前的必备步骤详细讲解
原始段落折分
是按行折还是按段折?
为什么要按行?为什么要按段?
如果我说120个字一折分可以吗?
我们就拿业界做的好的数据进向量库以及可以召回的工具fastgpt的内部数据清洗工具来说,它提供了上述几种折分手法。可是,我们仔细着想一下,这几种折分方法哪一种最好呢?
都不好!
又
都好。
不好在哪
按行或者按段折,那下一段怎么办?下一段内容和上一段是强关联呢!你硬生生把它折开来后进向量库时速度是快了,召回时体积也小了,可是语义上往往会造成严重的失真!
那按照120字、200字一折,那一句话正好有一个逗号甚至一句完整的语句正好被你来个“拦腰斩断”,那这样一折它造成的幻觉会更利害呢。
好在哪
简单!直接PDF、ITEXT、PYTHON。。。等等等开发语言来了。。。好了,这又落进“Show技术”的坑里去了而忘记了技术的本质是为企业、为某一领域服务这一件事。
对,只有这个好处了!
什么是合理折分手法呢
按行、按段是没错。但是我们需要把一个语义归拢在一段,再把这一段折出来,这样就最好了。
带来的问题
就拿归拢成一段这件事来说甚至第一页内容和第13页内容是属于一段的。那现在我假设给你一篇500页的pdf文档,作为进数据一环的数据清洗人员在面临着这样的工作量时岂不要疯了?他要干活前还得看完全文呢?
但是呢,又必须这么干才合理,没错,你没看错,此时企业对数据清洗人员的素质、运营能力甚至是业务能力产生了很大的要求,这不又绕回了:这个东西门槛太高,不是一般企业可以玩得起的梗了吗?
您别急,此处我们先放一放,后面我们会讲解决办法。
语义合并
它和段落折分很像,其中最大的一个问题在于需要数据清洗人员或者说是工具可以识别跨段、跨页的语句属于同一个语义,然后进行合并,对操作人员的要求很高。
比如说以下这个例子
它就不能作为两段,而必须作为一段进行语义上的合并后才能进向量库,它需要做成以下语义上的合并结果
钾在人体内/生理上的含量:钾是体内重要阳离子之一;正常含量约250克,约占体重的0.2-0.3%。钾主要存在于细胞内,约占总量的98%,其余在细胞外液。
我们看到了上述就是我们在语义上做的合并
图文组合
看以下这个例子
没有经验的人会告诉我这么做:
- 使用AI工具或者是截图工具把图片提取出来;
- 使用AI工具或者是截图工具把文字提取出来;
- 然后把图和文变成一段;
- 然后进向量库;
没错,是这4步,你1步都少不了。但是这个工作量是很大的,一个500页PDF的文档,其中有277张图文混排的,你怎么办?你知道要操作几步?你知道需要花费多少时间?
这还只是一个会使用AI工具的人能够做的,如果碰到图片有水印怎么办?
能怎么办呢?
打开PS。。。
下面就不多说了。。。
重复内容去除
有些文档每一页都有子标题,甚至是孙子标题,当跨页合成一段内容时,你总得把这些“重复的段落标记”给去除掉吧?要不然到了召回后交由LLM这一步,出现幻觉的机率会更大。
这里面会涉及到一些手工的活。
内容重写
比如说下面这一例子
没经验的人开动python、开动itext、开动ocr,3段内容。。。夸夸夸。。。进向量库了。。。那叫一个爽啊。
可是进完数据后呢?这3段代表什么意思呢?
于是这时就需要重写了,需要重写成以下这样
水缺乏分:1)高渗性脱水 2)低渗性脱水 3)等渗性脱水
试想如果不加思索一味只靠“数据跑批”、“各种技术”把上述3句话喂入LLM然后在召回时AI会怎么回答?
内容扩写
还是拿上例继续说,“水缺乏分哪些”其中有一项叫“等渗性脱水”。
那么这个名词给到有专业知识的医生、护理人员是看得懂的。但如果你在做一个“家庭医疗百科”时,就这么一个“等渗性脱水”告诉使用者,这就叫完事了?
你必须要把它扩展开来
等渗性脱水是指体内水分和电解质(主要是钠)按正常比例丢失,导致体液的渗透压保持不变的一种脱水类型。等渗性脱水通常发生在急性腹泻、呕吐或大量出汗的情况下。由于水和钠的丢失比例相同,血清钠浓度通常保持在正常范围内。
等渗性脱水的主要症状包括:
口渴
皮肤干燥
尿量减少
乏力
头晕
治疗等渗性脱水的关键是补充等渗液体,如口服补液盐(ORS)或静脉输注生理盐水,以恢复体内的水和电解质平衡。
这就是扩写。
翻译
来看实例
兄弟,这一段你要是直接进入语料库了后,这乐子就大了。
AI!
我们正在写AI类的相关文章。。。AI!!!这。。。
其实它在整篇文章里的这个AI代表的是什么意思知道吗?
Adequate Intake - 适意摄入量
纠错
任何企业的原始资料都存在错误,这里面如果只是错别字还算好的。更重要的在于知识内容或者是信息因为数据收集、整理到进入向量库时当中的这个时间差造成了信息上的误解。
我们碰到过一个例子,就是一家连锁超市,某一个重要区域的联系电话因为有15天的时间差,电话号码已经更换了。
而进数据的人员没有注意到这个问题,结果导致了客户打这个售后的电话回答他这个电话是一个废品回收站电话。
这得造成多大的误解呢!
打标签
拿“减肥”这个事来作例子。
各年龄段、性别、身高、体重、目标体重、每日活动频率都会决定着BMR或者是每天应该控制的摄入的卡路里的量不同。
现在假设有10条数据,涉及BMR、卡路里的。如果不分类的一股脑的进入了向量库,那么这个AI产品在回答或者是计算BMR或者是每天摄入量时是偏差很大的,也是不准的,这将对企业自身的服务质量形成极不好的口碑呢。
因此,就需要在每一条记录前打上类似这样的标签
0-3岁段-男性-饮食:正文
4-8岁段-学龄前-饮食:正文
9-14岁-饮食:正文
15-18岁-青少年段-饮食:正文
这样的标签。这就叫打标签。
人工Review
这步逃不掉的,一般做企业AI类项目,这个语料在最后进入训练(即:通过embedding技术进入向量库的过程)都需要有业务专家做人工校正和Review,甚至在运营的过程中会比较高频次的不断的做校正和Review,这个过程会伴随着这个项目的整个生命周期。
步骤之多、技术含量之高足以让一般企业对AI类项目望而卻步
我们看看上面说的,这10步是必须步骤,少一步企业的数据在经过AI后会产生各种千奇百怪的问题。轻则被人当个笑话看、重则会造成企业的声誉和口碑受到严重影响。
因此从企业角色出发,对于数据清洗充满了挑战,其中之一就是成本和人力资源问题。
我们可以注意到上述的过程我不是基于传统的洗数据来论述这10点的,而是基于IT技术的辅助下才能做这10步的,可以这么说,一个高级运营+一个大数据团队都不一定干得了上述10件事。
这又绕回了AI落地难啊难,光做数据清理就得付出很大的成本。
这的确是一个让现在企业很头疼的问题。
为了数据质量付出的成本一点不低,还挺高昂
这些步骤我们把它们平铺在一个平面上,就可以发觉有多“累”了。
如果用AI工具来辅助数据清洗就一定可以解决吗
答案是:不会,没有这么简单!
在进入AI时代后我们对一些步骤采用“AI时代的技术赋能运营”来做这件事。
我们可以看到,就算使用AI工具,一个人在完成上述100页的原始数据清理时至少需要同时在4个工具间来回切换。
哪四个工具呀?
- word
- ps
- 一个OCR或者是让IT团队做一个小系统或者用AI识图工具
- AI作文工具
嗯,的确有了AI工具后比原来效率是提高了不少,但是这还是没有摆脱“要做此工种的人门槛太高,一般企业负担不起”的这么一个坎。
而且实际企业运营时不止只有100页,而是有上千*100页的文档时,大家一起来瞧,这件事会变成什么样的工作量呢?
这是一件很恐怖的事!
到现在为止,大家都知道数据清洗肯定是可以产生可观的结果的,但是它太累人了、对企业的运营团队、IT团队来说门槛还是太高。
提出解决方法
我记得我在前面的博客《AI落地不容乐观-从神话到现实》这一篇中讲到过:
即一个AI项目要成为刚需必须具备:
原来需要一群月薪老老高的大牛,在一个月里可以做出来的事。用了AI可以用一堆菜鸟在1周内就可以完成同样质量的事。
于是,就有了这么一个公式,你的业务如果用AI去落地后可以满足以下这个公式,这个AI项目就会变得极有价值即我们假设一个大牛的成本为X,一个菜鸟的成本为Y,原先不用AI一件工作的交付时间为A,质量为Q有以下公式:
成本上:3*Y<X;
交付时间:<=A;
交付质量:=Q
如果你的企业做一个项目依旧没有到达上述这个目标,我相信这个项目对企业来说只会变成这么样的一件事:
我付了钱、多了事、没有解决根本问题
变成这么一个“坑”。
这是企业的运营负责人或者是经营者们所不能接受的一件事。
必须使用超级个体的理念赋能企业
AI时代,如何赋能个体的,我们都知道了。但是“你只有一个人,你浑身是铁能打几个钉”?,我们把目光放到赋能个体变成超级个体来同样转换到企业身上如何赋能?
再说白了点,让企业可以使用甚至比原来更低的成本、更高的效率获得同等甚至高于(一般来说是高于的)人肉+工具取得的数据清洗质量呢?
真正为企业赋能,把超级个体的能力赋能企业业务部门
于是我和我现在的团队想到了这么一个设计。
我们把来回切换工具(哪怕就在2个工具间切换)造成的工作上的“上下文不连贯”甚至失真全部用AI衔接起来,让上述这10步在:一个工具、一个界面里完成。并且把上述这些折分、去重啦、翻译啦、组合啦、扩写啦的经验内置成AI模板,到了企业业务部门的运营人员手中变成了:一个点击、两次点击+一个ctrl c即可以完成的事。
这样做可以把工作的效率极大的提升,同时可以极大程度降低企业清洗数据人员的门槛真正做到“打造超级体”的目的。
于是,在我们的手里诞生了这么一个东西:
我们内部给它定义名称为:Osiris即:荷鲁斯引擎。
- 注:Osiris是植物、农业和丰饶之神,赫里奥波里斯-九柱神之一 。
理念是美好的,但现实又如何。
超级工具的诞生和效果
这个工具我们把它做成了一体化工具,它打开后的界面不复杂,但是它可以让一个运营人员在完成上述10大数据清洗必备步骤时完全在一个界面并且是连贯的操作。同时它蕴含着我们这1年多来总结的那些方法论化成了:简单的一次点击和ctrl + c 、ctrl + v操作中。
于是我们使用刚毕业的大学生来做实验,我们给了他一份170页左右的PDF文档、医疗类的、高专业性。对这10个方法就像我写博客一样写了这10步(还没有我写的博客这么详细),以及需要注意什么。
然后他在2天不到的时间(并未有加班的现象)即完成了高质量的embedding数据了。
对比我自己,我们因为是工作室模式因此团队不大每个人都是超级个体。我自己也经常要参与语料和数据清洗工作,如果换了我以前面对这种上百页PDF、PPT我结合着AI自动化工具零零碎碎的使用(我手还挺快)也得要5个工作日(每个工作日8小时耗满),这还只能处理100页左右的文档成高质量的语料。
而使用了我们自己开发的这个一体化工具后,一个基本没有什么经验的毕业生经过1小时培训和2小时自我阅读教程就完成了我一周的工作量。此时我们就知道这个工具有多好用了。
为什么用了一体化工具后效率会这么高呢?
因为上述这些步骤在一体化工具使用时它变成了这么样的一种工作流了。
我们可以看到,其实人肉在这里面只是起到了一个事后Review的工作。而这一步是无论你使用什么工具都逃不掉的一步。
所以我们通过不断的使用这个工具采集到了一个指标,即:使用我们自己的这个Osiris引擎后它平均到达了我之前博客说到的:90%+提高AI回答精准性的要求,事实上是远超这个指标了。
所以,这就是我在之前博客中所说的,要实现:
原来需要一群月薪老老高的大牛,在一个月里可以做出来的事。用了AI可以用一堆菜鸟在1周内就可以完成同样质量的事。
于是,就有了这么一个公式,你的业务如果用AI去落地后可以满足以下这个公式,这个AI项目就会变得极有价值即我们假设一个大牛的成本为X,一个菜鸟的成本为Y,原先不用AI一件工作的交付时间为A,质量为Q有以下公式:
成本上:3*Y<X;
交付时间:<=A;
交付质量:=Q
这么一个公式,仅仅靠AIGC是不可能完成的,你必须依靠的是:使用AI在如何打造超级个体、赋能个体同样的步骤、理念打包成一个工具然后用这个工具、平台去赋能企业才能成功。
结语
数据清理非常重要,数据清理并非只是依靠单个工具。而它是一个体系化的理论+工具的组合。
技术的终极目标就是普惠大众,如何把先进的理念、业务运营知识、工具的使用变成可以以“一键式”赋能大众和企业,一旦我们在平时做事时以这样的理念为目标时何愁做不出来好的AI产品呢?
朋友们,未来已到!让我们动起手来,把心里那些美好的点子和理念化作持续的行动来为祖国的AI事业一起添砖加瓦吧。
后续篇章中我会深入介绍Osiris的引擎,并且以Osiris引擎实际操作来展示什么叫“超级智能体”。
好了,结束今天的篇章。