点击上方关注 “终端研发部”
设为“星标”,和你一起掌握更多数据库知识
学习LangChain就对了,从 star 上来讲,langchain 91.1k,热度肯定是最高的。
下面介绍一下我使用的一个AI模型开发框架:LangChain,之前我用它来进行给公司构建过电AI电商客服的智能系统,并且已经成功在线上运行
LangChain到底是什么?
LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行,它采用先进的分布式存储技术和高效的数据预处理算法,能够应对海量且复杂的数据结构,无论是结构化数据还是非结构化的文本、图像等,都能进行快速准确的读取、清洗和转换。
LangChain 中的模型主要分为三类:
1、LLM:这些模型将文本字符串作为输入并返回文本字符串作为输出。它们是许多语言模型应用程序的支柱。
比如,我们可以利用LLM进行信息提取。我给LLM从一大堆文本信息中抽取了关键信息
接下来我让LLM根据这些关键信息给出治疗建议,再建一个自定义的prompt模板,把提取的关键信息作为变量存储在该模板中。
然后,我就让其我们给出治疗方案,我们看一下大模型给我们的结果:
2、聊天模型,这个模型是很常用的,它具有更结构化的 API。将聊天消息列表作为输入并返回聊天消息。这使得管理对话历史记录和维护上下文变得容易。
比如我之前利用Streamlit应用程序将消息发送给聊天机器人API,聊天机器人生成并发送响应回Streamlit应用程序,然后显示给用户。
下面是我做的一个效果:
最终的效果是针对一家大型医院系统,构建一个基于LangChain的RAG聊天机器人,使用Neo4j技术检索有关患者、就医体验、医院位置、询问、费用支付和医生等有关数据。
我是通过几个月的时间学习了知乎知学堂的AI公开课之后,这门课程是由业界大佬亲自带你学习大模型的实现过程和应用技术,并且还给提供了可以运行大模型的CPU和5套Demo,让你不在只会理论,亲自上手体验大模型的微调过程,学会之后,你可以定制化自己的专属模型了
但如果有一点编程知识,你可以利用像LangChain这样的库来创建自己的LLM驱动的聊天机器人,几乎可以做任何事情。
3、文本嵌入模型,这些模型将文本作为输入并返回表示文本嵌入的浮点列表。这些嵌入可用于文档检索、聚类和相似性比较等任务,例如数据的获取、切分、向量化、向量存储、向量检索等模块
LangChain框架与其他框架进行相对比也是非常的优秀的,这里以Dif框架的对比分析
在数据处理方面,LangChain 凭借其先进的数据清洗和转换机制,能够更有效地处理噪声数据和缺失值,确保数据的质量和完整性。
Dif框架在处理大规模、多源异构数据时可能显得力不从心。
就开发效率而言,LangChain 提供的丰富的开发工具和模板,以及简洁明了的 API 设计,LLM 的一个令人兴奋的应用是为其他“工具”构建自然语言接口,无论是 API、函数、数据库等。
LangChain 非常适合构建此类接口,因为它具有:
良好的模型输出解析,可以轻松从模型输出中提取 JSON、XML、OpenAI 函数调用等。
大量内置工具。
为您如何调用这些工具提供了很大的灵活性。
到底如何学习LangChain呢?
我这几个月对LangChain的理解就是,如同建房子一样,要有一个架构,要搭建一个框架,在这个框架的基础之上去填充水泥,瓷砖等等,那基于让LangChain来搭建我们的AI应用
比如下面的这张图:
比如,我自己之前学习的一个经验,来用LangChain构建自己的私有知识库
1、下载源码
2、激活
我以自己电脑上python3.8的版本为例,来构建自己的langchain,创建python虚拟环境, 并激活:
3、模型选择
检查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尝试失败了,出现了我无法解决的问题,大概率是版本太老,资源丢失了).
4、模型下载
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/1PSMLsV_0-4DsQt8o60dosg?pwd=bnkq
提取码: bnkq
5、汉语长文本下载
ChatGLM-6B-32k还依赖汉语长文本的模型,否则运行langchain会重新去下载text2vec-large-chinese的模型文件,我们可以提前下载。在huggingface搜索,得到链接https://huggingface.co/GanymedeNil/text2vec-large-chinese/tree/main。
网盘下载:
链接: https://pan.baidu.com/s/1v5y-xQAfWF_Z-6Yg7rHDLg?pwd=ck3k
提取码: ck3k
6、配置
模型文件下载好后,需要对应自己的模型路径进行配置,打开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"
},
......
}
最后一步就是执行下执行脚本体验 Web UI看看效果啦
当然这个构建知识库的流程知识最基本的操作,这里只是冰山一角。如果做熟练的话,可以进行构建各种各样的AI应用程序。
关于LangChain的学习书籍
《LangChain入门指南:构建高可复用、可扩展的LLM应用程序》
以LangChain这个让人熟悉的框架为主线,引导读者一步一步掌握LLM应用开发流程,适合对大语言模型感兴趣的开发者、AI应用程序开发者阅读
就连很多大厂的AI智能体模型都是基于LangChain为技术的,比如360旗下的智能营销云,其Agent模式让大模型不仅作为“大脑”识别人类的意图,智能化地思考分解任务,还能够长出“手脚”,自动化地使用工具、调用各种API,执行任务、解决问题,达成目标结果,成为一种通用的智能体系统。
还有智能办公、工业机器人、扫地机器人、智能家具等智能化应用场景,未来AI Agent智能体将深入各行各业。
所以学习LangChain是必然的趋势,毕竟AI Agent的崛起,让有想法、有技术的人能够以前所未有的方式释放自己的创造力,打造出各种有趣、实用的AI原生应用。
那么,你准备好加入这场革命了吗?
计算机专业必读书籍:
最后说一句(别白嫖,求关注)
回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
重磅!OpenAI正研发ChatGPT文本水印技术,其他大模型将何去何从?
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!
喜欢就给个“在看”