《基于LangChain+ChatGLM3的本地知识库问答》操作教程以及常见的问题FAQ

举报
码上开花_Lancer 发表于 2024/05/14 19:13:56 2024/05/14
【摘要】 1.登录华为云账号,没有账号请参考文章华为云账号注册和实名认证.2.打开浏览器新窗口,点击案例链接《基于LangChain+ChatGLM3的本地知识库问答》进入AI Gallery 案例页面:1)检查是否已经实名认证,如果没有请输入姓名和身份证号,人脸识别进行实名认证。2)需要签署开发者协议。3.以上确认没有问题,请点击Run in ModelArts,进入codelab jupyter ...

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包,直接重新运行上一步即可。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。