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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis ziplist源码解析

area |<---- ziplist header ---->|<----------- entries ------------->|<-end->|size 4 bytes 4 bytes 2 bytes ? ? ? ? 1 byte--------------------------------------------------------------- comp…

多人聊天UDP

服务端 package 多人聊天;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;…

第十六届山东省职业院校技能大赛中职组网络安全赛项竞赛正式试题

第十六届山东省职业院校技能大赛中职组网络安全"赛项竞赛试题 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段任务阶段竞赛任务竞赛时间分值A、B模块A-1登录安全加固180分钟200分A-2本地安全策略设置A-3流量完整性保护A-4事件监控A-5服务加固A-6防火墙策…

Error: Could not create the Java Virtual Machine(Linux启动tomcat成功后找不到进程8080端口)

文章目录 问题解决问题过程Tomcat版本要求 问题解决 版本冲突&#xff0c;我的jdk是1.8.x&#xff0c; tomcat 是 10.1.x的&#xff0c;要求jdk是11。 问题过程 运行 ./startup.sh 显示如下&#xff1a; 还以为运行成功呢&#xff0c; 使用命令一查&#xff0c;根本查不到进…

C语言进阶之路之内存镜像与字符操作函数篇

目录 一、学习目标&#xff1a; 二、内存镜像 什么是进程 C进程内存布局 栈内存 静态数据 数据段&#xff08;存储静态数据&#xff09;与代码段 堆内存 三、字符操作函数 函数strstr 函数strlen strlen与sizeof的区别 函数strtok 函数strcat与strncat 函数strc…

记录 | python向上取整和向下取整

python 向上取整和向下取整 向上取整 使用 ceil()&#xff1a; import mathx 0.55 x0 math.ceil(x)向下取整 使用 floor()&#xff1a; import mathx 0.55 x1 math.floor(x)如下&#xff1a;

群聊Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

VR远程带看,助力线下门店线上化转型“自救”

VR远程带看&#xff0c;因自身高效的沉浸式在线沟通功能&#xff0c;逐渐走进了大众的视野。身临其境的线上漫游体验以及实时同屏互联的新型交互模式&#xff0c;提升了商家同用户之间的沟通效率&#xff0c;进一步实现了远程线上一对一、一对多的同屏带看&#xff0c;用户足不…

封装校验-----Vue3+ts项目

登录校验页面 <script setup lang"ts"> import { ref } from vue import { mobileRules, passwordRules } from /utils/rules const mobile ref() const password ref() </script><!-- 表单 --><van-form autocomplete"off">&l…

使用Draw.io制作泳道图

使用Draw.io制作泳道图 一、横向泳道图1. 有标题泳道图2. 无标题泳道图3. 横纵向扩展泳道 二、纵向泳道图三、横纵交错地泳道图想做这样的图具体步骤1. 拖拽一个带标题的横向泳道图2. 拖拽一个带标题的单一图&#xff0c;并且把它放进Lane1中3. 其他注意 四、下载文件说明 一、…

CSS的逻辑组合伪类

CSS 的逻辑组合伪类有 4 种&#xff0c;分别是&#xff1a;:not()、:is()、:where()和&#xff1a;has()。 否定伪类:not() :not 伪类选择器用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中&#xff0c;它也被称为反选伪类&#xff08;negation pseudo-…

走迷宫(详细分析)

目录 一、课题描述 输入样例&#xff1a; 输出样例&#xff1a; 二、需求分析 输入的形式和输入值的范围&#xff1a; 输出的形式&#xff1a; 程序所能达到的功能&#xff1a; 三、概要设计 四、流程图 五 、代码详细注释 六、测试数据和结果 一、课题描述 以一个…

2024年江苏省职业院校技能大赛信息安全管理与评估 第三阶段学生组(样卷)

2024年江苏省职业院校技能大赛信息安全管理与评估 第三阶段学生组&#xff08;样卷&#xff09; 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第三阶段样题&#xff0c;内容包括&#xff1a;网络安全渗透、理论技能与职业素养。 本次比赛时间为180分钟。 介绍 GeekSe…

上海亚商投顾:沪指窄幅震荡 多只高位股午后跳水

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡&#xff0c;创业板指冲高回落。锂电池板块集体反弹&#xff0c;西藏矿业、吉翔股份、永兴材…

01-Redis核心数据结构与高性能原理

一、Redis的单线程和高性能 1. Redis是单线程吗&#xff1f; Redis的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的&#xff08;说白了也就是执行命令的时候是由一个线程来完成的&#xff09;&#xff0c;这也是 Redis 对外提供键值存储服务的主要流程。…

基于epoll实现Reactor服务器

了解epoll底层逻辑 在我们调用epoll_create的时候会创建出epoll模型&#xff0c;这个模型也是利用文件描述类似文件系统的方式控制该结构。 在我们调用epoll_create的时候&#xff0c;就会在内核管理中创建一个epoll模型&#xff0c;并且建管理模块地址给file结构体&#xff…

python数据分析基础

前言 2023年10月以来&#xff0c;一位在商学院就读的可爱同学遇上了一门课——python数据分析&#xff0c;并遇到了许多问题&#xff0c;找上了我&#xff0c;就此&#xff0c;我也开始了学习之路&#xff0c;虽然很浅显&#xff0c;但这些东西对部门同学来说也是受用的&#…

TypeScript中的单件设计模式

基本概念 &#xff08;1&#xff09; 了解设计模式 设计模式通俗的讲&#xff0c;就是一种更好的编写代码方案&#xff0c;打个比喻&#xff1a;从上海到武汉&#xff0c;你可以选择做飞机&#xff0c;做轮船&#xff0c;开车&#xff0c;骑摩托车多种方式&#xff0c;把出行…

短视频购物系统源码:构建创新购物体验的技术深度解析

短视频购物系统作为电商领域的新宠&#xff0c;其背后的源码实现是其成功的关键。本文将深入探讨短视频购物系统的核心技术和源码设计&#xff0c;以揭示其如何构建创新购物体验的技术奥秘。 1. 技术架构与框架选择 短视频购物系统的源码首先考虑的是其技术架构。常见的选择…

ExoPlayer架构详解与源码分析(10)——H264Reader

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…