本地部署Llama3并构建私人知识库进行问答

Meta于上个月发布了Llama3大语言模型,其技术文档里提到,Llama3 8B版本的性能相比同规模的开源模型强出不少,而后网友测试显示Llama3 70B的性能甚至不逊于早期版本的GPT4。开源、可本地运行的大语言模型给了我们更多关于LLM使用场景的想象。包括但不限于:

  • 在本地与GPT3.5级别的LLM聊天;
  • 调用本地模型的api进行文本分析,如情感识别、文本分类;
  • 构建私人知识库,进行问答。

在最新的大模型竞技场中(https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard),Llama3 70B的排名在GPT-4-0314之前,Llama3 8B也超越了GPT-3.5-Turbo。

现在,就让我们在本地部署Llama3 8B并构建私人知识库,进行简单试用吧!

我的设备:2021款 Macbook Pro 16G + 1T,处理器为M1 Pro基础款。

其实我更想在本地部署Llama3 70B,但这需要发动钞能力,而我目前只是个社科土博,等后面吧。

1 利用Ollama和Open WebUI使用本地LLM

1.1 基于Ollama本地部署Llama3 8B

Ollama是一个简易的LLM本地部署工具,可直接在Ollama官方网站下载安装。

Ollama官方网址:https://ollama.com/

Ollama的Github仓库:https://github.com/ollama/ollama

Ollama官方提供了许多模型供大家部署,在模型页面,可以找到Llama3,我这里下载的是8B的instruct版本,大小为4.7GB:

Terminal运行ollama run llama3:70b,等待模型在本地部署完成。模型部署完成后已经可以在终端进行对话了,但过于简陋,我们可以用WebUI装潢一下。

1.2 部署Open WebUI

Open WebUI也是一个Github项目,它对基于Ollama部署的模型,提供了类ChatGPT的UI支持!

Github仓库:https://github.com/open-webui/open-webui

在这里,我们使用Open WebUI官方推荐的Docker安装方式(相见官方文档):

1
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

安装完成后,在浏览器3000端口可以打开WebUI,注册登陆,网站布局是不是很熟悉?和ChatGPT很像!在设置里,Connections填写Ollama的地址:http://host.docker.internal:11434

在对话之前,点击顶部的+选择模型。如果使用Ollama安装了多个模型,则都会显示出来。

我们测试几个问题,由于Llama3对中文的支持比较差,我们在提问时,需要加上让它使用中文回答的提示词:

可以发现,它对这个问题的回答,给了我们熟悉的GPT3.5的感觉,本质就是胡说八道

再问一个:

再来挑战几个弱智吧问题,居然回答得还不错:

如果使用英语提问,并且问题不涉及事实问题,它的回答质量会高很多:

即使在GPT时代,用好英语,仍然非常有必要。

1.3 Llama3 对话体验

就Llama3 8B而言,我感觉使用体验已经很不错了,对话流畅度完全没有问题,配合文本转语音,日常练习口语非常可用!

如果可以在本地部署Llama3 70B的话,使用体验会更上一层楼。我在Groq试用过Llama3 70B,其对于涉及事实问题的回答会好很多:

2 构建私人知识库并进行问答

现在市面上有许多基于RAG(检索增强生成,Retrieval-Augmented Generation,RAG)的工具,方便构建本地知识库,并进行问答。我试用过的有:

Dify:https://github.com/langgenius/dify

ChatOllama:https://github.com/sugarforever/chat-ollama

MaxKB:https://github.com/1Panel-dev/MaxKB

整体而言,使用体验都比较差!!!但作为一种可能的方向,或许在未来有很大的改进效果,这里先以MaxKB试试看。

2.1 部署MaxKB

使用MaxKB官方提供的一键安装命令即可:

1
2
3
4
docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data 1panel/maxkb

# 用户名: admin
# 密码: MaxKB@123..

安装完成后,可以在本地的8080端口打开,登陆信息使用默认的就行:

进入后,在设置里,“模型设置”添加Ollama部署的Llama3,信息如下,其中API Key可以随便填:

现在,我们已经完成了简单配置,已经可以使用MaxKB进行问答了(也就是说,MaxKB也可以作为简单的UI使用):

2.2 搭建私人知识库并进行问答

在这里,我简单构建了两个知识库,一个是我的博客,一个是一个特定主题(政治信任)的10篇论文,按要求提交内容即可:

自动获取的博客内容如下:

导入pdf后,MaxKB需要一段时间进行文档处理:

现在,进行问答试试,先配置一下:

在问题和文档强相关,尤其是直接涉及知识库论文的标题的时候,它是会索引知识库内容的,但回答的结果质量不高:

何为Missing women这个问题,我在博客有直接的内容,但它在回答时并没有引用:

再用中文试一次,效果仍然比较差:

3 总结

最新的Llama3,基础版本在对话方面,已经非常可用,相当于本地有了一个随时可以聊天的助手。

在构建私人知识库进行问答方面,我试的几个工具,目前都还处于不太可用的状态,我调过一些参数,也尝试了使用Markdown文本的知识库,都不OK。

期待早日这类工具能更完善些,或者LLM运营商提供私人知识库服务。

更期待Llama3 70B级别的LLM能在本地便捷地运行起来。

如果您在这方面有经验,也请随时和我交流!不胜感激!


本地部署Llama3并构建私人知识库进行问答
https://yuzhang.net/2024/05/14/20240514-本地部署llama3和构建私人知识库进行问答/
作者
Yu Zhang
发布于
2024年5月14日
许可协议