简介
什么是 langchain-ChatGLM
一种利用 ChatGLM-6B + langchain 实现的基于本地知识的 ChatGLM 应用。增加 clue-ai/ChatYuan 项目的模型 ClueAI/ChatYuan-large-v2 的支持。
本项目中 Embedding 默认选用的是 GanymedeNil/text2vec-large-chinese,LLM 默认选用的是 ChatGLM-6B。
技术原理
项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt 中 -> 提交给 LLM 生成回答。
什么是 langchain
大型语言模型(LLM)正在成为一种变革性的技术,使开发者能够建立他们以前无法建立的应用程序。然而,孤立地使用这些LLM往往不足以创建一个真正强大的应用程序–当你能将它们与其他计算或知识来源相结合时,真正的力量才会出现。这个库的目的是协助开发这些类型的应用。
langchain 使用 Transformer 模型,并在多个语言间建立链式结构实现翻译。比如,它可以通过英语→法语→西班牙语完成英语到西班牙语的翻译。
langchain 只使用公开数据集进行训练,不需要额外的数据。它使用的训练集包括:
- WMT2014英法翻译数据集
- WMT2014英德翻译数据集
- UN翻译语料库
项目地址:https://github.com/imClumsyPanda/langchain-ChatGLM/tree/v0.1.14
快速体验
环境安装
git clone https://github.com/imClumsyPanda/langchain-ChatGLM
cd langchain-ChatGLM
pip install -r requirements.txt
pip install -U gradio
pip install modelscope
启动
python webui.py
启动成功后使用浏览器打开
http://localhost:7860/
对话界面
知识测试界面
模型配置界面
其他部署方式
API部署
python api.py
成功部署 API 后,执行以下脚本体验基于 VUE 的前端页面
cd views
npm inpm run dev
命令行部署
python cli_demo.py
模型替换
下载好langchain-ChatGLM模型后,如果有自己的LLM 模型或者Embedding 模型,可以按照以下步骤操作
第一步下载模型
# 安装 git lfs
git lfs install
# 下载 LLM 模型
git clone https://huggingface.co/THUDM/chatglm-6b
# 下载 Embedding 模型
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese
# 模型需要更新时,可打开模型所在文件夹后拉取最新模型文件/代码
git pull
第二步修改配置文件
进入langchain-ChatGLM模型目录configs/model_config.py 文件中,对embedding_model_dict和llm_model_dict参数进行修改
embedding_model_dict = {"ernie-tiny": "nghuyong/ernie-3.0-nano-zh","ernie-base": "nghuyong/ernie-3.0-base-zh","text2vec": "/你的embedding模型目录"
}
llm_model_dict = {"chatyuan": "ClueAI/ChatYuan-large-v2","chatglm-6b-int4-qe": "THUDM/chatglm-6b-int4-qe","chatglm-6b-int4": "THUDM/chatglm-6b-int4","chatglm-6b-int8": "THUDM/chatglm-6b-int8","chatglm-6b": "/你的llm模型路径",
}
修改完就可以启动了,启动方式同上