什么是langchain
langchain[1]是一个用于构建LLM-Based应用的框架,提供以下能力:
- 上下文感知:可以为LLM链接上下文(如知识库、prompt等)
- 推理:通过大模型的能力进行推理(推理、决策)
用计算机类比的话,在这套框架内,LLM扮演的是CPU的角色,langchain扮演的是主板,为其提供内存、磁盘等设备,使其完成更多复杂的功能。
langchain架构图
从架构图中可以看到,langchain提供了从协议、开发、部署到观测的一条龙服务。不过我们平时自己玩玩的话,主要用到的只有图中的LangChain、LangChain-Community和Langchain-Core部分。
langchain 四大模块
主要有Model I/O、Retrieval、Agents、Chains四个部分组成。
Chains
Chains可以说是最重要的模块了(不然你猜为啥它叫langchain)。Chains 顾名思义,它的作用是将不同的组件和功能串联起来,形成一个完整的处理流程,从而解决更复杂或多步骤的问题。
举个例子,我现在需要构建一个自动写文章的Agent,我们首先就会选择拆解问题然后再去解决:找素材、写文章。我们可以分别构建两个链去完成这个事情,然后再将其串起来完成整个流程。
并且链已经封装好了一个能力,后续其他场景假如需要使用到查找素材的能力,直接就可以复用现有的链。
一个老生常谈的问题:Chains和Agents的区别是什么?我的理解,Chains提供的是解决特定子问题的能力,Agents是决策何时、如何适用Chains
Model I/O
Model I/O
这个模块主要包含了与LLM输入输出相关的实现。包括与各种大模型的交互接口、数据格式的formator。同时,也能用于chain中不同Runable对象之间数据的传输过程中的处理。
Retrieval
Retrieval
主要用于 Retrieval Augmented Generation(RAG) 。可以把这个模块理解为大模型应用的内存+数据库。通过对文本拆条+embedding的方式存储到向量数据库中,利用查询出的相关知识用于增强回答的质量,比较适合需要大模型理解特定领域知识的场景适用。
Agents
推荐看下这篇文章LLM Powered Autonomous Agents[2],对Agent系统又比较详细的阐述。Agents模块主要解决的是如何让LLM理解问题并能够正确地选择使用哪些工具、流程来解决一个复杂问题。其中就包括了如何根据观察结果选择和执行动作,并重复此过程直到完成任务。主要包含以下子模块:
- Agents: 负责决策的执行和推理(比如ReAct)
- Tools:用于执行特定任务的工具(比如一个查询天气的函数可以封装成一个tool)
写在最后
总的来说,Langchain就像是大语言模型的乐高积木。想象一下,如果LLM是大脑的话,Langchain就像是让大脑能跑起来的双脚、手臂还有眼睛,让一切变得可能。通过组合不同的Chains和Tools,可以构建出各种有趣的东西,感觉这才是真正的低代码平台...
目前也已经有不少公司在做Agents平台了,比如字节出的Coze,笔者已经玩了好一段时间了,感觉以后没有代码基础都能够轻松构造出一个自己的LLM 应用,我不会真的要失业了吧~哈哈哈
References
[1]
: https://github.com/langchain-ai/langchain
[2]
: https://lilianweng.github.io/posts/2023-06-23-agent/
作者:派派星
文章来源:CVHub
推荐阅读
- 卷积神经网络学习笔记——DenseNet
- 聊聊 DiT 和 GenTron
- 阿里提出Mamba in Mamba | 比现有SOTA提速10倍,GPU使用减少73.4%
- 编译入门那些事儿(5):Jump Table 优化介绍
更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。