基于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界面上上传本地知识库,进行调试和测试。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值