搭建基于LangChain + ChatGLM2-6B 的个人知识库

一、简介

这个例子使用现成的ChatGLM2-6B和LangChain搭建个人专属知识库,无需训练,通过上传pdf、 txt、 md、 docx等类型的文档可以扩充知识库的内容。

1、LangChain

LangChain 是一个利用大语言模型的能力开发各种下游应用的开源应用程序框架,它的核心理念是为各种LLM(大语言模型)应用实现通用的接口,与外部数据源进行连接,简化LLM应用的开发难度,同时允许用户与LLM进行交互。

2、ChatGLM2-6B

ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署。ChatGLM2-6B使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化,增加了许多特性,如:基座模型升级,性能更强大、支持 8K-32k 的上下文、推理性能提升了 42%。在中文 C-Eval 榜单中,ChatGLM2 以 71.1 分位居榜首,碾压 GPT-4。

二、准备工作

在部署项目之前,我们先简单了解下,本地知识库框架的大概构成,有助于我们在部署的时候可以做相应的改动。目前市面上大部分的知识库都是采用Embedding + LLM + LangChain这套架构,大致如下:
知识库架构

从上图可以看出,将相关文件经过文本分割、文本向量化后存储至向量数据库,再将用户的提问进行向量化之后和数据库中的文本向量进行匹配,利用向量的相似度算法(如:余弦距离)得到最相似的K个文本向量,将这K个向量所对应的上下文和用户提问一起放到Prompt中提交给LLM进行答案的生成。

三、项目部署

上面提到本地知识库框架有Embedding、LLM、LangChain这三个部分组成,那接下来我们分别进行这三个部分的部署。

1、本地环境

  • 系统:Ubuntu 22.04
  • 显卡:V100

2、Embeddin部署

这里我们选择text2vec-large-chinese这个文本向量化工具,用git将代码同步至本地

git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese

如果没有安装lfs,可以从下面手动下载模型权重文件

https://huggingface.co/GanymedeNil/text2vec-large-chinese/tree/main

3、LLM部署

git同步ChatGLM2-6B至本地

git clone https://github.com/THUDM/ChatGLM2-6B

在首次运行ChatGLM2-6B时候会自动下载模型,因为模型较大,也可以自己手动从下面的地址下载

https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b&mode=list

模型下载页面

把下载的模型放到自定义目录后,只需要将web_demo.py文件中下面两行"THUDM/chatglm2-6b"替换成自定义的模型目录就行。
在这里插入图片描述
当然,这个只是针对单独运行ChatGLM2-6B而言,对于本地知识库,则需要修改LangChain中的配置文件,下面会讲到。

4、LangChain部署

LangChain和ChatGLM的调用需要做一些代码上的工作,所以我们选用网友修改好的一款,开箱即用。同样git代码到本地:

git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

安装相关依赖

pip install -r requirements.txt

安装完毕后,修改configs/model_config.py,主要修改三个地方:

  • Embeding模型路径,将“text2vec”的路径修改为本地路径,如:/data/text2vec-large-chinese。
    在这里插入图片描述
  • 将ChatGLM2-6B的模型文件改成本地模型路径,因为在此采用的是默认的模型文件下载路径。
    在这里插入图片描述
  • 修改调用的LLM模型名称,改为chatglm2-6b
    在这里插入图片描述

5、运行

上述配置修改完成之后,在langchain-ChatGLM目录下,直接执行

python webui.py

如果命令窗口出现如下信息,则代表运行成功。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0e1a5e29931a40bfaf3338774d2ddd96.png# = x130)
输入本地访问地址http://127.0.0.1:7860,则出现下述界面
在这里插入图片描述

如果是部署在远程服务器上,则需要将webui.py中的share参数改为True在这里插入图片描述
生成外部访问地址:
在这里插入图片描述

四、项目测试

选择页面右侧的“知识库问答”,目前还没任何知识库,所以我们先添加知识库。
在这里插入图片描述
建立的知识库,取名为“测试1”
在这里插入图片描述
上传了一个test.txt文件
在这里插入图片描述
里面是一些新闻内容
在这里插入图片描述

知识库加载完毕后,进行提问,回答内容标注了来自于上传的文档的哪个地方。
在这里插入图片描述
知识库搭建完毕,大家可以自行多做测试,有问题欢迎留言。

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值