爆火的本地知识库项目是什么?什么是RAG?本地知识库与大模型的关系
“
”
很多人应该都听过本地知识库项目,它可以说是当前人工智能领域最火的项目之一了。那么,到底什么是本地知识库?它和大模型之间又是什么关系?具体怎么搭建一个本地知识库?今天咱们就来把这事儿掰扯清楚。
01 为什么需要本地知识库?
其实,本地知识库和大模型本身是两个相当独立的技术,并没有直接的亲缘关系。那为什么它们会走到一起?根本原因在于,大模型存在两个非常显著的痛点:一是“幻觉”问题,模型会一本正经地胡说八道;二是数据更新迟缓,比如ChatGPT的知识可能还停留在两年前,对近期发生的事一无所知。正是为了弥补这些缺陷,知识库技术才和大模型技术进行了结合,诞生了所谓的“大模型知识库技术”。
先说说什么是知识库。简单理解,知识库就是一个资料库。比如国家图书馆收录了我国几千年的历史资料;每家企业有自己的内部数据;每个领域也有自己领域内的专业数据。而如何管理这些资料和数据,就是知识库技术的核心,它主要解决两件事:数据的存储,和数据的检索。
在互联网出现之前,知识库就是档案室或资料室。等到计算机技术,尤其是大数据技术成熟后,知识库才从线下走到了线上,为处理海量复杂数据提供了可能。

再来看大模型。大模型技术确实是人工智能领域最火爆的技术之一,但它有一个致命缺陷:它的训练数据是有时间窗口的。比如现在有个大模型,它的知识可能还停留在两年前,对这两年行业的变化一无所知。解决这个问题有几条路:一是用最新数据重新训练大模型,二是使用微调技术(比如LoRA)用最新数据进行调整。但这两种方式,成本高,门槛也高,对小公司来说基本不可接受。更要命的是,即便重新训练,模型在一些垂直领域的问题上还是容易出现幻觉。

所以,大模型知识库技术应运而生。打个比方,大模型就像是一个受过良好教育的大学生,它有扎实的基础知识。但如果遇到它没接触过的领域或问题,怎么办?它会去图书馆查资料。更形象的说法,就像期末考试前,老师会发考前资料,告诉你考试内容都在资料里,考试时照着资料来就行。这样一来,既解决了大模型时间滞后的问题,又大幅降低了成本和门槛,同时还能有效抑制“幻觉”的产生。
02 怎么实现大模型知识库?
实现大模型知识库,理论上很简单:就是在向大模型提问的时候,同时带上相关的“资料”,让模型根据资料内容进行回答。但实际操作中,需要解决几个关键问题。
第一,资料的加载。随着技术发展,资料类型五花八门,有文本文档、图片、视频、音频等等。光是文本文档,就有txt、word、excel等多种格式,还有各种格式化及非格式化数据。所以,怎么把这些不同格式的资料高效地加载进来,是个相当麻烦的事。

第二,资料的存储。资料加载进来后,需要统一处理。如果这些资料是给人看的,保持原有格式即可。但大模型只“认识”向量格式的数据,所以必须把文档转换成向量格式存储,这就诞生了向量数据库。
第三,数据的检索。数据存入向量数据库后,怎么快速准确地检索出来?如果资料库很小还好办,一旦资料库庞大,检索效率就成了一个关键问题。

大模型知识库的使用流程
整个加载流程大致如下:首先,通过加载工具把各种格式的文档加载到向量数据库中;然后,对文档进行转换和拆分,比如按固定长度切成小块;接着,通过embedding模型,将拆分后的文档按照语义转换成向量格式;最后,把这些向量存储到向量数据库中。Embedding模型在这里至关重要,它的作用是赋予文档“语义”意义,否则原始数据直接存储,会导致后续检索时答非所问。
流程如下图所示:

文档加载完成之后,就可以投入使用了。使用步骤是这样的:用户向大模型提出一个问题,然后通过embedding将这个问题也转换成向量格式;接着,根据这个向量,从向量数据库中检索出与问题相关的资料。检索到资料后,将用户问题与检索到的资料整合到一起,构建一个prompt template(提示词模板),最后一起输入到大模型中,得到最终的回答。
整个知识库的完整流程如下图所示:

-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名