简介

什么是 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 只使用公开数据集进行训练,不需要额外的数据。它使用的训练集包括:

快速体验

环境安装

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 i

npm 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_dictllm_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模型路径",
}

修改完就可以启动了,启动方式同上