《基于LangChain+ChatGLM3的本地知识库问答》操作教程以及常见的问题FAQ
1.登录华为云账号,没有账号请参考文章华为云账号注册和实名认证.
2.打开浏览器新窗口,点击案例链接《基于LangChain+ChatGLM3的本地知识库问答》进入AI Gallery 案例页面:
1)检查是否已经实名认证,如果没有请输入姓名和身份证号,人脸识别进行实名认证。
2)需要签署开发者协议。
3.以上确认没有问题,请点击Run in ModelArts,进入codelab jupyter 页面。
4.点击用户授权-立即授权
1)看到右上角出现时间倒计时表示进入到案例页面:
2)等倒计时为0,选择下面的GPU规格-切换规格。
3)等待时间倒计时为0,出现资源切换完成提示-点击确定。
4)点击下面的按钮,显示下面规格表示切换成功。
选择kernel-Pytorch-1.10.2环境
5)查看1-14当前页面按钮的意义:
1-保存此jupyter lab文件
2-+ 表示增加代码行
3-剪切代码行 4-复制代码行
5-粘贴代码行
6-运行当前代码
7 停止当前代码行
8-重启代码行
9-全局执行代码
10-jupyter 文件的三种格式,Code-表示写代码,Markdown-表示传图片,写注释
11-切换Laucher页面 ,包含终端Terminal和各种环境的Notebook
12 -新建文件夹
13-上传文件
14 -刷新当前所在的文件目录
6)代码运行的五种状态:
鼠标指着三角行 表示运行,出现时间表示运行成功,出现红色表示报错,转圈表示正在运行,如果表示转圈不要再点其他代码运行。表示代码正在运行,千万不要再次点击。
5.运行案例代码
1)下载ChatGLM3模型
运行成功,刷新页面出现service文件夹和代码出现“INF:root”提示表示运行成功。
这里用了OBS对象存储服务,OBS相当于云盘存储数据,moxing是华为云深度学习框架,通过moxing代码拷贝OBS桶里面的代码到notebook目录本地。
2)进入chatglm3目录,解压模型压缩包
ps:os.chdir(work_dir)
是一个Python语句,用于改变当前工作目录到 work_dir
指定的目录。这里 os
是Python标准库中的一个模块,提供与操作系统交互的功能,而 chdir
是一个函数,用于改变当前的活动目录。
语法如下:
import os
work_dir = '/path/to/your/directory'
os.chdir(work_dir)
!pwd-表示当前所在的目录,此处是
/home/ma-user/work
在命令行界面(CLI)中,!tar -xvf chatglm3-6b.tar
是一个用于解压缩文件的命令。这个命令使用了 tar
程序,它是一个在Unix和类Unix系统中常用的归档工具,可以打包和解打包文件。
上述命令同样可以在终端执行:
3)下载nltk_data数据:
4)进入nltk_data目录,解压数据压缩包
/home/ma-user/work
nltk_data/
nltk_data/misc/
nltk_data/misc/mwa_ppdb.zip
nltk_data/misc/perluniprops.xml
nltk_data/misc/mwa_ppdb.xml
nltk_data/misc/perluniprops.zip
nltk_data/tokenizers/
nltk_data/tokenizers/punkt/
nltk_data/tokenizers/punkt/french.pickle
nltk_data/tokenizers/punkt/polish.pickle
nltk_data/tokenizers/punkt/.DS_Store
nltk_data/tokenizers/punkt/portuguese.pickle
nltk_data/tokenizers/punkt/german.pickle
nltk_data/tokenizers/punkt/swedish.pickle
nltk_data/tokenizers/punkt/malayalam.pickle
nltk_data/tokenizers/punkt/estonian.pickle
nltk_data/tokenizers/punkt/finnish.pickle
。。。。。
5)下载text2vec-large-chinese模型
点击文件目录查看
6)进入text2vec-large-chinese目录,解压模型压缩包
7)配置环境
8)创建完成后,稍等片刻,或刷新页面,点击右上角kernel选择切换到python-3.10.10-点击select
9)安装依赖库
10)前面都是环境准备,最关键一步:代码开发,也是直接运行
为了实现基于本地知识库的对话问答,当前使用了langchain的链来实现,即langchain.chains。
在langchain.chains中有很多已有的链,例如:ConversationChain(对话链)、RetrievalQA(检索型问答)、ConversationalRetrievalChain(对话式检索问答)。
本文使用的是RetrievalQA,它可以很方便的实现基于知识库的问答,具体实现代码如下:
①首先定义语言模型和本地知识库的加载;
②然后通过RetrievalQA.from_llm函数构造链的实例knowledge_chain,并配置一些参数
③最后通过调用knowledge_chain即可。
11)功能测试:直接运行代码,加载模型
本地知识库文档查看:
12)可以自己替换本地知识库文档,然后更换提示词回答测试。
13)运行完毕直接微信群里打卡分享,这里提示词需要输入:介绍华为云,并且截图打卡附上我们的华为云账号.
14)运行完关闭资源,避免多余扣费。
6.常见的FAQ
1. OutOfMemoryError: CUDA out of memory. Tried to allocate 108.00 MiB (GPU 0; 15.90 GiB total capacity; 15.17 GiB already allocated; 7.75 MiB free; 15.22 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF.
表示内存溢出,需要重启kernel运行
2.NameError: name 'LangChainApplication' is not defined
表示前面的包没有安装好。重新安装包,然后依次运行代码
问:NameError: name 'os' is not defined
答:前面没导入os包,直接重新运行上一步即可。
- 点赞
- 收藏
- 关注作者
评论(0)