ChatGLM实战:基于LangChain构建自己的私有知识库
LangChain是一个用于构建基于大型语言模型(LLM)的应用程序的库。它为开发者提供了一种便捷的方式,可以将LLM与其他计算或知识源结合起来,从而创造出更加智能和强大的应用程序。
LangChain是什么
LangChain是一个用于构建基于大型语言模型(LLM)的应用程序的库。它为开发者提供了一种便捷的方式,可以将LLM与其他计算或知识源结合起来,从而创造出更加智能和强大的应用程序。
LangChain的目标是帮助开发者充分发挥大型语言模型的优势,使其在各种领域,如自然语言处理、问答系统、文本生成等方面得到更广泛的应用。
通过LangChain,开发者可以更高效地利用大型语言模型的能力,为用户提供更优质的智能化体验。例如,开发者可以使用LangChain将大型语言模型与电子商务网站集成,导入人工客服的对话问答库和商品介绍文档,为用户提供智能的商品推荐和个性化购物建议。
下载源码
既然之前能够运行ChatGLM-6B的模型,那么我们仍然基于ChatGLM模型来搭建属于自己的本地知识库。先下载langchain-ChatGLM源码。
root@VM-0-17-ubuntu:~# git clone https://github.com/chatchat-space/langchain-ChatGLM.git
环境准备
之前已经成功运行了ChatGLM模型,那么,还是基于python3.8的版本来构建自己的langchain,创建python虚拟环境, 并激活:
root@VM-0-17-ubuntu:~# conda create -n langchain python=3.8
root@VM-0-17-ubuntu:~# conda activate langchain
在虚拟python环境中,更新py库,并下载langchain的依赖:
root@VM-0-17-ubuntu:~# pip3 install --upgrade pip
# 项目中 pdf 加载由先前的 detectron2 替换为使用 paddleocr,如果之前有安装过 detectron2 需要先完成卸载避免引发 tools 冲突
root@VM-0-17-ubuntu:~# pip uninstall detectron2
# 检查paddleocr依赖,linux环境下paddleocr依赖libX11,libXext
root@VM-0-17-ubuntu:~# apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
进入langchain工程,下载依赖项:
root@VM-0-17-ubuntu:~# cd langchain-ChatGLM
root@VM-0-17-ubuntu:langchain-ChatGLM# pip install -r requirements.txt
检查paddleocr是否成功,首次运行会下载约18M模型到~/.paddleocr
root@VM-0-17-ubuntu:langchain-ChatGLM# python loader/image_loader.py
root@VM-0-17-ubuntu:langchain-ChatGLM# du -sh ~/.paddleocr/
# 输出 18M /root/.paddleocr/ 说明验证成功
llama-cpp模型调用的说明
我们虽然没有指定使用llama-cpp的模型,但langchain依赖llama-cpp-python的包,因此需要安装llama-cpp-python。
root@VM-0-17-ubuntu:langchain-ChatGLM# pip install llama-cpp-python
注意,这里依赖gcc的版本那是8.4及以上,系统自带的gcc是7.5版本,因此会报错。需要先升级
更新软件包列表:
root@VM-0-17-ubuntu:langchain-ChatGLM# apt update -y
root@VM-0-17-ubuntu:langchain-ChatGLM# apt install gcc-8 g++-8
更新系统的默认gcc版本为8.4:
root@VM-0-17-ubuntu:langchain-ChatGLM# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
root@VM-0-17-ubuntu:langchain-ChatGLM# sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100
验证gcc版本是否升级成功:
root@VM-0-17-ubuntu:langchain-ChatGLM# gcc --version
模型选择
检查langchain-ChatGLM默认使用的模型,打开configs/model_config.py ,可以看到支持的模型列表:
root@VM-0-17-ubuntu:langchain-ChatGLM# vim configs/model_config.py
llm_model_dict = {
......
"ChatGLM-6B": {
"name": "ChatGLM-6B",
"pretrained_model_name": "/root/prj/ChatGLM-6B/THUDM/ChatGLM-6B",
"local_model_path": None,
"provides": "ChatGLMLLMChain"
},
......
"ChatGLM2-6b-32k": {
"name": "ChatGLM2-6b-32k",
"pretrained_model_name": "/root/prj/ChatGLM-6B/THUDM/ChatGLM2-6b-32k",
"local_model_path": None,
"provides": "ChatGLMLLMChain"
},
......
}
LLM_MODEL = "ChatGLM2-6b-32k" # 默认模型
从上述代码中,我们可以看到,既支持了ChatGLM-6B,还支持了更高能力的ChatGLM2-6b-32k。ChatGLM2-6b-32k是在ChatGLM2-6B的基础上进一步强化了对于长文本的理解能力,能够更好地处理最多32K长度的上下文。既然有更好的模型,而且默认还是这个,为啥不用最新的呢(其实是ChatGLM-6B尝试失败了,出现了我无法解决的问题,大概率是版本太老,资源丢失了).
模型下载
ChatGLM-6B-32k下载
在https://huggingface.co/搜索ChatGLM-6B-32k,链接为:https://huggingface.co/THUDM/ChatGLM2-6b-32k
从截图中可以看出,ChatGLM-6B-32k的模型大概有15G左右,就靠我这薅的5M带宽的服务器,还得科学上网才能访问https://huggingface.co,速度可以想像会有多慢,说不定还会超时。不过有钱的小伙伴可以直接购买国外的gpu服务器来操作langchain,只需执行以下操作即可下载ChatGLM-6B-32k模型。
root@VM-0-17-ubuntu:langchain-ChatGLM# git lfs clone https://huggingface.co/THUDM/ChatGLM2-6b-32k
如果没钱的小伙伴,可以去我的百度云盘下载,这个就不保证实时更新了哦。
链接:https://pan.baidu.com/s/1FWH986DG7ZzOsU1vyqTW2g
提取码:1kou
汉语长文本下载
ChatGLM-6B-32k还依赖汉语长文本的模型,否则运行langchain会重新去下载text2vec-large-chinese的模型文件,我们可以提前下载。在huggingface搜索,得到链接https://huggingface.co/GanymedeNil/text2vec-large-chinese/tree/main。
配置
模型文件下载好后,需要对应自己的模型路径进行配置,打开configs/model_config.py如下,根据注释进行配置:
......
embedding_model_dict = {
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
"ernie-base": "nghuyong/ernie-3.0-base-zh",
"text2vec-base": "shibing624/text2vec-base-chinese",
#"text2vec": "GanymedeNil/text2vec-large-chinese",
"text2vec": "/root/prj/ChatGLM-6B/THUDM/text2vec-large-chinese", # 下载好的text2vec-large-chinese路径
"text2vec-base-multilingual": "shibing624/text2vec-base-multilingual",
"text2vec-base-chinese-sentence": "shibing624/text2vec-base-chinese-sentence",
"text2vec-base-chinese-paraphrase": "shibing624/text2vec-base-chinese-paraphrase",
"m3e-small": "moka-ai/m3e-small",
"m3e-base": "moka-ai/m3e-base",
}
......
llm_model_dict = {
......
"ChatGLM2-6b-32k": {
"name": "ChatGLM2-6b-32k",
"pretrained_model_name": "/root/prj/ChatGLM-6B/THUDM/ChatGLM2-6b-32k", # 下载好的ChatGLM2-6b-32k路径
"local_model_path": None,
"provides": "ChatGLMLLMChain"
},
......
}
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为
等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、LLM大模型系列视频教程
四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)
LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料
包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)