【LangChain 核心原理-核心组件&应用开发类型 01】

一、LangChain到底是什么

LangChain是一个开源框架,用于开发由大语言模型(LLMs)驱动的应用程序,比如,搭建智能体(Agent)、问答系统(QA)、对话机器人、文档搜索系统、企业私有化知识库等

简单概括:

  • LangChain ≠ LLMs
  • LangChain 之于LLMs,类似Spring之于Java
  • LangChain 之于LLMs,类似Django、Flask之于Python

LangChain中的Lang指language,即大预言模型,Chain 即 链,也就是将大模型与外部数据&各种组件链接成链,以此构建AI应用程序

1、LangChain的使用场景

项目名称 技术点 难度
文档问答助手
Prompt + Embedding +RetrievalQA
⭐⭐
智能日程助手
Agent + Tool + Memory
 ⭐⭐⭐
LLM+数据库问答
SQLDatabaseToolkit + Agent
 ⭐⭐⭐⭐
多模型路由对话系统
RouterChain + 多 LLM
 ⭐⭐⭐⭐
互联网智能客服
ConversationChain + RAG +Agent
 ⭐⭐⭐⭐⭐
企业知识助手(RAG+本地模型)
VectorDB + LLM + Streamlit
 ⭐⭐⭐⭐⭐

比如:知识库的架构

图片

 2、LangChain的资料介绍

3、LangChain内部结构

图片

 图中展示了LangChain生态系统的主要组件及其分类,分为三个层次:架构(Architecture)、组件(Components)和部署(Deployment)。

 结构1:LangChain --就是AI应用组装套件,封装了一堆API。整体框架不大,但是内部琐碎的知识点特别多

  • langchain:构成应用程序认知架构的Chains、Agent、Retrieval strategies等。构成应用程序的链、智能体、RAG
  • langchain-community:第三方集成,比如:Model I/O、Retrieval、Tool & Toolkit;合作伙伴包 langchain-openai,langchain-anthropic等
  • langchain-Core:基础抽象和表达式语言(LCEL)

结构2:LangGraph --基于langchain的api进一步的封装,能够协调多个Chain、Agent、Tools完成更复杂的任务,实现更高级的功能 

结构3:LangSmith ---链路追踪;提供了6大功能,与langchain无缝对接,帮组从原型阶段过度到生成阶段

  • Debugging 调试
  • Playground 沙盒
  • Prompt Management 提供管理
  • Annotation 注释
  • Testing 测试
  • Monitoring 监控

结构4:LangServe -- 将langchain的可运行项和链部署为REST API,使得它们可以通过网络进行调用;java怎么调用langchain呢?就通过langserve,将langchain应用包装成一个rest api,对外暴露服务。同时支持更高的并发,稳定性更好。

总结:langchain当中,最有前途的两个模块是:LangGraph、LangSmith 

二、LangChain安装

1、相关环境安装

官网下载python进行安装,或者使用包管理工具(Anaconda)进行安装,通过Anaconda创建和管理虚拟环境,为项目提供独立的依赖空间,避免不同项目之间的依赖关系

1)conda的安装 --官网下载地址:https://www.anaconda.com/download/success   安装是勾选在用户环境变量的Path中添加相应路径

2)验证安装是否成功,cmd--输入 conda info

3)Conda常用命令

conda -help            # 查看帮助
conda info             # 查看 conda 信息
conda --version        # 查看 conda 版本
conda update conda     # 更新 Conda (慎用)
conda clean -all      # 清理不再需要的包
conda <指令> --help     # 查看某一个指令的详细帮助
conda config --show    # 查看 conda 的环境配置
conda clean -p         # 清理没有用, 没有安装的包
conda clean -t         # 清理 tarball
conda clean --all      # 清理所有包和 conda 的缓存文件

4)环境管理

|-- 创建conda环境

使用conda可以在电脑上创建很多套相互隔离的python环境,命令:

# 创建一个名为 myenv 的环境, python 版本为3.10
conda create --name myenv python=3.10 # --name 可以简写为 -n

|-- 切换conda环境

 #语法 可以切换不同的环境
conda activate env_name

#样例 切换到 my_env环境
conda activate my_env

|-- 如果要退出当前环境

conda deactivate

|-- 查看 Conda 环境

当电脑上安装了很多台 Conda环境的时候,可以使用 conda env list 命令查看所有已创建的 Conda环境。

# 查看当前电脑上所有的 conda环境
conda env list

|-- 删除某个 Conda 环境

# 语法
conda remove --name <env_name> --all
# 样例
conda remove --name learn --all

|-- 克隆环境

# 语法
conda create --name <new_evn_name> --clone <old_env_name>#样例
conda create --name myclone --clone myenv

5)包管理

一旦激活了环境,你就可以使用 condapip在当前环境下安装你所需要的包。在conda环境中, 不建议使用 pip

|--  安装包

在激活的环境中安装包,例如安装NumPy:

conda install numpy

可以使用以下命令安装特定版本的包:

conda install numpy=1.18

|--  更新包

更新某个包到最新版本:

conda update numpy
​
#更新所有包到最新版本 (慎用)
conda update --all

执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。当较新的版本可以用于升级时,终端会显示Proceed([y]/n)? , 此时输入y 即可进行升级。

|-- 卸载包

如果不再需要某个包,可以将其卸载:

conda remove numpy

|--  列出环境中的所有包

查看当前环境中已安装的所有包:

conda list

查看当前虚拟环境中已安装的某个包的信息

conda list pip

|-- 搜索包

搜索可用的包及其版本信息:

 conda search package-name

2、安装langchain包
可以使用pip进行安装 -->pip install langchain
也可以使用conda进行安装 

# 安装包(默认仓库)
conda install langchain

# 指定频道(如 conda-forge)
conda install -c conda-forge langchain==0.3.7

# 更新包
conda update langchain

# 卸载包
conda uninstall langchain

# 查看已安装包  conda 安装的包显示频道,pip安装的显示 pypi
conda list

-c :是 --channel 的缩写,conda⽤于指定包的安装来源渠道。
conda-forge :该源⽐官⽅默认渠道更新更快、包更全

#建议: 二者最好不好混用,推荐先conda装基础包,后 pip补充的顺序。

二、大模型RAG&Agent开发知识

1、基于RAG架构的开发

RAG主要是为了解决大模型幻觉和知识冻结

何为RAG? Retrieval-Augmented Generation(检索增强生成)

图片

 细节图:

图片

 强调一下难点的步骤:

图片

 整体在开发过程中蓝色部分是难点:1、文件解析  2、文件切割  3、知识检索  4、知识重排序(Reranker)

Reranker的使用场景:

  • 适合:追求回答高精度和高相关性的场景中特别适合使用Reranker,例如专业知识库或者客服系统等应用
  • 不适合:引入后会增加召回时间,增加检索延迟。对响应要求高的服务就不太适合

RAG有三处涉及到大模型的使用:

  • 第3步向量化时,需要使用切入模型(EmbeddingModels)
  • 第7步重排序时,需要使用排序模型(RerankerModels)
  • 第9步生成答案时,需要使用LLM

 2、基于Agent架构的开发

利用LLM的推理决策能力,通过增强规划、记忆和工具调用的能力,构造一个能够独立思考逐步完成给定目标的智能体

Agent的架构:Agent = LLM +Memory+Tools+Planning+Action

图片

智能体的核心要素:

  • LLM:作为大脑,主要提供推理、规划、知识理解能力、是AI Agent的决策中枢
  • 记忆(Memory):记忆机制能让智能体在处理重复工作时调用以前的经验,从而避免用户进行大量重复交互
    • 短期记忆:存储单次对话周期的上下文信息,属于临时信息存储机制。受限于模型上下文窗口长度
    • 长期记忆:可以横跨多个任务或时间周期,可存储并调用核心知识,非即时任务;可以通过模型参数微调(固话知识)、知识图谱(结构化语义网络)或向量数据库(相似性检索)方式实现
  • 工具使用(Tool Use):调用外部工具,扩展能力边界
  • 规划决策(Planning):通过任务分解、反思与自省框架实现复杂任务处理。例如:把一个任务拆解成多个子任务,并通过与用户反馈随时优化策略
  • 行动(Action):实际执行策略的模块,涵盖软件接口操作和物理交互 。比如:检索、推理、变成等

3、大模型应用开发的四个场景

场景1:纯Prompt

  • Prompt是操作大模型的唯一接口,当用户说一句,ta回一句,在说一句,ta在回一句

场景2:Agent+Function Calling

  • Agent:AI主动提要求
  • Function Calling:需要对接外部系统时,AI要求执行某个函数
  • 当人看:你问ta[ 十一要去新疆旅游需要穿什么衣服],ta会让你查看天气预报,你看了告诉ta,ta在告诉你要穿什么衣服

图片场景3:RAG(Retrieval-Augmented Generation)

RAG:需要补充领域知识时使用

  • Embeddings:把文字转换成更易于相似度计算的编码。这种编码叫向量
  • 向量数据库:把向量存起来,方便查找
  • 向量搜索:根据输入量,找到最相似的向量

举例:考试答题时,到书上找相关内容,在结合题目组成答案

图片

 场景4:Fine-tuning(精调/微调)

举例:努力学习考试内容,长期记住,活学活用

图片

 特点:成本最高;在前面的方式解决不了问题的情况下,在使用

如何选择:

面对一个需求,如何开始,如何选择技术方案?下面是个常用思路:

图片

 三LangChain核心组件

langchain的核心组件涉及到六大模块,这六大模块提供了一个全面且强大的框架,使开发者能够创建复杂,高效且用户友好的基于大模型的应用

 

图片

 核心组件1:Model  I/O

model I/O:标准化各个大模型的输入和输出,包含输入模版,模型本身和格式化输出。 --->这个模块使用最多,也最简单

 

图片

  • Format(格式化):指代Prompts   Template,通过模版管理大模型的输入。将原始数据格式化成模型可以处理的形式,插入到一个模版问题中,然后送入模型进行处理
  • Predict(预测):指代Models,使用通用接口调用不同得到大语言模型。接收被送进来的问题,然后基于这个问题进行预测或生成回答
  • Parse(生成):指代Output Parser部分,用来从模型的推理中提取信息,并按照预先设定好得到模版来规范化输出。比如:格式化成一个结构化的JSON对象

核心组件2:Chains

Chain:“链条”,用于将对个模块串联起来组成一个完整的流程,是langchain框架中最重要的模块。-->例如:一个Chain可能包括一个Prompt模版、一个语言模型和一个输出解析器,他们一起工作以处理用户输入,生成响应并处理输出。

常见的Chain类型:

  • LLMChain:最基础的模型调用链
  • SequentialChain:多个链串联执行
  • RouterChain:自动分析用户的需求,引导到最适合的链
  • RetrievalQA:结合向量数据库进行过问答的链

核心组件3:Memory

Memory:记忆模块,用户保存对话历史或上下文信息,以便在后续对话中使用

常见的Memory类型:

  • ConversationBufferMemory:保存完整的对话历史
  • ConversationSummaryMemory:保存对话内容的精简摘要(适合长对话)
  • ConversationSummaryBufferMemory:混合型记忆机制,兼具上面两个类型的特点
  • VectorStoreRetrieverMemory:保存对话历史存储在向量数据库中

核心组件4:Agent

Agents对应智能体,是langchain的高阶能力,ta可以自主选择工具并规划执行步骤

关键组成部分:

  • AgentType:定义决策逻辑的工作流模式
  • Tool:是有一些内置的功能模块,如API调用、搜索引擎、文本处理、数据查询等工具。Agents通过这些工具来执行特定的功能
  • AgentExecutor:用来运行智能体并执行其决策的工具,负责

核心组件5:Retrieval

Retrieval:对应着RAG,检索外部数据,然后在执行生成步骤时将其传递到LLM。步骤包括文档加载、切割、Embedding等

图片

上图绿色部分是让入库存储前的操作

  • source:数据源,即大模型可以识别的多种类型的数据:视频、图片、文本、代码、文档等
  • load:负责将来自不同数据源的非结构化数据,加载为文档(Document)对象
  • Transform:负责对加载的文档进行转换和处理,比如讲过文本拆分为具有语义意义的 小块
  • Embed:将文本编码为向量的能力,一种用于嵌入文档,另一种用于嵌入查询
  • store:将向量化的数据进行存储
  • Retrieve:从大规模文本库中检索和查询相关的文本段落

核心组件6:Callbacks

Callbacks:回调机制,允许连接到LLM应用程序的各个阶段,可以监控和分析LangChain的运行情况,比如日志记录、监控、流传输等等,以优化性能

回调函数允许我们在LLM的各个阶段使用各种各样的“钩子”,从而达实现日志的记录、监控以及流式传输等功能

小结:

  • Model I/O模块:使用最多,也最简单
  • Chains模块:最重要的模块
  • Retrieval、Agent模块:大模型的主要落地场

图片

在这个基础上,其它组件要么是它们的辅助(比如:向量数据库的分块和嵌入),要么只是完成常规应用程序的任务

 

posted @ 2025-09-09 16:05  尘封~~  阅读(5)  评论(0)    收藏  举报