【LLM_05】使用fastgpt搭建本地离线大语言模型(Chatglm3)问答+知识库平台

这个项目需要有:
1、大语言模型:ChatGLM3-6b【可替换成ChatGLM3-6b-32k】
2、词向量模型:m3e、bge【有m3e_base、m3e_large、bge_large等等,可以自行选择性能最好的向量模型】
3、监控和管理docker的工具:Portainer.io
4、系统:ubuntu20(22也一样)
5、配置docker、启动oneAPI、启动FaskGPT【具体步骤请看=》使用fastgpt高效搭建本地离线大语言模型

在这里插入图片描述

1、FastGPT 的知识库逻辑

1.1 基础概念

  • 向量:将人类的语言(文字、图片、视频等)转换为计算机可识别的语言(数组)。
  • 向量相似度:计算两个向量之间的相似度,表示两种语言的相似程度。
  • 语言大模型的特性:上下文理解、总结和推理。

1.2 FastGPT知识库的导入

在这里插入图片描述

在这里插入图片描述

1.3 FastGPT新建应用

在这里插入图片描述

(1)创建一个知识库助手

在这里插入图片描述
在这里插入图片描述
知识库小助手的工作流如上图所示:用户提问之后,根据问题首先从知识库当中匹配相似度高的答案【这里匹配使用的是词向量模型:m3e、bge等等】,之后将匹配的结果告诉大语言模型chatglm3,之后有chatglm3整理答案之后返回给用户最终的答案。

(2)创建一个python开发小助手

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
python开发小助手的工作流如上图所示:这个就比知识库小助手的更加简单了,只需要用户提问,之后再让大语言模型回答即可。

2、词向量比较测试

2.1 开启词向量模型

开启bge_large

在这里插入图片描述
在这里插入图片描述
开启m3e_base
在这里插入图片描述
开启m3e_large

在这里插入图片描述

2.2 词向量模型性能比较

首先新建一个知识库
在这里插入图片描述

选择一个词向量模型
在这里插入图片描述
在这里插入图片描述
默认会显示知识库数据当中前20个相似度的文本
我这里测试就是根据知识库的内容随机选择了5条数据,查看不同的向量模型对应的相似度匹配排名,我使用的数据都是询问命令的,包含一定的中英文
总结一下使用的m3e_base、m3e_large、bge_large这三者之间的性能:

  • m3e_base:中等,比bge差一些
  • m3e_large:最差,仅有一条能够查询的到
  • bge_large:最好,能够查询得到的结果最多

3、配置好之后的运行

3.1 运行大语言模型

在这里插入图片描述
想要将chatglm3-6b换成chatglm3-6b-32k也很简单,只需要将路径修改一下即可【当前前提是你把模型下载之后放在指定的路径下面】:
在这里插入图片描述

在这里插入图片描述

3.2 开启m3e和bge的词向量模型

看2.1

3.3 开启docker

在这里插入图片描述

3.4 portainer.io

在这里插入图片描述

3.5 oneAPI

在这里插入图片描述

3.6 配置网络端口映射和防火墙规则

::强制获取管理员运行权限
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
wsl -d Ubuntu-18.04 -u root ip addr add 1.1.1.11/24 broadcast 1.1.1.255 dev eth0 label eth0:1

netsh interface portproxy reset

netsh interface ip add address "vEthernet (WSL)" 10.10.10.88 255.255.255.0

netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=3000 connectaddress=10.10.10.10 connectport=3000
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=3001 connectaddress=10.10.10.10 connectport=3001
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=3002 connectaddress=10.10.10.10 connectport=3002
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=3003 connectaddress=10.10.10.10 connectport=3003
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=9999 connectaddress=10.10.10.10 connectport=9999
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=88 connectaddress=10.10.10.10 connectport=88
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=443 connectaddress=10.10.10.10 connectport=443
netsh interface portproxy add v4tov4 listenaddress=111.168.110.13 listenport=9000 connectaddress=10.10.10.10 connectport=9000
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=30004 connectaddress=10.10.10.10 connectport=30004
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=3000 connectaddress=10.10.10.10 connectport=3000
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=3001 connectaddress=10.10.10.10 connectport=3001
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=3002 connectaddress=10.10.10.10 connectport=3002
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=3003 connectaddress=10.10.10.10 connectport=3003
netsh interface portproxy add v4tov4 listenaddress=111.168.110.6 listenport=9999 connectaddress=10.10.10.10 connectport=9999


netsh advfirewall firewall add rule name="Open Port 3001 for WSL2" dir=in action=allow protocol=TCP localport=3001
netsh advfirewall firewall add rule name="Open Port 3000 for WSL2" dir=in action=allow protocol=TCP localport=3000
netsh advfirewall firewall add rule name="Open Port 3002 for WSL2" dir=in action=allow protocol=TCP localport=3002
netsh advfirewall firewall add rule name="Open Port 3000 for WSL2" dir=in action=allow protocol=TCP localport=3003
netsh advfirewall firewall add rule name="Open Port 3002 for WSL2" dir=in action=allow protocol=TCP localport=9999
netsh advfirewall firewall add rule name="Open Port 88 for WSL2" dir=in action=allow protocol=TCP localport=88
netsh advfirewall firewall add rule name="Open Port 443 for WSL2" dir=in action=allow protocol=TCP localport=443
netsh advfirewall firewall add rule name="Open Port 9000 for WSL2" dir=in action=allow protocol=TCP localport=9000
netsh advfirewall firewall add rule name="Open Port 30004 for WSL2" dir=in action=allow protocol=TCP localport=30004


netsh interface portproxy show all

参考链接:

1、使用fastgpt高效搭建本地离线大语言模型(Chatglm2)问答平台

  • 22
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温欣2030

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值