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

环境准备

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

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

适合哪些场景

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

实践

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

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

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

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

具体操作步骤可移步阿里云官方文档,按步骤操作下来即可。
基于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 为例。

设置配置项

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

相关推荐
Alluxio24 分钟前
选择Alluxio来解决AI模型训练场景数据访问的五大理由
大数据·人工智能·分布式·ai·语言模型
AIPaPerPass写论文31 分钟前
写论文去哪个网站?2024最佳五款AI毕业论文学术网站
人工智能·深度学习·chatgpt·powerpoint·ai写作
唯创知音32 分钟前
电子烟智能化创新体验:WTK6900P语音交互芯片方案,融合频谱计算、精准语音识别与流畅音频播报
人工智能·单片机·物联网·音视频·智能家居·语音识别
5pace1 小时前
PyTorch深度学习快速入门教程【土堆】基础知识篇
人工智能·pytorch·深度学习
aWty_1 小时前
机器学习--卷积神经网络(包括python实现)
人工智能·机器学习·cnn
wx7408513261 小时前
小琳AI课堂:大语言模型如何符合伦理限制
人工智能·语言模型·自然语言处理
5pace2 小时前
机器学习(西瓜书)第 14 章 概率图模型
人工智能·机器学习
Linux猿2 小时前
828华为云征文 | 云服务器Flexus X实例:部署 AgentOps,全方位监测智能体
人工智能·华为云·agent·autogen·flexus云服务器x实例·华为云服务器·agentops
Rense12 小时前
开源RK3588 AI Module7,并与Jetson Nano生态兼容的低功耗AI模块
人工智能·开源
FL16238631292 小时前
[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别
人工智能·yolo·目标检测