RAG、本地知识库、向量数据库与知识图谱的区别与联系
前言
RAG 的本质是高效检索,而知识库、向量数据库和知识图谱只是组织数据的一种形式。很多人对 RAG 技术还没有一个本质的认识,以及与其相关的本地知识库、向量数据库等概念。
本文将介绍这些概念,以及它们的联系与区别。
RAG——检索增强生成
背景与目的
RAG(Retrieval-Augmented Generation)技术是基于大模型文本生成而产生的一种技术,目的是解决大模型的缺陷问题。简单来说,RAG 相当于给大模型配备了一个资料库,遇到不懂的问题不要胡扯,先去查查资料。
大模型主要缺陷包括:
- 知识更新不及时:大模型的知识仅限于训练数据的截止时间,无法获取之后的知识。
- 大模型幻觉问题:大模型一本正经地胡说八道。
- 大模型知识不足:大模型的知识有限,很多垂直领域的知识它都不知道。
运作流程
完整呈现了 RAG 的运作流程,主要分为三个部分:
- 创建资料库
- 查资料
- 带着资料问问题
生活化类比
你是一个学生,有一天遇到一个你不懂的问题;然后,你爸妈就让你去问邻居家上大学的哥哥姐姐。如果是一些常识性的问题,那么他们可以直接告诉你结果。
但你这个问题比较特殊,涉及到具体的专业知识,比如说化学、物理等;这时上大学的哥哥姐姐可能也不知道该怎么回答你的问题,但以他多年的学习经验,他觉得这个问题他可以解决,但需要先看一下你的课本或资料。
这个步骤就是 RAG 中的第三步,你就是用户,大模型就是邻家的哥哥姐姐;而你比较聪明,在来的时候就怕哥哥姐姐需要看你的课本,你随身就把课本和资料给带着了;这个就是第二步。
然后,邻家的哥哥姐姐看了一会你的课本,然后告诉你这个问题应该怎么给你讲,然后你的问题就解决了。
为什么需要这三步?
因为大模型上面的缺陷,所以导致大模型能力并不是很强,因此有些东西需要查资料才能知道。但怎么才给大模型建一个资料库呢?
这就是第一步,比如需要从不同的文档加载数据,如 Word、PDF、TXT、音频、视频等;然后需要把这些文档中有关联的数据放到一块,这个就叫做嵌入(Embedding),最后把这些数据存储到一个地方,比如向量数据库。
第二步就是检索,有了这些资料之后,怎么才能根据不同的问题,从中找到相关联的资料。比如,你不可能因为一个历史问题就去翻阅整个永乐大典;所以这就需要一种检索技术,比如目录/索引。
接着是第三步,你带着第二步检索到的数据给到大模型,然后大模型就可以根据这些数据来回答你的问题。这时你可能会说,既然有了这些资料你自己看不就行了,还要大模型干什么;那如果你是公司客服,你会为每个用户都重新介绍一下你们公司的产品和企业文化吗?
而这就是整个 RAG 技术的实现流程,每个环节又涉及到不同的技术。比如第一步创建资料库,需要文档加载技术、分词技术、嵌入技术等;第二步需要向量化技术、准确高效的检索技术等;第三步需要提示词技术、大模型调用技术等,因为第二步查到的资料需要放到提示词中让大模型自己去'看'。
所以,从这里也可以看出,严格来说 RAG 技术和大模型没太大直接关系(这里的没关系是指进行业务处理的大模型,而文档嵌入本质上使用的也是嵌入大模型)。大模型不管你使用的是什么资料库,也不关心你查到了哪些资料,大模型关心的只是你最后在提示词中携带的资料。
大模型与本地知识、向量数据和知识图谱
什么是本地知识库?
本地知识库说白了就是资料库的一种,比如说你们公司的技术档案、销售记录、公司的规章制度等都属于本地知识库的范围。本地知识库的作用是把一个组织内部的资料梳理出来方便大家使用。
所以,本地知识库的本质是资料库;而这个资料库可以有多种不同的组织形式,比如以文档、书籍、或者网页、视频、甚至是会议记录等形式存在,也可能是多种形式的混合。
什么是向量数据库?
向量数据库是一种存储数据的方式,只不过由于大模型的出现,导致基于以前的字符存储变成了基于语义的向量存储。向量数据库从功能上来说和传统的数据库没有本质区别,不论是 MySQL,还是 Redis;只不过传统的数据库是基于字符匹配,而向量数据库基于语义匹配(本质上一种数学模型,如欧式距离和余弦函数)。
向量数据库既然是数据库,那么它就具备数据库的特性,存储数据和查询数据;它是数据存储的载体,就类似于工作中的文件夹。


