背景介绍
在开发过程中,我们经常会遇到需要构建基于本地知识库的问答系统的问题。这种系统需要能够根据用户提供的问题,在本地的知识库中查找并返回相关答案。然而,要实现这样的功能并不容易,涉及到语言模型的选择、知识库的管理以及问答的匹配和检索等核心问题。
今天要给大家推荐一个 GitHub 开源项目 imClumsyPanda/langchain-ChatGLM,该项目在 GitHub 有超过 13.5k Star,用一句话介绍该项目就是:“langchain-ChatGLM, local knowledge based ChatGLM with langchain | 基于本地知识库的 ChatGLM 问答”。
项目介绍
langchain-ChatGLM 提供了一种基于本地知识库的 ChatGLM(Chat with Generative Language Model)问答系统。该项目结合了langchain和ChatGLM-6B模型的思想,旨在构建一个可灵活应用于中文场景的开源问答系统。通过langchain-ChatGLM,我们可以轻松地将开源的语言模型与本地知识库相结合,实现对中文问答的支持。
langchain-ChatGLM的主要功能包括:
• 基于本地知识库的问答:系统可以根据用户的提问,在本地的知识库中进行搜索,并返回相关的答案。
• 多模型支持:项目支持使用不同的语言模型,可以根据需求选择合适的模型进行使用。
• 离线私有化:可以将该问答系统部署在本地环境中,确保数据的安全性和隐私性。
WebUI 知识库管理页面:
下载代码和模型
git clone https://github.com/ExpressGit/langchain-ChatGLM.git
git clone https://huggingface.co/THUDM/chatglm-6b autodl-tmp/models_data/chatglm-6b
git clone https://huggingface.co/GanymedeNil/text2vec-base-chinese autodl-tmp/models_data/text2vec-base-chinese
安装依赖
pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
pip install protobuf==3.20.1
pip install peft
pip install --upgrade gradio
git lfs install
修改配置文件
在langchain-ChatGLM/configs/model_config.py中修改Embedding模型地址:
embedding_model_dict = {
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
"ernie-base": "nghuyong/ernie-3.0-base-zh",
"text2vec-base": "/root/autodl-tmp/models_data/text2vec-base-chinese",
"text2vec": "GanymedeNil/text2vec-large-chinese",
}
在langchain-ChatGLM/configs/model_config.py中修改LLM模型名称和地址
LLM_MODEL = "chatglm-6b"
NO_REMOTE_MODEL = True
MODEL_DIR = "/root/autodl-tmp/models_data/"
在langchain-ChatGLM/webui.py中修改端口号为6006。
server_port=6006,
启动
python webui.py
langchain-ChatGLM WebUI成功部署,就可以导入自己的知识库进行测试了。