采用M3Se进行文本处理,观察效果

LangChain-Chatchat(原 Langchain-ChatGLM): 基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。

由于工作需要,尝试本地私有化部署了LangChain-Chatchat,整体部署过程是按照仓库中的readme和INSTALL.md来的,不过也遇到了一些小问题,比如部署过程中缺少库,一键启动脚本启动的服务无法使用服务器ip外部访问。

首先克隆项目

git clone https://github.com/chatchat-space/Langchain-Chatchat.git

进入目录cd Langchain-Chatchat

下载所需LLM模型文件和Embedding模型

我下载的是chatglm2-6bgit clone https://huggingface.co/THUDM/chatglm2-6b

Embedding模型下载的是m3e-base模型: git clone https://huggingface.co/moka-ai/m3e-base

修改config配置文件

将configs目录下的配置文件进行修改,分别在LLM模型和embedding模型处填入自己所下载的模型的绝对路径;

安装虚拟环境

conda安装虚拟环境 env-langchain-chatchat

激活环境:conda activate env-langchain-chatchat

更新库:

pip install -r requirements.txt

知识库初始化

由于是第一次使用,进行知识库初始化:

$ python init_database.py --recreate-vs

启动LLM模型服务

在项目根目录下,执行 server/llm_api.py脚本启动 LLM 模型服务:

$ python server/llm_api.py

修改GPU相关参数: 该项目支持多卡加载,需在 llm_api.py中修改 create_model_worker_app 函数中,修改如下三个参数:

gpus='1',  # 使用第2块gpu
num_gpus=1, 
max_gpu_memory="20GiB"

其中,gpus 控制使用的显卡的ID,如 "0,1", 表示使用前两块显卡;

num_gpus 控制使用的卡数;

max_gpu_memory 控制每个卡使用的显存容量。

执行 python server/llm_api.py 报错,找不到库accelerate, 于是又安装  pip install accelerate


这里我遇到了一个bug,将上面函数中的gpus参数修改为第二块GPU后,仍在第一块卡上加载LLM模型。无奈之下,只能将第一块卡的服务切换到第二块卡中,这才暂时解决了这个问题。

启动API服务

创建新终端,进入虚拟环境,启动API服务:

python server/api.py

启动Web UI服务

最后启动Web UI服务,创建新终端,进入虚拟环境,

streamlit run webui.py

搜索引擎问答

可以向bing搜索引擎问问题,需要安装spacy库,也是在问答过程中后台报错少这个库;

一键启动脚本

更新一键启动脚本 startup.py,一键启动所有 Fastchat 服务、API 服务、WebUI 服务,示例代码:

$ python startup.py --all-webui

并可使用 Ctrl + C 直接关闭所有运行服务。

可选参数包括 --all-webui--all-api--llm-api--controller--openai-api--model-worker--api--webui,其中:

  • --all-webui 为一键启动 WebUI 所有依赖服务;
  • --all-api 为一键启动 API 所有依赖服务;
  • --llm-api 为一键启动 Fastchat 所有依赖的 LLM 服务;
  • --openai-api 为仅启动 FastChat 的 controller 和 openai-api-server 服务;
  • 其他为单独服务启动选项。
一键脚本启动的webui服务,只能在服务器上通过 127.0.0.1:端口号来访问ui界面,不能使用服务器的IP地址访问,不知道是不是要修改相关配置。

一键关闭脚本

ps -eo pid,user,cmd|grep -P 'server/api.py|webui.py|fastchat.serve|multiprocessing'|grep -v grep|awk '{print $1}'|xargs kill -9

知识库问答不能设置答案最大长度参数

在上传了本地的PDF文档知识库中后,通过文档的名称可以构建模块获得所上传文档的内容,但是答案的长度无法设置,还没有回答完就截断了,再回复继续想让其继续回答,但只会从知识库中找和继续相似的内容作为答案。

总结

部署后使用的体验,普通的对话和ChatGLM2-6b单独使用差不多。 知识库问答在上传PDF文档并向量化后,询问模型相关内容,的确是能回答出一些PDF中的内容,并且不是原搬不动的照抄,而是略微有改写并扩展的。但是在知识库问答使用过程中,会有一种无从下手的感觉,不知道该如何提问,能提问哪些问题,希望能够在知识库问答界面提供一些样例方便使用。

此外,问答相关的一些模型参数设置在UI界面无法设置,不够灵活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值