- 1、FastGPT 的知识库逻辑
- 1.1 基础概念
- 1.2 FastGPT知识库的导入
- 1.3 FastGPT新建应用
- (1)创建一个知识库助手
- (2)创建一个python开发小助手
- 2、词向量比较测试
- 2.1 开启词向量模型
- 2.2 词向量模型性能比较
- 3、配置好之后的运行
- 3.1 运行大语言模型
- 3.2 开启m3e和bge的词向量模型
- 3.3 开启docker
- 3.4 portainer.io
- 3.5 oneAPI
- 3.6 配置网络端口映射和防火墙规则
这个项目需要有:
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)问答平台