当前位置: 首页 > news >正文

基于Lang-Chain(ChatGLM和ChatChat)知识库大语言模型的部署搭建

环境准备

阿里云个人认证后,可免费试用机器学习平台PAI,可提供适合大语言模型环境搭建的高配置服务器。
点击试用阿里云服务器

试用产品选择:选择交互式建模PAI-DSW

适合哪些场景

  • 文章/知识库/帮助文档等的检索
  • 基于现有知识库实现问答

实践

Lang-Chain(ChatGLM)的搭建和测试

Lang-Chain(ChatGLM)为Lang-Chain系列0.1版本。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

本教程的实现过程包括加载文本->读取文本->文本分割->文本向量化->问句向量化->在文本向量中匹配出与问句向量最相似的Top k个答案->匹配出的文本作为上下文和问题一起添加到Prompt中->提交给LLM生成回答。

image.png

从文档处理角度来看,实现流程如下:

image.png

具体操作步骤可移步阿里云官方文档,按步骤操作下来即可。
基于LangChain的检索知识库问答

部署完成之后,我们就有了一个属于自己的智能问答库了。

使用体验如下:

  • 本地知识库文件:没有固定格式,一段文字即可。
  • 对于知识库已有的类似文本,模型可根据白话输入给出答复结果,准确度相对还较高,模型有时会自行进行扩展,其中扩展部分不一定准确。
  • 对于从未有的问题,大模型会结合现有的内容给出答案,但也有可能是错误的答案。
  • 对于准确性要求较高或规则性的结果,需要对输入、输出做二次处理。

初步查看,0.1版本的交互为websocket,没有发现openAPI等接口,和现有项目结合较为复杂,需要改造,所以需要部署0.2版本的ChatChat。

Lang-Chain(ChatChat)的搭建和测试

我们可以继续试用阿里云免费三个月的服务器,但是不采用其内置的模板进行搭建,我们自行搭建部署测试。

可在github上搜索Langchain-Chatchat,根据文档进行部署,如果网速不太好,可在码云gitee上搜索该关键字也可以。由于官方文档在实际的部署过程中,还碰到一些非技术上的问题,所以把自己部署的过程整理如下。

环境准备

阿里云免费试用的服务器已安装了基础的环境,我们只需要在此基础上进行后续的操作。

  1. Python 3.8 - 3.10 版本
    python --version
  2. 更新py库
    pip3 install --upgrade pip
  3. 拉取仓库
    git clone https://github.com/chatchat-space/Langchain-Chatchat.git
  4. 进入目录,安装全部依赖
    cd Langchain-Chatchat
    pip install -r requirements.txt
    默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

下载模型至本地(重要)

如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。
但是大部分时间该网络不可达。

以本项目中默认使用的 LLM 模型 chatglm2-6b 与 Embedding 模型 m3e-base 为例。

  • 下载chatglm2-6b
    可结合如下两个地址进行下载:
    https://aliendao.cn/models/THUDM/chatglm2-6b
    https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b%2F&mode=list
    由于清华大学的镜像站中不全,所以小的文件可以在aliendao这个镜像站下载,大的文件在tsinghua镜像站下载,速度快。
    通过wget命令下载到服务器的某一目录即可。

  • 下载m3e-base
    m3e-base模型目前发现只能在该镜像站下载https://aliendao.cn/models/moka-ai/m3e-base
    不过该模型不是很大,1个小时左右即可下载完成,下载到服务器的某一目录即可。

设置配置项

  1. 将Langchain-Chatchat/configs目录下所有的*.example文件复制一份,并去掉.example
  2. 修改configsmodel_config.py配置文件,确认已下载至本地的 LLM 模型本地存储路径写在llm_model_dict对应模型的 local_model_path 属性中,如: "chatglm2-6b": "/Users/xxx/Downloads/chatglm2-6b",确认已下载至本地的 Embedding 模型本地存储路径写在 embedding_model_dict对应模型位置,如:
    "m3e-base": "/Users/xxx/Downloads/m3e-base"

知识库初始化

如果您是第一次运行本项目,知识库尚未建立,或者配置文件中的知识库类型、嵌入模型发生变化,或者之前的向量库没有开启 normalize_L2,需要以下命令初始化或重建知识库:$ python init_database.py --recreate-vs

一键启动 API 服务或 Web UI

python startup.py -a
其中:

  • –all-webui 为一键启动 WebUI 所有依赖服务;
  • –all-api 为一键启动 API 所有依赖服务;
  • –llm-api 为一键启动 Fastchat 所有依赖的 LLM 服务;
  • –openai-api 为仅启动 FastChat 的 controller 和 openai-api-server 服务;

若想指定非默认模型,需要用--model-name选项,示例:
python startup.py --all-webui --model-name Qwen-7B-Chat

各服务地址

  1. startup 脚本用多进程方式启动各模块的服务,可能会导致打印顺序问题,请等待全部服务发起后再调用,并根据默认或指定端口调用服务(默认 LLM API 服务端口:127.0.0.1:8888,默认 API 服务端口:127.0.0.1:7861,默认 WebUI 服务端口:本机IP:8501)

  2. 服务启动时间示设备不同而不同,约 3-10 分钟,如长时间没有启动请前往 ./logs目录下监控日志,定位问题。

  3. 在Linux上使用ctrl+C退出可能会由于linux的多进程机制导致multiprocessing遗留孤儿进程,可通过shutdown_all.sh进行退出

我们可以在web ui界面上上传本地知识库,进行调试和测试。

相关文章:

基于Lang-Chain(ChatGLM和ChatChat)知识库大语言模型的部署搭建

环境准备 阿里云个人认证后,可免费试用机器学习平台PAI,可提供适合大语言模型环境搭建的高配置服务器。 点击试用阿里云服务器 试用产品选择:选择交互式建模PAI-DSW 适合哪些场景 文章/知识库/帮助文档等的检索基于现有知识库实现问答… …...

个人轻博客PHP开源系统/溯雪Sxlog轻博客源码/洁干净轻/占内存极低/php源码

源码简介: 溯雪(sxlog)它是一款很简洁越低内存的轻博客程序,整个程序包不到200KB,占内存极小,比一张照片都要小很多。简洁高效,占用空间内存极小,而且它不依赖任何数据库,不依赖富文本编辑器&a…...

2.Vue-从零开始搭建一个vue项目

题记 从零开始搭建一个vue项目,以下是操作的全过程。 安装Vue CLI脚手架 打开终端,运行以下命令全局安装Vue CLI脚手架: npm install -g vue/cli 查看 Vue CLI脚手架版本: vue -V 注意:查看vue版本的命令不是vue -V&a…...

快速构建代理应对

今天我要和大家分享一个解决反爬策略升级问题的方法,那就是快速构建代理池。如果您是一位爬虫开发人员,一定深知反爬策略的烦恼。但是,通过构建代理池,您可以轻松地应对反爬策略的升级,让您的爬虫持续高效运行。接下来…...

【LeetCode刷题(数据结构)】:另一颗树的子树

给你两棵二叉树 root 和 subRoot 检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子…...

LeetCode 2903. 找出满足差值条件的下标 I【双指针+维护最大最小】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

【神经网络】如何在Pytorch中从零开始将MNIST网络量化为8位

论文: Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference 下载地址:https://arxiv.org/pdf/1712.05877.pdf 更新:量化感知训练的博客文章是在线的,并在这里链接,通过它我们可以训…...

智慧水利:山海鲸数字孪生的革新之路

一、概念 什么是港口? "港口"通常指的是一个水域或岸边的设施,用于装载、卸载、储存和处理货物、以及提供与海上、河流或湖泊交通相关的服务。港口可以包括各种类型的码头、码头设备、仓库、货物运输设施、以及各种管理和物流设施。 什么是数…...

【unity】【VR】白马VR课堂系列-VR开发核心基础04-主体设置-XR Rig的引入和设置

接下来我们开始引入并构建XR Rig。 你可以将XR Rig理解为玩家在VR世界中的替身。 我们先删除Main Camera,在Hierarchy右键点击删除。 然后再在场景层右键选择XR下的XR Origin。这时一个XR Origin对象就被添加到了Hierarchy。 重设XR Origin的Position和Rotation…...

Arcgis实现Tiff合并

Arcgis实现Tiff合并 现有四幅Tiff影像 打开数据管理工具 输入使用这四幅影像 下面这个就是建立数据库,这个不对 点击确定 合成完毕...

将已有jar包放进maven仓库

mvn install:install-file -DfileD:\sapjco3.jar -DgroupIdcom.sap.conn.jco -DartifactIdsapjco3 -Dversion3.0.14 -Dpackagingjar...

从0开始学go第八天

gin获取URL路径参数 package main//获取path(URL)参数 import ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/:name/:age", func(c *gin.Context) {//获取路径参数name : c.Param(&quo…...

centos7为例进行数据盘挂载详解

以centos7为例进行数据盘挂载的操作演示,挂载一个200G盘 1、切换至root用户 z 2、查看要挂载的硬盘 执行sfdisk -s 或 fdisk -l可以看到有一个200G。 sfdisk -s fdisk -l 需要挂载200G的这块硬盘。 3、执行lvs查看当前的lvm信息 4、执行pvcreate /dev/sdb创建…...

网络安全——自学(黑客技术)

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客&#xff0c…...

Npm——yalc本地库调试工具

全局安装 npm i -g yalc本地库发布 yalc publish项目中安装 yalc add 库名本地库更新后推送 yalc push项目中删除库 yalc remove --all...

【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:为什么Java代码可以实现…...

docker部署的jenkins配置(接口自动化)

目录 一、jenkins汉化1.点击Manage Jenkins(系统管理),点击Plugins(插件)2.安装Locale插件 二、jenkins配置allure报告1.安装allure插件2.配置 三、配置jenkins项目1.新建任务2.创建项目3.源码管理4.构建触发器5.增加构…...

qemu 运行 linux

文章目录 qemu 运行 linuxlinux 内核版本生成配置文件编译设备树编译内核报错与解决运行 linux附录脚本参考 qemu 运行 linux linux 内核版本 linux-6.5.7linux 内核下载地址 https://www.kernel.org/可以在浏览器中点击下载,也可以使用命令行下载 wget https:/…...

线程安全问题 的小案例

package Thread_api_test;public class ThreadSafety {//模拟线程安全问题public static void main(String[] args) {//1:创建一个账户对象 代表两个人的共享账户Account accnew Account("ICBC",10000);//创建两个线程 分别两个人 再去同一个账户里取钱10000new Draw…...

高效PPT制作与演示技巧大揭秘

PPT是职场必备技能,尤其在商务活动中,企业宣传、项目提案、路演宣讲……都需要用好PPT。然而,很多人的PPT效率低、效果差,客户不认可、老板不满意。 PPT不仅是办公软件,更是以汇报对象为中心、以共同的目标为导向、以…...

探究Socks5代理和代理IP在技术领域的多重应用

随着数字化时代的不断发展,网络工程师在跨界电商、爬虫数据采集、出海业务拓展以及游戏优化等领域扮演着关键角色。而Socks5代理和代理IP作为他们的得力工具,在这些领域中发挥着至关重要的作用。本文将深入探讨这两种技术在技术领域中的应用,…...

解决Vue2封装组件含有echarts时多次调用出现id重复问题

解决Vue2封装组件含有echarts时多次调用出现id重复问题 1、前言2、解决方法 1、前言 封装组件中使用echarts时,多次调用导致id重复,出现页面不渲染、数据覆盖等问题。 2、解决方法 把id改成动态传参(这里就不作代码展示了) 把i…...

IntelliJ IDEA 中 Maven 相关操作详解

在这篇文章中,我们将详细探讨 IntelliJ IDEA 中 Maven 的相关操作。我们将从以下三个角度进行讲解: IntelliJ IDEA 中 Maven 插件的 "Reimport All Maven Projects" 和 "Generate Sources and Update Folders For All Projects" 按…...

3分钟,快速上手Postman接口测试!

Postman是一个用于调试HTTP请求的工具,它提供了友好的界面帮助分析、构造HTTP请求,并分析响应数据。实际工作中,开发和测试基本上都有使用Postman来进行接口调试工作。有一些其他流程的工具,也是模仿的Postman的风格进行接口测试工…...

【微前端】single-spa 到底是个什么鬼

前言 说起微前端框架,很多人第一反应就是 single-spa。但是再问深入一点:它是干嘛的,它有什么用,可能就回答不出来了。 一方面没多少人研究和使用微前端。可能还没来得及用微前端扩展项目,公司就已经倒闭了。 另一方…...

log4j2同步日志引发的性能问题 | 京东物流技术团队

1 问题回顾 1.1 问题描述 在项目的性能测试中,相关的接口的随着并发数增加,接口的响应时间变长,接口吞吐不再增长,应用的CPU使用率较高。 1.2 分析思路 谁导致的CPU较高,阻塞接口TPS的增长?接口的响应时…...

vs studio Ctrl+D 快捷键失效(无法复制行)

打开 调试/选项/环境/键盘,然后设置如下 快去试试吧...

数据结构题型18-哈夫曼树和哈夫曼编码

文章目录 1 哈夫曼树定义2 哈夫曼树构造3 哈夫曼编码4 并查集 1 哈夫曼树定义 2 哈夫曼树构造 3 哈夫曼编码 4 并查集 暂不做补充。...

【广州华锐互动】VR模拟电力生产事故,切身感受危险发生

随着科技的不断发展,虚拟现实(VR)技术已经在各个领域中得到了广泛的应用。其中,VR技术在电力安全事故还原中的应用,不仅可以帮助我们更好地理解和预防事故的发生,还可以为事故调查提供更为准确和直观的证据…...

kafka安装和使用的入门教程

这篇文章简单介绍如何在ubuntu上安装kafka,并使用kafka完成消息的发送和接收。 一、安装kafka 访问kafka官网Apache Kafka,然后点击快速开始 紧接着,点击Download 最后点击下载链接下载安装包 如果下载缓慢,博主已经把安装包上传…...

网站免费主机申请/石嘴山网站seo

直接运行django,日志会直接打印到屏幕上,怎么样才能保存到文件中呢首先看到了这篇文章http://www.360doc.com/content/14/0708/10/16044571_392797799.shtml按照正常做就可以保存到文件中了,但是保存的格式非常乱,接下来看看怎么修…...

苏州做网站公司有哪些/淘宝关键词优化技巧

Spring Boot 框架快速入门教程以大量示例讲解了 Spring Boot 在各类情境中的应用,让大家可以跟着老师的思维和代码快速理解并掌握。 适用于 Java 开发人员,尤其是初学 Spring Boot 的人员和需要从传统 Spring 转向 Spring Boot 开发的技术人员。 下边…...

制作应用的网站/盘多多网盘搜索

mysql单向复制为了提高主从服务器的健壮性,我们选择了mysql单向复制的方法,当主服务器宕机时,从服务器依旧可以接管,并且保持数据的相对完整性,而从服务器备份的时候不会干扰到主服务器的工作,可以说是一个…...

网站友情链接模板/在线数据分析工具

并没有人动到/etc/my.cnf这个配置,可能有人动到了权限相关表... 问题: mysql连接时错误信息:Cant get hostname for your address 即navicat就连不上. 原因不必找了,解决问题: [mysqld] skip-name-resolve #加上这一个属性后重启mysql服务就可以了. /etc/init.d/mysql resta…...

微博营销案例/seo网站自动推广

刚开始开发项目的时候,我一直都在用火狐,因为它有一个fireBug插件,特别好用(目前已不支持),也不知道什么时候,就一直用起来Chrome浏览器了,可能是因为它有强大的插件作为后盾吧。开发了这么多年&#xff0c…...

怎么做网站底部版权信息/目前最牛的二级分销模式

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> JavaScript Web 应用程序和 Web 服务器容易受到称为正则表达式(regex)拒绝服务(ReDoS)的特定类型的漏洞/攻击。当攻击者将大量复杂的…...