LangChain简介

LangChain 是一个用于构建基于大语言模型(LLM)的应用程序的开源框架,它提供了一套工具、组件和接口, 可以将 LLM 模型、向量数据库、交互层 Prompt、外部知识、外部工具整合到一起,进而可以自由构建 LLM 应用。
LangChain 主要能做这些事:

1. 连接外部数据:大语言模型的训练数据有时间限制,且无法直接访问实时信息或私有数据。LangChain 可以连接数据库、文档(PDF、Word 等)、网页等外部数据源,让模型能基于最新或专有数据生成回答。例如,让模型结合公司内部文档回答员工问题,或结合实时新闻分析市场动态。2. 调用外部工具:除了处理文本,LangChain 能让模型调用各种外部工具完成任务,比如调用计算器做数学运算、调用地图 API 获取地理位置信息、调用代码解释器执行代码、甚至调用搜索引擎获取实时数据。例如,让模型帮你查询天气、预订机票,或根据数据生成图表。3. 构建复杂工作流:对于多步骤的任务,LangChain 支持将多个操作(如 “先查询数据→再分析数据→最后生成报告”)组合成一个连贯的工作流,让模型按步骤完成复杂任务。例如,自动生成市场调研报告:先调用工具收集行业数据,再让模型分析数据,最后生成结构化报告。4. 实现记忆功能:在对话场景中,LangChain 可以帮助模型 “记住” 之前的对话内容,让对话更连贯自然。比如聊天机器人能根据历史对话上下文理解用户的潜在需求。5. 支持多模态交互:除了文本,LangChain 还能扩展到大语言模型与图像、音频等其他模态数据的交互,构建多模态应用。

langchain核心组件包括:
模型(Models):封装各类 LLM(如 GPT、Claude)和嵌入模型(用于数据向量化);
提示(Prompts):提示词模板、输出解析器(规范模型输出格式);
Indexes(索引):从外部数据中高效查找与问题相关的信息;
链(Chains):将多个组件按逻辑串联(如 “提示→模型调用→结果处理”);
记忆(Memory):保存对话上下文,支持多轮交互;
智能体(Agents):让模型自主决策调用哪些工具或组件完成任务。
LangChain组件讲解

1. Models(模型)
langchain的模型核心类型有

LLM(大语言模型)
单轮文本生成、摘要, 常用于内容创作、简单问答②ChatModel(聊天模型)
多轮对话、上下文交互, 常用于聊天机器人、客服系统
ps: 聊天模型与传统 LLM(输入输出均为纯文本)不同,ChatModel 的输入是结构化的消息列表(包含角色和内容),输出是单一的消息对象。
聊天模型天然适合多轮对话,通过在消息列表中保留历史对话,模型可以理解上下文逻辑(例如 “它”“这个” 等代词指代的内容)。
LLM是 “文本生成工具”,ChatModel是 “对话交互引擎”③Embedding Model (嵌入模型)
文本语义编码、相似度计算,用于文档检索(RAG)、聚类分析

2.Prompts(提示词)
在 LangChain 中,Prompts(提示词)是连接用户输入与语言模型的核心桥梁,它定义了模型的输入格式、任务目标和输出要求。


Prompts 的核心作用
明确任务目标:告诉模型需要完成什么任务(如 “总结文本”“翻译句子”“生成代码”)。
规范输入输出:定义用户输入的格式和模型输出的格式(如 “用 JSON 返回结果”“分点回答”)。
注入背景信息:提供上下文、约束条件或示例,帮助模型更准确地理解需求(如 “你是一名医生,请用专业术语回答”)。Prompts 的关键组件:PromptTemplate(提示模板): 最基础的提示词组件,用于定义包含变量的模板,运行时动态替换变量值。
② ChatPromptTemplate(聊天提示模板): 专为ChatModel设计,支持多角色消息(如SystemMessageHumanMessage)的模板化。
③ FewShotPromptTemplate(少样本提示模板):通过提供示例(few-shot examples)引导模型输出格式,适合需要严格格式约束的任务(如分类、提取)。
④ OutputParser输出解析器)配合提示词使用,将模型的原始输出转换为结构化格式(如 JSON、列表),方便后续处理。

3.Indexes(索引)
Indexes(索引)是处理和组织外部数据(如文档、文本)的核心模块,其主要作用是将原始数据转换为可高效检索的格式,为后续的检索增强生成(RAG)等功能提供支持。


Indexes 的核心功能
①数据加载(Loading):从多种来源加载数据(如 PDF、TXT、网页、数据库等)。
②文本分割(Splitting):将长文档拆分为小块(chunks),避免超出模型的上下文长度限制。
③嵌入生成(Embedding):将文本块转换为向量(通过Embedding Model),捕捉语义信息。
④向量存储(Vector Stores):将向量存入专门的数据库(如 ChromaPinecone),支持高效的相似度检索。Indexes 的核心组件
①文档加载器(Document Loaders)
负责从不同来源加载数据,并统一转换为 LangChainDocument对象(包含page_content文本内容和metadata元数据)。
常用加载器:PyPDFLoader:加载 PDF 文件;TextLoader:加载 TXT 文件;WebBaseLoader:加载网页内容;DirectoryLoader:批量加载文件夹中的文件。②文本分割器(Text Splitters)
将长文档分割为语义连贯的小块(chunks),平衡 “上下文完整性” 和 “检索精度”。
核心分割器:
RecursiveCharacterTextSplitter(推荐):按标点符号、空格等递归分割,适合大多数文本;
CharacterTextSplitter:按固定字符数分割,简单但可能破坏语义;
TokenTextSplitter:按模型 token 数分割,精准控制长度。③向量存储(Vector Stores)
存储文本块的向量表示,支持高效的相似度检索(如余弦相似度)
LangChain 集成了很多常用的向量数据库,包括 FaissMilvusPineconeChroma 等④检索器(Retrievers)
主要用于从海量文档中快速找到与当前问题最相关的信息,是实现 “检索增强生成(RAG)” 的核心工具。
LangChain 提供了多种检索器:
VectorStoreRetriever(向量存储检索器): 基于向量相似度检索
BM25Retriever(关键词检索器):基于传统的 TF-IDF(词频 - 逆文档频率)算法,通过关键词匹配检索文档,不依赖向量嵌入。
ContextualCompressionRetriever(上下文压缩检索器): 在基础检索结果(如向量检索)的基础上,用 LLM 对文档片段进行 “压缩” 或 “过滤”,保留与问题最相关的核心信息。
ToolRetriever(工具检索器): 将检索能力封装为工具,供智能体(Agent)调用,支持动态决定何时检索(如 “不确定答案时自动检索”)。

4. Chains(链)
Chains(链)是将多个组件(如模型、提示词、工具、检索器等)按特定逻辑组合起来的核心机制,用于实现复杂任务的自动化流程。

Chains 的核心价值
组件协同:将独立的组件(如PromptTemplate→LLM→OutputParser)串联起来,形成完整的任务流水线。
流程自动化:支持多步骤任务(如 “检索文档→生成回答→格式化输出”),无需手动干预。
抽象复杂度:隐藏组件交互的细节,开发者只需关注整体逻辑(如 “调用链→获取结果”)。Chains 的主要类型
LangChain 提供了数十种链,按功能可分为基础链、组合链和专用链三大类
基础链:单一功能的简单组合
LLMChain: 最基础的链,将PromptTemplate与LLM/ChatModel组合,实现 “提示词→模型调用” 的简单流程。
SimpleSequentialChain: 按顺序执行多个链,前一个链的输出作为后一个链的输入(仅支持单输入单输出)。组合链:多步骤复杂流程
SequentialChain: 支持多输入多输出的顺序链,可指定每个链的输入来源和输出目标(更灵活)。
RouterChain: 根据输入动态选择执行哪个链(类似 “路由” 功能),适合需要分支逻辑的场景。专用链:针对特定场景优化
RetrievalQA: 结合检索器(Retriever)和模型,实现 “检索相关文档→生成回答” 的 RAG(检索增强生成)流程。
ConversationalRetrievalChain:RetrievalQA基础上增加对话记忆,支持 “多轮对话 + 检索”适用场景
单步骤任务(如生成文本、翻译)→ 用LLMChain;
固定流程的多步骤任务(如 “生成标题→写摘要→翻译”)→ 用SequentialChain;
动态分支任务(如 “根据问题类型选择专家”)→ 用RouterChain;
基于文档的问答→ 用RetrievalQA;
多轮对话 + 检索→ 用ConversationalRetrievalChain

5. Memory(记忆)
Memory(记忆)是用于存储和管理对话历史的核心组件,它让语言模型能够 “记住” 之前的交互内容,从而实现连贯的多轮对话。没有记忆组件,模型每次调用都相当于 “全新对话”,就无法理解上下文关联
Memory 的核心作用
保存对话历史:存储用户与 AI 的交互记录(问题和回答)。
提供上下文:将相关历史对话传入模型,让模型理解当前对话的背景。
支持多轮交互:让对话能够自然延续(如 “上一个问题你提到…,再详细说说”)。

langchain 提供了不同的 Memory 组件

ConversationBufferMemory(基础缓冲记忆)
完整保存所有对话历史(用户消息 + AI 回复)。
简单直观单,但历史过长时会超出模型上下文长度限制②ConversationBufferWindowMemory(窗口记忆)
只保留最近的k轮对话(k为窗口大小),避免历史过长③  ConversationSummaryMemory(摘要记忆)
用 LLM 将对话历史总结为摘要,只保留摘要而非完整对话。
大幅压缩历史长度,适合超长对话。可能丢失细节(取决于摘要质量)。④ ConversationSummaryBufferMemory(摘要缓存记忆)
积核摘要记忆并使用token长度来确定何时刷新交互。⑤ ConversationKGMemory(知识图谱记忆)
从对话中提取实体和关系,构建简单知识图谱。
结构化存储关键信息,适合需要提取实体关系的场景(如客户咨询)。⑥ VectorStoreRetrieverMemory向量存储记忆
它是将所有之前的对话通过向量的方式存储到 VectorDB(向量数据库)中,
在每一轮新的对话中,会根据用户的输入信息,匹配向量数据库中最相似的 K 组对话。

6.Agents(代理)
在 LangChain 中,Agent(智能体)是一种能够自主决策、调用工具并逐步解决复杂任务的高级组件,
它赋予大型语言模型(LLM)决策和行动能力。Agent 能够根据用户输入动态选择并调用工具(Tools)、处理复杂任务、维护状态,并通过迭代推理(如 ReAct 框架)逐步解决问题。
Agent 的本质是 LLM(大脑) + 工具集(Tools) + 决策逻辑(Executor)

关键组件

LLM/ChatModel:作为 “大脑”,负责推理、决策和生成指令(如 GPT-4Claude 等)
Agent: 决策中枢,选择工具或返回答案	 如: ZeroShotAgent, ReActAgent
Tools: 可执行的外部函数	例如: 搜索工具、计算器、自定义 API
AgentExecutor: 运行代理的循环控制器	例如: 处理迭代、错误、超时
Memory: 存储对话/任务状态	  例如: ConversationBufferMemory

常用 Agent 类型

① zero-shot-react-description	
基于工具描述直接决定调用哪个工具(无记忆)	
适用简单工具调用、单轮任务② structured-chat-zero-shot-react-description	
支持结构化输出(如 JSON),适合复杂工具参数	
适用需要精确控制工具输入的场景③ chat-conversational-react-description	
结合对话记忆,支持多轮交互	
适用聊天式任务、需要上下文的工具调用④self-ask-with-search	
通过 “自问自答” 分解问题,逐步调用工具	
适用复杂推理任务(如多步数学题

Agent 的工作流程

1. 接收问题:理解用户需要 例如计算质数之和。
2. 思考决策:是否需要工具? 选择哪个工具? (因涉及数学计算所以判断出需要调用Python_REPL工具)。
3. 生成工具调用:构造 Python 代码(如编写质数判断函数并求和)。
4.执行工具:运行代码并获取结果(1060)。
5.整理回答:将工具返回的结果用自然语言解释给用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93142.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么哈希表(字典)的查询速度有时会突然变慢

哈希表(在许多语言中被称为“字典”或“关联数组”)的查询速度,在理想情况下,应是接近“瞬时”的常数时间,然而,在特定场景下,其性能之所以会突然、无征兆地变慢,其根源,…

whisper 语种检测学习笔记

目录 transformers推理: transformers 源代码 网上的语种检测调用例子: 语种检测 api transformers推理: https://github.com/openai/whisper/blob/c0d2f624c09dc18e709e37c2ad90c039a4eb72a2/whisper/decoding.py waveform, sample_rat…

第1节 从函数到神经网络:AI思路的逆袭之路

🤔 开篇灵魂拷问 是不是觉得AI知识体系庞大到吓人?看了一堆快餐视频还是云里雾里?别慌!这个系列就是要帮你打通任督二脉,用"既快又慢、既深入又肤浅、既有趣又严肃"的方式讲透AI基础知识! &…

【科研绘图系列】R语言绘制多种饼图

文章目录 介绍 加载R包 数据下载 导入数据 数据预处理 画图1 画图2 画图3 画图4 画图5 画图6 系统信息 参考 介绍 【科研绘图系列】R语言绘制多种饼图 加载R包 rm(list = ls()) library(ggstatsplot) library(ggplot2) library(plotrix) library(ggpubr

vue3权限树封装成组件

vue3权限树组件 功能&#xff1a; 1、勾选节点、自动把父节点勾选。 2、取消勾选、子节点全部取消勾选。检查父节点&#xff0c;如果只有这个子节点、遍历把父节点取消勾选 3、filter过滤不仅展示父节点、相关子节点同时展示 4、 高亮显示所有过滤数据 效果图父组件引用 <te…

铨林接纸机学习记录1

光电开关学习做保养也是检查这些东西&#xff0c;包括气路有没漏气&#xff0c;固定件松动、轨道清洁之内刀座暂停光电I23刀座行程磁性开关&#xff0c;这个是安全警戒光电&#xff0c;驱动侧发射信号&#xff0c;操作侧接收刀座暂停光电正常运行是空白的&#xff0c;当出现遮挡…

47.分布式事务理论

所有的事务都必须满足ACID的原则: 原子性:事务中的所有操作,要么全部成功,要么全部失败。 一致性:要保证数据库内部完整性约束、声明性约束。 持久性:对数据库做的一切修改将永久保存,不管是否出现故障。 隔离性:对同一资源操作的事务不能同时发生。 分布式事务的…

【软考】进度管理知识库工具-挺方便

进度管理知识库 全面解析项目管理中的进度管理核心概念、工具、技术和最佳实践&#xff0c;帮助您高效管理项目时间线 六步流程法 规划进度管理 - 制定进度管理计划 定义活动 - 识别和记录项目活动 排列活动顺序 - 确定活动间的逻辑关系 估算活动持续时间 - 估算完成单项活动所…

PDF Replacer:高效便捷的PDF文档内容替换专家

在日常工作和学习中&#xff0c;PDF文件因其格式稳定、兼容性强而被广泛使用。然而&#xff0c;PDF文件的编辑和修改往往比其他文档格式更加复杂。PDF Replacer正是为了解决这一痛点而设计的&#xff0c;它是一款方便实用的PDF文档替换工具&#xff0c;能够帮助用户快速替换PDF…

Java中MybatisPlus使用多线程多数据源失效

Java中MybatisPlus使用多线程多数据源失效 文章目录Java中MybatisPlus使用多线程多数据源失效一&#xff1a;背景二&#xff1a;解决方法三&#xff1a;其他导致DS失效的条件3.1、Transactional一&#xff1a;背景 Mybatis-Plus使用异步任务后不能找到指定设置的DS数据库&…

机器翻译:模型微调(Fine-tuning)与调优详解

文章目录一、模型微调&#xff08;Fine-tuning&#xff09;概述1.1 模型微调是什么&#xff1f;1.2 为什么需要微调&#xff1f;1.3 微调的核心步骤1.4 选择微调策略1.5 训练与优化1.6 微调 vs. 从头训练&#xff08;From Scratch&#xff09;1.7 微调工具推荐二、模型调优&…

如何使用 AI 大语言模型解决生活中的实际小事情?

在 AI 技术飞速发展的今天&#xff0c;大语言模型早已不是实验室里的 “黑科技”&#xff0c;而是能实实在在融入日常生活的实用工具。从日常琐事处理到学习工作辅助&#xff0c;只需掌握简单的使用技巧&#xff0c;就能让 AI 成为你的 “生活小助手”。本文将通过具体场景案例…

佰力博检测与您探讨低温条件下如何测介电性能

在低温条件下测量介电性能时&#xff0c;需要综合考虑温度控制、样品制备、测试设备和测量方法等多个方面。1.温度控制与降温方法1.低温测试中&#xff0c;温度的精确控制是关键。低温测试通常采用液氮或液氮泵进行降温&#xff0c;以达到极低温度&#xff08;如-196C&#xff…

大规模分布式光伏并网后对电力系统的影响

光伏发电作为一种清洁、可再生的能源&#xff0c;正融入我们的电力系统&#xff0c;但是&#xff0c;随着新能源的发展&#xff0c;光伏发电的大规模并网&#xff0c;也给电网的稳定运行带来了新的挑战。下面小编将从四个方面&#xff0c;分别论述光伏并网对电网的影响以及如何…

LeetCode热题100--146.LRU缓存--中等

1. 题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则…

机器学习学习总结

一、机器学习到底是什么&#xff1f; 简单说&#xff0c;机器学习就是让计算机像人一样 “从经验中学习”。比如我们学骑自行车&#xff0c;摔多了就知道怎么保持平衡&#xff1b;计算机处理任务时&#xff0c;也能通过分析大量 “经验数据”&#xff0c;自己找到规律&#xff…

Boost库中boost::function函数使用详解

1. 函数作用 boost::function 是 Boost 库提供的一个 通用函数封装器&#xff0c;可用于存储、传递和调用任意可调用对象&#xff08;如普通函数、函数指针、Lambda、函数对象、成员函数指针等&#xff09;。它类似于 C11 及以上标准的 std::function。 作用总结&#xff1a; 可…

SQL Server安全删除数据并释放空间的技术方案

在SQL Server中执行大规模数据删除时&#xff0c;直接使用DELETE语句可能导致日志文件暴涨、事务阻塞和性能下降。以下提供一种安全删除数据并释放磁盘空间的完整方案&#xff1a; 方案核心步骤 -- 设置读未提交隔离级别&#xff08;避免锁竞争&#xff09; SET TRAN ISOLATION…

EgoVLA——根据第一视角的人类视频中训练的VLA模型:助力家具组装等人形灵巧操作任务的攻克(利用可穿戴手部追踪)

前言 我在此文《ForceVLA——将具备力感知的MoE整合进π0的动作专家中&#xff1a;从而融合“视觉 语言 力反馈”三者实现精密插拔》的开头说过&#xff0c;我司「七月在线」目前侧重以下两大本体的场景落地 人形层面&#xff0c;侧重 1.1 人形灵巧操作 1.2 人形展厅讲解机械…

厨具新风尚,解锁厨房新体验

在快节奏的现代生活中&#xff0c;厨房已不仅仅是烹饪的场所&#xff0c;更是家庭温馨与创意的源泉。一款好的厨具&#xff0c;不仅能让烹饪变得轻松愉悦&#xff0c;更能为餐桌增添无限风味。今天&#xff0c;就让我们一起走进厨具的新世界&#xff0c;解锁那些令人爱不释手的…