当前位置:   article > 正文

Langchain+chatGLM2实现本地知识问答平台_langchain chatglm2

langchain chatglm2

Langchain+ChatGLM2实现本地知识问答平台

前言

最近比较流行chatgpt,刚好有资源可以测试一下,为了后续不迷路,记录一下。

准备工作

硬件:dell服务器,内存1T,显卡NVIDIA A100-SXM4-80GB * 4
软件:ubuntu 20.04,python 3.8, conda 22.9.0

搭建ChatGLM2服务

更新lfs

如果不想从互联网下载模型的话,可以不用装lfs,但是为了从0开始,还是需要安装一下,以便下载使用最新的模型。

apt update
apt install git-lfs
  • 1
  • 2

安装之后可能需要如下步骤才能安装git-lfs

git init
  • 1

接着安装git-lfs

git lfs install
  • 1

以上为常规操作,不贴图了。

创建虚拟环境

为了避免与其他python环境冲突,这里创建了一个虚拟环境p_chatglm2

conda create --name p_chatglm2 python=3.8
  • 1

在这里插入图片描述

一直Y下去就可以了,创建之后检查一下是否创建成功。

conda env list
  • 1

在这里插入图片描述

激活该虚拟环境

在这里插入图片描述
在这里插入图片描述

下载ChatGLM2

然后从github上下载最新的ChatGLM2。

git clone https://github.com/THUDM/ChatGLM2-6B.git
  • 1

github的连接有些不顺畅,如果失败建议多试两次。

在这里插入图片描述

下载模型

接着下载模型文件,在p_chatglm2路径下创建model目录,然后把模型文件放在这个目录下。

在这里插入图片描述

然后下载对应的模型文件,文件比较大,需要一定的耐心。

cd model
git clone https://huggingface.co/THUDM/chatglm2-6b
  • 1
  • 2

在这里插入图片描述

连接不稳定,需要多试几次,并保证下载成功,如果下载速度过慢,可以试试国内其他人提供的分享的网盘连接(链接:https://pan.baidu.com/s/1ovul-X2oR0BMp1uBVwDupg,提取码:kn6b)。

下载完成之后需要进入chatglm2-6b,安装依赖

pip install -r requirements.txt
  • 1

在这里插入图片描述

在这里插入图片描述

修改web程序

打开web_demo.py,并修改相应的内容,找到如下内容:
在这里插入图片描述
把第7行中的内容修改为模型存放的位置,对于刚才的测试来说,可以修改为如下内容:

tokenizer = AutoTokenizer.from_pretrained("../model/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("../model/chatglm2-6b", trust_remote_code=True).cuda()
  • 1
  • 2

当修改为这个路径时,意味着执行脚本的时候需要在/opt/p_chatglm2/ChatGLM2-6B下执行,如果不是该目录,需要根据自己的路径进行修改。

另外由于我的机器有4个显卡,因此我可以根据实际状况进行如下修改。

tokenizer = AutoTokenizer.from_pretrained("../model/chatglm2-6b", trust_remote_code=True)
#model = AutoModel.from_pretrained("../model/chatglm2-6b", trust_remote_code=True).cuda()
# 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量
from utils import load_model_on_gpus
model = load_model_on_gpus("../model/chatglm2-6b", num_gpus=4)
model = model.eval()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

同时为了实现远程访问,需要把最后一行修改如下:

demo.queue().launch(server_name="0.0.0.0", server_port=9091, share=False, inbrowser=True)
  • 1

修改完成之后就可以执行

python3 web_demo.py
  • 1

在这里插入图片描述
然后就可以通过浏览器访问该服务了。

在这里插入图片描述

搭建Langchain+ChatGLM2服务

创建虚拟环境

创建虚拟环境p_lang

conda create --name p_lang python=3.8
  • 1

在这里插入图片描述

激活环境

conda activate p_lang
  • 1

在这里插入图片描述

下载模型

从GitHub上下载langchain-chatglm

git clone https://github.com/chatchat-space/langchain-ChatGLM.git
  • 1

在这里插入图片描述

需要安装langchain所需的依赖文件

pip install -r requirements.txt
  • 1

在这里插入图片描述

由于langchain需要执行一个embedding模型,因此需要下载对应的文档向量化模型,如configs/model_config.py文件中所示。

在这里插入图片描述
需要下载对应的模型

git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese
  • 1

在这里插入图片描述
需要修改configs/model_config.pyembedding模型的位置,由于text2vec-large-chinese模型在lanchain-ChaGLM路径下,且我们执行webui.py也是在这个目录下,因此不需要使用绝对路径。

embedding_model_dict = {
    "ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
    "ernie-base": "nghuyong/ernie-3.0-base-zh",
    "text2vec-base": "shibing624/text2vec-base-chinese",
    # 修改下面这一行
    "text2vec": "text2vec-large-chinese",
    "text2vec-base-multilingual": "shibing624/text2vec-base-multilingual",
    "text2vec-base-chinese-sentence": "shibing624/text2vec-base-chinese-sentence",
    "text2vec-base-chinese-paraphrase": "shibing624/text2vec-base-chinese-paraphrase",
    "m3e-small": "moka-ai/m3e-small",
    "m3e-base": "moka-ai/m3e-base",
}
# Embedding model name
EMBEDDING_MODEL = "text2vec"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

修改configs/model_config.pyLLM_MODEL模型

# LLM 名称
LLM_MODEL = "chatglm2-6b"
  • 1
  • 2

而模型chatglm2-6b定义在llm_model_dict中,对如下内容进行修改

    "chatglm2-6b": {
        "name": "chatglm2-6b",
        "pretrained_model_name": "THUDM/chatglm2-6b",
        "local_model_path": None,
        "provides": "ChatGLMLLMChain"
    },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里pretrained_model_name就是对应的模型,由于在ChatGLM2中已经下载了改模型,只需要找到具体的模型文件就行。相对于当前目录(/opt/p_chatglm2/langchain-ChatGLM),chatglm2-6b模型在../model中,因此修改如下:

    "chatglm2-6b": {
        "name": "chatglm2-6b",
        "pretrained_model_name": "../model/chatglm2-6b",
        "local_model_path": None,
        "provides": "ChatGLMLLMChain"
    },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

然后就可以执行web应用

python3 webui.py
  • 1

如果执行过程中有缺什么工具,可以用pip install安装。执行结果如下:
在这里插入图片描述
使用浏览器访问
在这里插入图片描述
执行成功之后就可以构建本地知识库。

新建本地知识库,暂时这个名字好像只能是英文。
在这里插入图片描述
接着就需要上传文件

在这里插入图片描述
上传之后就可以加载知识库,等待模型将内容向量化,之后就可以进行测试了
在这里插入图片描述

不过据我观察,这个结果实在是。。。嗯。。。一言难尽。后续我们会试一下meta的开源模型。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/862796?site
推荐阅读
相关标签
  

闽ICP备14008679号