知识库的必要性
不知道大家是否有这样的体验,在公司我个人偶尔会有一些发票需要报销,因为技术岗位的对外场景不多,所以使用走报销流程的场景也很少,可能一个月就一次,每次我进行报销,填写报销单上的信息的时候,比如当我手上拿着“运输服务*客运服务费”的时候,我心里都会很疑虑,报销单上填写交通费?还是运输服务费呢?
每当这个时候,我都要去咨询我们的财务同学,我们的财务同学再告诉我,应该填写什么,但是问多了,都会有些尴尬,因为几乎每次报销可能都会出现一些填写上的错误,然后反复咨询,这对当事人、财务都是一种低效工作。
假如存在这样一个知识库AI,我们将财务相关的流程知识交给他,后续我们不再需要去找财务,而是通过与AI对话就能了解该怎么做、报销单的范本、注意事项,让AI替代财务的审核报销单这件事,岂不是大大节省双方的工作量,提升工作效率?
在以chatGPT为代表的大模型时代,搭建一个知识库AI不再是一个遥不可及的梦想,不需要写一行代码,人人都可以搭建出一个非常强大的知识库AI。
在正式开始知识库AI的介绍之前,我想带大家一起回到20世纪50年代,一起看看早期人工智能知识库如何实现,有什么缺陷,以及为什么大模型可以实现真正的知识库AI。
一直以来的梦想
人工智能学科早在其萌芽阶段,人工智能的大牛们就不断尝试让人工智能理解人类知识,并对人类的语言做出类似人类的反馈的超级梦想。
而早期的实现方案比较原始,使用了通用问题解决器(General Problem Solver),也被称为专家系统的技术方案进行解决。
专家系统本质上就是录入问题与答案,当用户问问题的时候,将匹配到的答案呈现给用户。
大家想象一下5年前的车机系统,其语音功能只能针对一些特定意思的简单的短句做出反馈,稍微复杂一点,或者超出了车机知识的范畴,专家系统便无法正常工作,这样的反应,很显然距离真正的“人工智能“还差的远。
智障车机
以开车场景下驾驶员对车机说“风有点大,帮我关闭窗户”作为例子,车机也许够做出适当的反馈,甚至你只需要说“风有点大”,车机就能明白驾驶员需要进行“关窗”这样的行为;
但是我们想象一下,虽然车机做出了我们预期的反馈,但是车机其实并不懂得这句话的意思,也并不理解“冷”的含义;车机的理解更加像是文字与行为的匹配、关键字的匹配,进而完成相应的操作,比如冷 = 关窗户,至于文字究竟是什么意思,车机并不明白;
如果我们想让这样的车机达到我们预期的“人工智能”,其背后我们则需要输入无数这样的文字与行为的匹配,让他按照字典的方式去对人类的行为进行反馈;
即使这样的车机拥有海量的字典知识,让绝大部分人都无法第一时间感觉到“机械感”,但是稍微复杂的问题,即便会露馅,更别提类似人类的操作了,这远远不是我们期望的人工智能。
而我们的大语言模型的天生对自然语言有这强大的理解能力,加之使用合适的技术手段,将知识库与AI进行融合,让AI像人类一样理解知识,做出合理的反馈,这已经不是遥不可及的梦想。
大语言模型实现的AI知识库
既然我们要去实现知识库,我们便需要将公司内部的文档交给大语言模型,让大模型理解知识库的知识,这样才能发挥大语言模型的能力,实现让AI正确的读懂,我们上传的资料呢?
技术知识大家大致了解就好,实际搭建AI知识库并不涉及技术部分。
RAG
在大语言模型时代,我们拥有了杀手级的工具来实现针对大语言模型的知识补充;
RAG,全称是Retrieval Augmented Generation,中文含义为检索增强生成。
这个工具的实现流程是什么样呢?
-
数据准备阶段
- 上传知识库
- 将文本按照期待的格式进行分割
- 使用一种称为
embedding的技术将文字向量化,让AI理解我们的知识库 - 存储我们的向量数据
-
提问+回答阶段
- 用户提问
- 理解用户的问题,并更具语义召回相关文字片段
- 大模型结合问题 + 答案进行理解,并回答用户的问题
使用coze中的Bot进行实现
我们使用国产的大模型 AI 应用开发平台,coze.cn进行实现,在知识库中文本中上传知识库,之后我们再询问一些知识库的问题,我们会发现AI已经了解了知识库并且正确的回答了问题。
现在我们问的一些问题比较简单,我们也可以问一些更加复杂的问题,比如知识库不存在的知识,或者知识库存在的知识,但是需要思考总结的。
客观来说,回答的质量是中等的,但是知识库的回答也是符合我们的预期的,但是当你问Bot一些知识库之外的问题,你希望他不参考知识库中的内容,正常与你进行交流的时候,Bot就会显的没那么智能了
- 如果让Bot的回答效果更好?
- 如何让Bot支持不仅可以知识库问答,还可以正常的回答其他的事情呢?
想要实现以上效果,我们便需要通过agent智能体进行实现。
什么是agent智能体?
简单来说就是当我们的任务、或者需求过于复杂,一个大语言模型已经无法完成的时候,我们便需要尝试拆分我们的需求,并进行流程编排,然后让多个大模型相互协同,帮助我们完成该任务。
所以我们实现agent智能体的方式是:workflow工作流;
关于agent智能体,我们会在后续出一篇专门的文章进行说明,大家这里可以简单理解为:多个大语言模型协同工作,我们称之为智能体。
使用agent进行实现更高级的AI知识库
既然我们可以使用多个AI进行知识库搭建,我们便可以拆解一下知识库AI的任务,再将需要思考的部分拆分到每一个的大模型。
任务拆解:
- 接收用户的问题,紧接着就进行知识库的检索
- 如果知识库检索到文字,则判定用户正在咨询知识库的内容,交给知识库回答的AI,结合知识+答案进行二次输出。
- 如果知识库没有检索到文字,则判断用户当前没有咨询知识库的内容,由日常问答的大模型进行与用户的日常问答。
任务分配:
- 大模型A:负责根据用户的问题检索知识库中相关联的答案
- 大模型B:负责针对用户的问题+知识库中检索获得的答案进行思考,整理语言后重新输出
- 大模型C:负责知识库问答之外的闲聊任务。
具体流程:
最后我们再把整个流程给串起来
效果测试:
工作流搭建完成后,我们将Bot与工作流进行关联
对比我们的第一版,其回答效果要更加全面,并且我们增加了一些大模型本身的见解,让阅读者可以更好的理解知识库的回答。
我们再试试问一些知识库无关的问题
可以发现,我们的agent正确的识别了我们问题的意图,进而进入了非知识库问答的路径之中,实现了我们预期的非知识库问答的功能。
最后
企业级AI知识库是我们精心打造的打破信息差!生成式AI课程中的部分内容,我们将持续探索文字、图像、音乐、视频大模型的各种玩法,以及各种具备商业价值、能够帮助企业降本增效的AI方案。
也欢迎大家关注我的公众号:我是狗阿木,你将收获一份免费的AI资料包,我也将持续更新生成式AI的技术分享、可落地案例;
大家也可以添加我的vx:vk-1130,我们社群将不定期开展线上直播课程,与大家一起探索生成式AI相关的前沿技术。