赞
踩
阿里云个人认证后,可免费试用机器学习平台PAI,可提供适合大语言模型环境搭建的高配置服务器。
点击试用阿里云服务器
试用产品选择:选择交互式建模PAI-DSW
Lang-Chain(ChatGLM)为Lang-Chain系列0.1版本。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
本教程的实现过程包括加载文本->读取文本->文本分割->文本向量化->问句向量化->在文本向量中匹配出与问句向量最相似的Top k个答案->匹配出的文本作为上下文和问题一起添加到Prompt中->提交给LLM生成回答。
从文档处理角度来看,实现流程如下:
具体操作步骤可移步阿里云官方文档,按步骤操作下来即可。
基于LangChain的检索知识库问答
部署完成之后,我们就有了一个属于自己的智能问答库了。
使用体验如下:
初步查看,0.1版本的交互为websocket,没有发现openAPI等接口,和现有项目结合较为复杂,需要改造,所以需要部署0.2版本的ChatChat。
我们可以继续试用阿里云免费三个月的服务器,但是不采用其内置的模板进行搭建,我们自行搭建部署测试。
可在github上搜索Langchain-Chatchat
,根据文档进行部署,如果网速不太好,可在码云gitee上搜索该关键字也可以。由于官方文档在实际的部署过程中,还碰到一些非技术上的问题,所以把自己部署的过程整理如下。
阿里云免费试用的服务器已安装了基础的环境,我们只需要在此基础上进行后续的操作。
python --version
pip3 install --upgrade pip
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
cd Langchain-Chatchat
pip install -r 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个小时左右即可下载完成,下载到服务器的某一目录即可。
configs
中model_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
python startup.py -a
其中:
若想指定非默认模型,需要用--model-name
选项,示例:
python startup.py --all-webui --model-name Qwen-7B-Chat
startup 脚本用多进程方式启动各模块的服务,可能会导致打印顺序问题,请等待全部服务发起后再调用,并根据默认或指定端口调用服务(默认 LLM API 服务端口:127.0.0.1:8888,默认 API 服务端口:127.0.0.1:7861,默认 WebUI 服务端口:本机IP:8501)
服务启动时间示设备不同而不同,约 3-10 分钟,如长时间没有启动请前往 ./logs目录下监控日志,定位问题。
在Linux上使用ctrl+C退出可能会由于linux的多进程机制导致multiprocessing遗留孤儿进程,可通过shutdown_all.sh进行退出
我们可以在web ui界面上上传本地知识库,进行调试和测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。