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

news2024/11/29 18:33:45

  • 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)问答平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1290880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python二维数组创建赋值问题:更改单个值却更改了所有项的值

test_list [] dic1 {} test_list [dic1 for _ in range(3)] ll [1, 2, 3]for i in range(3):test_list[i][value] ll[i]print(test_list)运行结果:每次赋值都更改了所有项 原因:python的二位数据创建方式就是这样,官方文档中有描述Wha…

数据结构初阶之二叉树性质练习与代码练习

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞,评论,收藏。 一起努力,共赴大厂。 目录 1.前言 2.性质练习 3…

嵌入式学习---ARM中断控制系统

目录 外部事件与CPU的交互方式查询方式中断方式 什么是中断源S3C2440支持60个中断源FIQ和IRQ 中断处理流程将外设中断通知给CPUSUBSRCPND寄存器INTSUBMSK寄存器SRCPND寄存器INTMSK寄存器INTMOD寄存器INTPND寄存器 硬件中断处理是实时系统设计的最重要、最关键的问题。 外部事件…

Ubuntu22.04通过Maas和Juju部署openstack charm

目录 官方文档材料准备软件硬件 模板机和虚拟网络安装MAAS官方文档MAAS节点配置安装MAAS浏览器登录MAAS进行配置 激活DHCP 官方文档 https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/ 这是一个通过Maas面板即可部署openstack的方式&#xff0…

CTF特训日记day7

复现华为杯研究生国赛的adv_lua题目 从题目描述来看,漏洞应该和bytearray相关 用IDA逆向一下然后直接字符串搜索bytearray 只有这里有bytearray字样,继续查找交叉引用: 可以看到一系列方法,显然都是为bytearray所注册的吗&am…

smarty模版 [BJDCTF2020]The mystery of ip 1

打开题目 点击flag给了我们一个ip 点击hint,查看源代码处告诉了我们要利用这个ip bp抓包,并添加X-Forward-For头 所以这道题是XFF可控 本来联想到XFF漏洞引起的sql注入,但是我们无论输入什么都会正常回显,就联想到ssti注入 我们…

区块链密码学:基础知识、应用与未来发展

一、引言 区块链技术,作为一种分布式、去中心化的数据管理方式,密码学在其安全性和可靠性方面发挥着至关重要的作用。本文将详细介绍区块链密码学的基础知识、应用以及未来发展趋势。 二、区块链密码学基础知识 区块链密码学是区块链技术的核心组成部分…

React面试题(1)

1、什么是React? React是一个用于构建用户界面的JavaScript库。 2、React的特点是什么? React的主要特点包括: 组件化虚拟DOM单向数据流JSX语法高效的性能生态系统丰富 3、什么是JSX? JSX是一种JavaScript的语法扩展&#x…

2023年12月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先,来看下效果图 在线体验地址:https://geojson.hxkj.vip,并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

Linux shell编程学习笔记33:type 命令

目录 0 引言1 type 命令的功能和格式 1.1 type命令的功能1.2 type 命令的格式2 type命令用法实例 2.1用type命令查看shell内置命令(以echo命令为例)2.2 用type命令查看别名(以ls命令为例)2.3 用type命令同时查看shell内置命令和别…

Ros智行mini,opencv,Gmapping建图,自主导航auto_slam,人脸识别,语音控制

功能 一、Gmapping建图 二、自主导航 起始点 、终点 三、人脸识别 四、语音控制 完成任务: 机器人先建图 建完图后给出目标点,机器人就可以完成调用自主导航走到目标点,期间会调用激光雷达扫描局部环境来进行自主避障,到达终点后进行语音…

UVM建造测试用例

(1)加入base_test 在一个实际应用的UVM验证平台中,my_env并不是树根,通常来说,树根是一个基于uvm_test派生的类。真正的测试用例都是基于base_test派生的一个类。 class base_test extends uvm_test;my_env e…

rpm安装gitlab

1.rpm包下载 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 2.进行安装 rpm -ivh gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm --nodeps --force 3.配置访问地址 vim /etc/gitlab/gitlab.rb 4.重新加载配置以及重启服务 gitlab-ctl reconfiguregitlab-ctl resta…

指针(进阶)

指针进阶: 通过指针基础我们已经了解了指针,这篇文章我们会举大量的例子,使我们对指针透彻理解,我们下来看一段代码: int main() {char a[] "ab";char* pc a;printf("%c\n", *pc);printf("…

指定分隔符对字符串进行分割 numpy.char.split()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 指定分隔符对字符串进行分割 numpy.char.split() 选择题 请问下列程序运行的的结果是: import numpy as np print("【执行】np.char.split(I.Love.China, sep .)") p…

GNSEC 2022年第8届全球下一代软件工程线上峰会-核心PPT资料下载

一、峰会简介 新一代软件工程是指利用新的理论、方法和技术,在软件开发、部署、运维等过程中,实现软件的可控、可预测、可维护的软件生产方式。它涵盖了多个领域,如软件开发、测试、部署、运维等,旨在提高软件生产效率和质量。 …

13款趣味性不错(炫酷)的前端动画特效及源码(预览获取)分享(附源码)

文字激光打印特效 基于canvas实现的动画特效&#xff0c;你既可以设置初始的打印文字也可以在下方输入文字可实现激光字体打印&#xff0c;精简易用。 预览获取 核心代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

Windows server 部署iSCSI共享磁盘搭建故障转移群集

在域环境下&#xff0c;在域控制器中配置iSCSI服务&#xff0c;配置共享网络磁盘&#xff0c;在节点服务器使用共享磁盘&#xff0c;并在节点服务器中搭建故障转移群集&#xff0c;实现故障转移 环境准备 准备3台服务器&#xff0c;配置都是8g2核&#xff0c;50g硬盘&#xf…

SpringBoot 属性配置解析

属性配置介绍 spring官方提供的17中属性配置的方式 Devtools全局配置测试环境TestPropertySource注解测试环境properties属性命令行参数SPRING_APPLICATION_JSON属性ServletConfig初始化参数ServletContext初始化参数JNDI属性JAVA系统属性操作系统环境变量RandomValueProperty…

9大高效的前端测试工具与框架!

在每个Web应用程序中&#xff0c;作为用户直接可见的应用程序外观&#xff0c;“前端”包括&#xff1a;图形化的用户界面、相应的功能、及其整体站点的可用性。我们可以毫不夸张地说&#xff1a;如果前端无法正常工作&#xff0c;您将无法“拉新”网站的潜在用户。这也正是我们…