通过Ollama+AnythingLLM搭建本地私人知识库

💡这两天捣鼓了一下本地知识库的搭建,对于个人日常信息的处理来说非常有必要,很多场景都可以满足我的要求,尤其是基于一些文档的问答情况下,AI可以帮我很好地回顾、梳理、总结。

所以也想简单地记录一下这个过程,希望可以帮到有同样需求的朋友~

一、开始搭建本地知识库前,先想清楚几个问题

为什么要用AI知识库?

简单来说就是用来管理信息的一个库,在传统的数据管理方式中,我们通常是用「关键字」来查找内容,这样的方式在AI面前则显得过于机械。现如今的AI对信息的阅读理解、总结输出能力,已经无限接近于受过良好教育的成人。所以如果通过AI方式来管理信息,那么我们管理的过程也会更自然,更接近于和人的互动。如果把某个领域的专业内容上传到知识库中,那么后续的交互则更像是和一个小助手对话,而不是感觉像在翻书一样查找内容。

为什么要搭建一个本地的知识库?

(1)免费:首先肯定是因为“免费”,现在市场上所有云端AI服务基本都对免费用户有一定请求限制,本地知识库则可以永久免费使用。

(2)隐私保护:我们在管理信息时很多时候信息都比较隐私敏感,尤其是在管理商业公司内部信息时,这些数据如果通过闭源云端大模型处理,难免会有信息泄露的风险。并且本地知识库还可以脱机工作,不需要联网即可进行信息检索,这对于很多安全要求较高的公司来说也很适用。

(3)灵活性高:用户可基于实际使用的场景来选择合适的开源模型搭建知识库,恰当的选择和配置,可提高整体的用户体验。

本地知识库有什么限制?

模型越大往往理解、推理、表达能力都更强,所以如果跑在本地的话,我们选择模型时需要考虑电脑的配置,一般也只能选择比较小的模型来跑。不过在知识库应用的场景下,小模型的处理能力也基本满足要求。

如何避免大模型的「幻觉」?

大模型经常会出现一本正经的胡说八道的「幻觉」现象,这使得很多存在客观标准、专业严肃的查询无法通过AI问答获得很好的服务,比如医疗、金融等领域。那么通过搭建知识库则可以有效避免这种情况,上传一些专业的内容文档,并要求AI从圈定的信息范围内进行查询,且在Prompt中明确说明只能通过知识库内容进行问答。那么一般来说我们则可以完成与AI的沟通基于知识库内容,在设定的范围内输出有效内容。

什么是RAG?

在搭建知识库的学习过程中,我了解到了一个很重要的概念「RAG」。那么下面就让ChatGPT来详细介绍一下什么是RAG吧O(∩_∩)O


什么是 RAG(Retrieval-Augmented Generation)?

RAG(检索增强生成)是一种结合了信息检索(Retrieval)和生成(Generation)技术的自然语言处理方法,用于创建更准确和信息丰富的回答或内容。

基本概念

-知识库(Knowledge Base):这是存储大量信息和数据的地方。知识库可以包含各种文档、文章、书籍等。

-嵌入(Embedding):嵌入是一种将文本数据转换为向量(数字数组)的技术。通过嵌入,系统可以将复杂的文本转换为可以在数学空间中处理的形式。这有助于系统理解和比较不同文本的相似度。

-检索(Retrieval):系统从知识库中查找相关信息。这个过程通常通过比较用户提问的嵌入向量和知识库中文档的嵌入向量的相似度来实现。

-生成(Generation):结合检索到的信息,系统生成一个完整且有意义的回答。这一步通常使用生成模型(如GPT-3)来完成。

RAG 是怎么工作的?

-提问(用户输入):用户提出问题,比如“什么是 RAG?”。

-生成嵌入(Embedding Generation):系统将用户的问题转换为嵌入向量。这一步通过预训练的语言模型(如BERT或GPT)来完成。

-检索相关信息(Information Retrieval):系统在知识库中查找与问题嵌入向量相似的文档。具体做法是将知识库中的文档也转换为嵌入向量,然后计算这些向量与问题向量的相似度,选择相似度最高的几个文档。

-生成答案(Answer Generation):系统将检索到的文档内容与用户的问题结合起来,通过生成模型生成一个完整的回答。生成模型会综合考虑问题和检索到的信息,以确保回答准确且相关。

举个例子:

假设你问一个智能助手:“最近的天气怎么样?”

-提问:你提出了问题。

-生成嵌入:系统将你的问题转换为嵌入向量。

-检索信息:系统在知识库中查找与问题相关的天气预报信息。知识库中的天气预报数据也被转换为嵌入向量,系统通过计算相似度找到最相关的数据。

-生成答案:系统将检索到的天气预报数据和你的问题结合起来,通过生成模型生成一个答案:“今天的天气是晴天,温度在25到30度之间。”

为什么 RAG 很重要?

-更准确:利用最新的、相关的外部信息,而不仅仅依赖已有的知识库。

-更全面:结合多种信息来源,可以生成更丰富的答案。

-灵活性:适应不同类型的提问和信息需求,提供动态的、个性化的回答。


不知道你看懂没,简单来说可以理解 RAG 是一个在问答过程中的框架,知识库以及用户输入的内容先经过RAG框架,再与大模型交互。RAG负责处理信息的嵌入、检索、整合,之后再将内容传给大模型,大模型再将这些输出整理成自然语言输出给用户查阅。

而RAG在处理信息的过程中,第一步也是最重要的一步是「Embedding」(嵌入),是一种将复杂、高维度的数据,例如文本或图像,转换成低维度向量空间中的向量,从而使机器学习算法能够对这些向量进行处理和分析。

问答知识库架构

二、动手搭建本地知识库

由前面「RAG」这个概念的解释,我们知道要基于一些给定信息来进行AI交互,我们需要两个基本的工具:大模型、RAG。那么我们应该去哪里找这些工具,并通过何种方式将他们用起来呢?

1.安装ollama

ollama是一款管理本地大模型的工具,非常适合小白,有手就会。官网:https://ollama.com/

进入官网后,下载适合自己电脑的版本即可。

ollama官网

2.通过ollama下载模型

ollama只是用来管理模型的工具,但是没有页面交互,所以我们需要通过终端来操作。

先进入「Models」页面,选择适合的模型。

ollama模型页面

点击相应的模型进入详情页,可看到用于终端运行该模型的命令语句,点击复制然后去终端粘贴即可。

模型详情页

在终端运行该模型后,我们就可以直接在终端与相应模型进行对话了。

ollama终端交互效果演示

3.安装AnythingLLM

在终端虽然可以和大模型交互,但是终归是不太方便的。AnythingLLM则提供了可以和大模型交互的页面,同时它也是一个全栈应用程序,提供了多种功能,旨在为用户打造属于个人的AI智能助手。官网:https://useanything.com/

同样选择适合自己的版本下载即可。

AnythingLLM官网

4.AnythingLLM基本配置

首先配置好大模型,这里我们选择自己在ollama下载的模型即可。

AnythingLLM 配置页面(1)

另外两个配置我都使用的AnythingLLM默认的配置

AnythingLLM 配置页面(2)

5.创建Workspace,并上传知识库内容

AnythingLLM的会话,分不同的Workspace,每个Workspace可以单独根据需要进行一些基础设置。

创建好后可以直接上传知识库内容。

Workspace的创建和知识库内容上传

可以看到这里支持上传文档,也支持网页内容,并且支持多个文档内容上传。

知识库内容上传

上传后还需要选择哪些文档在当前Workspace中嵌入,嵌入成功后即可基于知识库内容和大模型进行交流。

开始前要把当天聊天区设置成「查询」模式,这样问答就默认基于上传内容展开。

Workspace设置

6.问答效果

我是在汽车流通协会上找了一篇文章,复制文字保存成PDF上传的(txt应该也可以,可惜Mac不好创建就搞的麻烦了一点),可以看到问答效果还算挺好的。这里我用的是qwen2 7b那个大模型,0.5的试了一下,完全答非所问😂。

问答效果

总结:

这只是本地搭建知识库的基本入门版,跑下来发现,要想效果好,还是得电脑配置高啊,我这个丐版电脑跑着有点难受了😭。如果不是企业级隐私的知识库,也可以考虑用一些免费的云端大模型API。我在AnythingLLM中配置了Groq的API key,试用了一下速度非常快。不过免费的对短时间内请求的次数还是有些限制的,好在Groq可以几个模型来回切换用,一般情况下我感觉是够用的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容