RAG与本地知识库,向量数据库,以及知识图谱的联系与区别 原创
“ RAG的本质是高效检索,而知识库,向量数据库和知识图谱只是组织数据的一种形式”
这两天在之前的一篇关于RAG检索增强的文章中有一个评论,问RAG和知识图谱的区别;这时才发现,原来很多人对RAG技术还没有一个本质的认识,以及与其相关的本地知识库,向量数据库等。
所以,今天就来介绍一下上面的这些概念,以及其联系与区别。
RAG——检索增强生成
前面写过好几篇关于RAG的文章,但可能到现在很多人还不明白什么是RAG——检索增强生成。
先说RAG技术产生的背景,RAG技术是基于大模型文本生成而产生的一种技术;目的是解决大模型的缺陷问题,因此就有了RAG技术来帮助大模型,简单来说RAG就相当于给大模型配备了一个资料库,遇到不懂的问题不要胡扯,先去查查资料。
大模型主要缺陷:
知识更新不及时:大模型的知识仅限于训练数据的截止时间,无法获取之后的知识
大模型幻觉问题:大模型一本正经的胡说八道,
大模型知识不足:大模型的知识有限,很多垂直领域的知识它都不知道
RAG技术的运作流程是什么样的呢?
如上图所示,完整呈现了RAG的运作流程;RAG技术主要分为三个部分:
1. 创建资料库
2. 查资料
3. 带着资料问问题
举个生活中的例子,你是一个学生,有一天遇到一个你不懂的问题;然后,你爸妈就让你去问邻居家上大学的哥哥姐姐;如果是一些常识性的问题,那么他们可以直接告诉你结果。
但你这个问题比较特殊,涉及到具体的专业知识,比如说化学,物理等;这时上大学的哥哥姐姐可能也不知道该怎么回答你的问题,但以他多年的学习经验,他觉得这个问题他可以解决,但需要先看一下你的课本或资料。
这个步骤就是RAG中的第三步,你就是用户,大模型就是邻家的哥哥姐姐;而你比较聪明,在来的时候就怕哥哥姐姐需要看你的课本,你随身就把课本和资料给带着了;这个就是第二步。
然后,邻家的哥哥姐姐看了一会你的课本,然后告诉你这个问题应该怎么巴拉巴拉的给你讲,然后你的问题就解决了。
现在回到RAG的问题,为什么需要这三步?
因为大模型上面的缺陷,所以导致大模型能力并不是很强,因此有些东西需要查资料才能知道;但怎么才给大模型建一个资料库呢?
这就是第一步,比如需要从不同的文档加载数据,如word,pdf,txt,音频,视频等;然后需要把这些文档中有关联的数据放到一块,这个就叫做嵌入(embedding),最后把这些数据存储到一个地方,比如向量数据库。
第二步就是检索,有了这些资料之后,怎么才能根据不同的问题,从中找到相关联的资料;比如,你不可能因为一个历史问题就去翻阅整个永乐大典;所以这就需要一种检索技术,比如目录/索引。
接着是第三步,你带着第二步检索到的数据给到大模型,然后大模型就可以根据这些数据来回答你的问题;这时你可能会说,既然有了这些资料我自己看不就行了,还要大模型干什么;那如果你是公司客服,你会为每个用户都重新介绍一下你们公司的产品和企业文化吗?
而这就是整个RAG技术的实现流程,每个环节又涉及到不同的技术;比如第一步创建资料库,需要文档加载技术,分词技术,嵌入技术等;第二步需要向量化技术,准确高效的检索技术等;第三步需要提示词技术,大模型调用技术等,因为第二步查到的资料需要放到提示词中让大模型自己去“看”。
所以,从这里也可以看出,严格来说RAG技术和大模型没太大直接关系(这里的没关系是指进行业务处理的大模型,而文档嵌入本质上使用的也是嵌入大模型);大模型不管你使用的是什么资料库,也不关心你查到了哪些资料,大模型关心的只是你最后在提示词中携带的资料。
大模型与本地知识,向量数据和知识图谱
那么,RAG和本地知识库,向量数据库,还有知识图谱有什么关系呢?
什么是本地知识库?
本地知识库说白了就是资料库的一种,比如说你们公司的技术档案,销售记录,公司的规章制度等都属于本地知识库的范围;本地知识库的作用是把一个组织内部的资料梳理出来方便大家使用。
所以,本地知识库的本质是资料库;而这个资料库可以有多种不同的组织形式,比如以文档,书籍,或者网页,视频,甚至是会议记录等形式存在,也可能是多种形式的混合。
而向量数据库是一种存储数据的方式,只不过由于大模型的出现,导致基于以前的字符存储变成了基于语义的向量存储;向量数据库从功能上来说和传统的数据库没有本质区别,不论是mysql,还是redis;只不过传统的数据库是基于字符匹配,而向量数据库基于语义匹配(本质上一种数学模型,如欧式距离和余弦函数)。
向量数据库既然是数据库,那么它就具备数据库的特性,存储数据和查询数据;它是数据存储的载体,就类似于工作中的文件夹。
而知识图谱又是什么?
所谓的知识图谱是由谷歌推出的一种搜索引擎技术,面对互联网中日益增长的数据,怎么表示这些数据,以及这些数据之间的关系成为了一个难题;因此,谷歌就推出了知识图谱技术,用这个方式去记录这些数据以及其关联关系。说白了知识图谱就是一种组织数据的方式,比如我们日常工作和生活中,会按照日期,地点,任务名称等来存放不同的文件,资料。
所以,本地知识库,向量数据库,还有知识图谱有什么关系?
本地知识库即可以使用简单的日期,部门,工作任务来组织资料,也可以使用知识图谱这种更加专业的方式来搭建本地知识库;而搭建的本地知识库存储在什么地方?
即可以存储在传统的关系性数据库中,也可以存储在文本文件中,当然也可以存储在向量数据库中。
这就是其三者之间的关系。
那么它们和RAG又有什么关系?
前面说了,RAG是为了解决大模型本身存在的几个缺陷;大模型需要的是你在提示词中拼接的最终资料,而不会关心你这个资料从哪里来。而RAG就是从外部检索资料然后拼接到大模型提示词中的一种方法论。
RAG最终的目的就是准确,高效的检索到相关的资料;而不管是去知识图谱中检索,还是去本地知识库中检索,还是去向量数据库中检索,亦或者是从传统的关系型数据库中检索,或者直接去网络上搜索。
比如说,你想让大模型告诉你怎么做西红柿炒蛋,你需要的是使用RAG技术检索到做番茄炒蛋的内容,而不是告诉大模型哪里大米产量高,哪里发生了自然灾害,原子弹怎么造。
而至于你这个资料是从哪家餐厅的菜谱中找到的,还是从网络上搜索到的,或者还是路边听说的都可以。
问题,传统数据库可以用来做RAG吗?
答案是可以,比如说价格表这种精确的不需要语义检索的数据;使用传统数据库效果会更好。一般企业场景中是把语义检索和字符匹配同时使用,需要语义理解的就使用语义检索库,比如向量数据库;精确的数据就放到传统数据库中。
总结
RAG是一种从外部检索数据的方式;本地知识库相当于一个资料库;而知识图谱是组织数据的一种更加科学的方式;向量数据库是用来存储向量化数据的一个载体。
所以,本地知识库,向量数据库和知识图谱和RAG没什么直接关系,如果说有关系就是它们三者可以作为RAG技术的一种具体实现;但RAG也可以使用其它的实现方式。
RAG,本地知识库,向量数据库,知识图谱是四个完全独立的技术,它们之间没有任何直接关系,但又可以互相合作以达到某种效果。
本文转载自公众号AI探索时代 作者:DFires