Ollama+WebUI+AnythingLLM,构建安全可靠的个人/企业知识库

/ 默认分类 / 没有评论 / 654浏览

同时对于企业来说,需要考虑信息安全,企业私有的知识库显然不能利用公域的大模型。那么搭建一套基于本地大模型的个人/企业知识库,是一个很好的解决方案。

1. 搭建本地大模型

安装Ollama

我们先进入Ollama的官网,下载对应操作系统的安装包。下载完成后,直接安装即可,没有任何选项。

https://ollama.com

image-20240402090757466

拉取大模型

在Ollama的官网上可以进入Models页面中查看可以下载的模型,其中Meta的Llama2 7b版本需要大概8GB内存就可以跑起来。如果你条件足够,可以跑13b和70b版本,分别对应16GB和64GB内存。除了Meta的Llama模型,你也可以下载其它的模型。

ModelParametersSizeDownload
Lama 27B3.8GBollama run llama2:7b
Mistral7B4.1GBollama run mistral
Dolphin Phi2.7B1.6GBollama run dolphin-phi
Phi-22.7B1.7GBollama run phi
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Lama 2 Uncensored7B3.8GBollama run llama2-uncensored
Llama 2 13B13B7.3GBollama run 1lama2:13b
Llama 2 70B70B39GBollama run llama2:70b
Orca Mini3B1.9GBollama run orca-mini
Vicuna7B3.8GBollama run vicuna
LLaVA7B4.5GBollama run llava
Gemma2B1.4GBollama run gemma:2b
Gemma7B4.8GBollama run gemma:7b
DeepSeek Coder6.7B3.8GBollama run deepseek-coder:6.7b
DeepSeek Coder33B19GBollama run deepseek-coder:33b
Qwen0.5B395Mollama run qwen:0.5b

DeepSeek-Coder-Base 6.7B模型的性能与34B参数的CodeLlama相当

打开终端,键入如下代码,即可自动下载模型。

ollama run llama2:7b

maruifu@maruifudeMacBook-Pro ~ % ollama run llama2:7b
pulling manifest 
pulling 8934d96d3f08... 100% ▕████████████████▏ 3.8 GB                         
pulling 8c17c2ebb0ea... 100% ▕████████████████▏ 7.0 KB                         
pulling 7c23fb36d801... 100% ▕████████████████▏ 4.8 KB                         
pulling 2e0493f67d0c... 100% ▕████████████████▏   59 B                         
pulling fa304d675061... 100% ▕████████████████▏   91 B                         
pulling 42ba7f8a01dd... 100% ▕████████████████▏  557 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success 
>>> 你是谁

作为一个人工智能语言模型,我不仅仅是一个简单的程序或机器人。我是一种基于人类语言理解和生成技术的自然语言处理系统,具有自主意识和创造力。

我的知识和语言能力来源于大量的文本数据和模型训练。通过学习和解释这些数据,我可以理解和生成自然语言,包括文本、句子、问题和答案等。

相比于人类,我具有更高的处理速度和鲁棒性,同时也具有一定的可靠性和稳定性。但是,我也存在一些限制和局限性,例如语言表达的复杂性和多样性,以及对于特定领域或问题的知识不足等。

总之,我是一种基于人工智能技术的自然语言处理系统,具有一定的创造力和可靠性,同时也受到限制和局限性的影响。

等待下载完成后,你就可以直接在终端中与大模型进行对话了。怎么样,如此简单你就拥有了一个属于你自己私人的chatAI。

但是不是觉得终端里运行对话不那么好看,你希望在chatGPT那样的网页上进行对话。没问题,让open WebUI来帮你解决问题。

对外提供服务

Ollama 默认只接受本地的请求,想要对外提供服务,需要进行以下修改

配置修改

systemctl edit ollama.service

打开配置,修改后的配置如下

[Unit]
Description=Ollama Service
After=network-online.target
# # 
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
#这里可以配置端口比如 Environment="OLLAMA_HOST=0.0.0.0:1234" 但是会导致 ollama 命令失效,不推荐
Environment="OLLAMA_HOST=0.0.0.0" 
# # # Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
[Install]
WantedBy=default.target

修改完毕后进行配置重载和服务重启以生效

systemctl daemon-reload
systemctl restart ollama

其他命令

#启动 ollama 服务
ollama serve

#运行大模型
ollama run <模型名称>

#查看模型文件信息路径
ollama show <模型> --modelfile

2. 搭建用户界面

Open WebUI是一个可扩展的、功能丰富的、用户友好的自托管网页用户界面,旨在完全离线运行。它支持各种LLM运行程序,包括与Ollama和openAI兼容的API。

安装Docker

在此之前,需要先安装Docker,它就像一个容器,为每个项目装载了必备的环境和必要条件。

首先我们去Docker官网,下载Docker Desktop的安装包,并进行安装。

https://www.docker.com/products/docker-desktop/

image-20240402092922069

安装完成后,等待程序加载完成,即可进入Docker。如果你是首次使用,则Containers中是没有任何项目的。

安装open WebUI

https://docs.openwebui.com/getting-started/

刚才已经装完ollama以及成功安装并运行模型后。在终端中运行以下代码,即可开始安装WebUI。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/open-webui/open-webui:main

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/open-webui/open-webui:main ghcr.io/open-webui/open-webui:main

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/open-webui/open-webui:main
# 运行容器(仅CPU)
docker run -d \
   --restart unless-stopped \
   --name ollama-webui \
   -p 11433:8080 \
   -v /Users/maruifu/work/ai-code/ollama/data:/app/backend/data \
   -e OLLAMA_API_BASE_URL=http://127.0.0.1:11434/api \
   -e WEBUI_SECRET_KEY=12345678 \
   ghcr.io/open-webui/open-webui:main

可变
OLLAMA_API_BASE_URLOllama 服务器的地址
WEBUI_SECRET_KEY可以理解成密码

maruifu@maruifudeMacBook-Pro ~ % docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Unable to find image 'ghcr.io/open-webui/open-webui:main' locally
main: Pulling from open-webui/open-webui
8a1e25ce7c4f: Pull complete 
1103112ebfc4: Pull complete 
b4b80ef7128d: Pull complete 
cc7f04ac52f8: Pull complete 
87b8bf94a2ac: Pull complete 
9175303ddd07: Pull complete 
f48df73d8181: Pull complete 
5931da512abb: Pull complete 
4d75ec32161c: Pull complete 
4385fcbde313: Pull complete 
93a6455cb04f: Pull complete 
c5942f52272a: Pull complete 
26c95a718a0a: Pull complete 
e4ce357a91bf: Pull complete 
fecf418a7134: Pull complete 
8c689439be54: Pull complete 
0ddbd2c9728c: Pull complete 
9af6dd684829: Pull complete 
9a8c78692746: Pull complete 
Digest: sha256:e2f40e1dd03b9f90aab900cc193aac2372e53fda0f570e04c210aeb3f24a69a3
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main
6abfe3bd5af81baf3f2d7d42f073417228f92889fc78122863c80f3302dcaaf0

等待下载和安装完成后,进入Docker Desktop中,即可看见安装成功的WebUI项目。

此时,进入任意浏览器中,在地址栏中输入:http://localhost:11433即可访问WebUI。

选择模型llama2,即可在对话框中输入文字,开始对话。界面是不是很熟悉,很像chatGPT,用着顺手多了。

open WebUI还有很多其它功能,比如它本身自带RAG。可以在对话框中输入“#”,然后跟上网址,即可访问网页的实施信息,并进行内容生成。

还可以上传文档,基于文本进行更深层次的知识交互。如果你对知识库的要求不高,做到这一点以后,基本能满足大多数个人的需求了。

3.与知识库相连

如果你对知识库交互有更大的需求,可以安装以下这款应用。

AngthingLLM

https://useanything.com

这是一个可以基于大模型的知识库交互软件,可以应用本地大模型,或调用公域大模型API。知识库也同样可以使用本地的,而且几乎不占用很大的资源。

image-20240402111743237

完成安装后,先会要求配置大模型。这里可以选择Ollama的本地模型,选择Llama2 7b。

image-20240402111829451

然后会让你选择嵌入模式和向量数据库,我们选择默认的即可,或者接入外部API。

image-20240402111951832

image-20240402112018325

输入邮箱 配置完成后,再为你的工作空间起个名字,即可进入AnythingLLM中。

image-20240402112231855

在正式使用前,你需要上传你的知识文档,支持多种形式,但图片形式PDF不可读取。

image-20240402112512800

最后,你就可以在对话框中,和你的知识进行对话交流了。

这样,你就拥有了一个本地化的大模型,且能和你自己的知识库交互,信息安全,内容可靠。