当前位置: 首页 > news >正文

LangChain详解(二)

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


LangChain架构设计

Models

现在市面上的模型多如牛毛,各种各样的模型不断出现,LangChain模型组件提供了与各种模型的集成,并为所有模型提供一个精简的统一接口。

LangChain目前支持三种类型的模型:LLMs、Chat Models(聊天模型)、Embeddings Models(嵌入模型).

  • LLMs: 大语言模型接收文本字符作为输入,返回的也是文本字符.

  • 聊天模型: 基于LLMs, 不同的是它接收聊天消(一种特定格式的数据)作为输入,返回的也是聊天消息.

  • 文本嵌入模型: 文本嵌入模型接收文本作为输入, 返回的是浮点数列表.

LangChain支持的三类模型,它们的使用场景不同,输入和输出不同,开发者需要根据项目需要选择相应。

LLMs使用场景最多,常用大模型的下载库:

https://huggingface.co/models

https://modelscope.cn/models

聊天消息包含下面几种类型,使用时需要按照约定传入合适的值:

  • AIMessage: 就是 AI 输出的消息,可以是针对问题的回答.

  • HumanMessage: 人类消息就是用户信息,由人给出的信息发送给LLMs的提示信息,比如“实现一个快速排序方法”.

  • SystemMessage: 可以用于指定模型具体所处的环境和背景,如角色扮演等。你可以在这里给出具体的指示,比如“作为一个代码专家”,或者“返回json格式”.

  • ChatMessage: Chat 消息可以接受任意角色的参数,但是在大多数时间,我们应该使用上面的三种类型.

LangChain支持大量的chat 模型,可以通过官网查询:

https://python.langchain.com/docs/integrations/chat/

Embeddings Models特点:将字符串作为输入,返回一个浮动数的列表。在NLP中,Embedding的作用就是将数据进行文本向量化。

Embeddings Models可以为文本创建向量映射,这样就能在向量空间里去考虑文本,执行诸如语义搜索之类的操作,比如说寻找相似的文本片段

https://python.langchain.com/docs/integrations/text_embedding/

Prompts

Prompt是指当用户输入信息给模型时加入的提示,这个提示的形式可以是zero-shot或者few-shot等方式,目的是让模型理解更为复杂的业务场景以便更好的解决问题。

提示模板:如果你有了一个起作用的提示,你可能想把它作为一个模板用于解决其他问题,LangChain就提供了PromptTemplates组件,它可以帮助你更方便的构建提示。

Chains

在LangChain中,Chains描述了将LLM与其他组件结合起来完成一个应用程序的过程.

LCEL(Lang Chain Expression Language) 是一种声明式的方法,用于轻松组合链条。

LCEL的基本语法规则是使用|符号将不同的组件连接起来,形成一个链式结构。|符号类似于Unix的管道操作符,它将一个组件的输出作为下一个组件的输入,从而实现数据的传递和处理。

上一个组件的输出作为下一个组件的输入,输出和输入的类型必须保持一致,否则不能连接。

Memory

大模型本身不具备上下文的概念,它并不保存上次交互的内容,ChatGPT之所以能够和人正常沟通对话,因为它进行了一层封装,将历史记录回传给了模型。

因此 LangChain 也提供了Memory组件, Memory分为两种类型:短期记忆和长期记忆。短期记忆一般指单一会话时传递数据,长期记忆则是处理多个会话时获取和更新信息。

RAG-Indexes

Indexes组件的目的是让LangChain具备处理文档处理的能力,包括:文档加载、检索等。注意,这里的文档不局限于txt、pdf等文本类内容,还涵盖email、区块链、视频等内容。

Indexes组件主要包含类型:

  • 文档加载器

  • 文本分割器

  • VectorStores

  • 检索器

文档加载器:

主要基于Unstructured 包,Unstructured 是一个python包,可以把各种类型的文件转换成文本。

由于模型对输入的字符长度有限制,我们在碰到很长的文本时,需要把文本分割成多个小的文本片段。

文本分割器:

文本分割最简单的方式是按照字符长度进行分割,但是这会带来很多问题,比如说如果文本是一段代码,一个函数被分割到两段之后就成了没有意义的字符,所以整体的原则是把语义相关的文本片段放在一起。

LangChain中最基本的文本分割器是CharacterTextSplitter ,它按照指定的分隔符(默认“\n\n”)进行分割,并且考虑文本片段的最大长度。

VectorStores:

VectorStores是一种特殊类型的数据库,它的作用是存储由嵌入创建的向量,提供相似查询等功能。

LangChain支持的VectorStore如下:

检索器:

  • 若需求是 “快速、独立查相似文档”(比如临时验证某问题有没有匹配内容),选 similarity_search(),能直接拿到最相似的若干文档,但高级功能得自己额外开发。

  • 若要 “深度集成到 LangChain 复杂流程”(比如多步骤 AI 问答、Agent 自动任务),选 as_retriever(),可灵活调整检索策略(混合检索、分级检索等),和其他工具联动更顺畅。

在 LangChain 的实际应用中,使用最多的三种检索器分别是基于语义搜索的VectorStoreRetriever、多查询增强检索器MultiQueryRetriever 、结果压缩检索器ContextualCompressionRetriever,以下是具体原因分析:

  1. 基于语义搜索的VectorStoreRetriever

  • 核心优势:契合自然语言处理本质,理解语义。它基于向量嵌入技术,将文本转化为向量后计算相似度,能捕捉文本语义关联,检索效果好。像 Chroma、FAISS、Pinecone 等主流向量数据库,都能通过VectorStoreRetriever轻松接入 LangChain,实现便捷的语义检索。

  • 应用广泛:在问答系统、智能客服、文档检索等场景中被大量使用。比如智能客服系统,能理解用户复杂、多样的提问表述,从知识库中精准召回相关解答文档;学术文献检索平台,可依据用户研究方向、关键词语义,返回内容相关度高的文献。LangChain 生态强调与大语言模型集成,VectorStoreRetriever能无缝配合,为大语言模型提供语义相关知识,增强回答准确性和专业性,是 RAG(检索增强生成)系统的关键组件。

  1. 多查询增强检索器MultiQueryRetriever

  • 弥补单查询缺陷:用户提问常模糊、表述单一,普通检索易漏检。MultiQueryRetriever利用大语言模型生成多个语义相近查询,扩大检索范围,提高召回率。例如用户问 “改善睡眠的方法” ,它能生成 “如何提高睡眠质量”“解决失眠的办法” 等查询,全面获取相关信息。

  • 复杂场景必备:在知识图谱构建、信息情报分析、深度学术研究等复杂场景中,对信息全面性要求高。MultiQueryRetriever能从多角度检索,为后续分析、研究提供丰富数据基础,辅助做出更准确决策、结论。在 LangChain 中配置使用相对简单,无需开发者大幅改动代码结构,就能提升检索效果,在追求高效开发的项目中,受到开发者青睐。

  1. 结果压缩检索器ContextualCompressionRetriever

  • 应对数据冗余:检索出的文档常含大量冗余信息,直接处理会增加计算成本、拖慢响应速度,还可能干扰模型生成准确回答。ContextualCompressionRetriever能去除冗余,提取关键内容,让下游模型专注核心信息,提升处理效率和回答质量。

  • 资源友好:在资源受限环境(如移动设备、边缘计算设备)或高并发场景中,能减少数据传输量和计算资源消耗。比如在手机端智能助手应用中,压缩检索结果可降低能耗、提高响应速度,优化用户体验;在高并发的在线问答平台,可减轻服务器计算压力,保证服务稳定运行。大语言模型处理过长文本时,可能出现 “注意力分散”,影响回答准确性。ContextualCompressionRetriever为大语言模型提供精简内容,使其能更好聚焦,生成更精准、有价值回答。

RAG-Agents

在 LangChain 中,AI Agent 的核心价值是 “自主规划任务并调用工具解决复杂问题”,其执行流程体现了 “决策→行动→反馈” 的闭环逻辑,而可调用的工具则覆盖了数据交互、计算、外部服务等多种能力。以下是具体解析:

一、Agent 的核心执行流程(以 LangChain 的AgentExecutor为例)

可以类比 “人解决问题的思路”:先理解问题→决定怎么做→动手尝试→根据结果调整→最终完成,具体分 5 步:

  1. 接收用户输入(问题解析)

    Agent 首先获取用户的原始问题(如 “分析最近 30 天公司产品销量 Top3,并生成可视化图表”),结合自身 “记忆”(如对话历史)理解问题边界和目标。

  2. 任务规划与决策(是否需要工具)

    Agent 根据内置的 “思考逻辑”(由大模型驱动,如 GPT-4、LLaMA 2)判断:

    • 若问题可直接回答(如 “地球自转周期”),则直接生成答案;

    • 若需要外部信息或计算(如上述销量分析问题),则规划 “需要调用哪些工具”“按什么顺序调用”。

      例:对于销量分析,Agent 会决策 “先调用数据库工具查销量数据→再用 Python 工具处理数据→最后用绘图工具生成图表”。

  3. 调用工具执行操作

    Agent 通过 “工具接口” 调用指定工具,传递标准化参数(如数据库查询 SQL、Python 代码片段)。工具执行后返回结果(如查询到的销量数据、生成的图表文件)。

  4. 结果评估与反思(是否需要多轮调用)

    Agent 分析工具返回的结果:

    • 若结果满足需求(如已获取 Top3 销量数据),则进入下一步;

    • 若结果不完整或有错误(如数据缺失、代码报错),则重新规划(如 “补充查询缺失日期的数据”“修改 Python 代码语法”),重复步骤 2-3(任务规划与决策、调用工具执行操作)。

      这一步体现了 Agent 的 “自主性”,类似人在操作中发现问题并修正。

  5. 整合结果生成最终回答

    当 Agent 确认所有必要信息已获取,会将工具返回的结果(如数据、图表链接)整理成自然语言,结合自身知识生成用户易懂的回答(如 “最近 30 天销量 Top3 的产品为 A、B、C,销量分别为 XXX,图表见链接…”)。

二、Agent 可调用的核心工具类型(附 LangChain 常用实现)

工具是 Agent 与外部世界交互的 “手脚”,LangChain 已集成数十种工具,按功能可分为 6 大类:

工具类型核心作用LangChain 常用工具应用场景
数据库交互读写结构化数据SQLDatabaseToolkit(支持 MySQL/PostgreSQL)、MongoDBTool销量查询、用户信息统计、订单数据分析
代码执行运行 Python 等代码进行计算 / 绘图PythonREPLTool(执行 Python 代码)、ShellTool(执行命令行)数据清洗、生成折线图 / 柱状图、批量文件处理
网络与 API 调用获取实时数据或外部服务RequestsTool(调用 HTTP 接口)、SearchTool(集成 Google/Bing 搜索)、WeatherAPI查实时天气、获取股票行情、调用第三方翻译服务
文档操作读写 / 解析本地文档FileToolkit(文件读写)、PDFMinerTool(PDF 解析)、Docx2txtTool(Word 解析)生成周报文档、提取合同关键信息、批量修改简历
知识检索从知识库中获取信息VectorStoreToolkit(调用向量数据库检索)、WikipediaQueryTool(维基百科检索)回答公司产品细节(查内部手册)、解释专业概念
多工具协同组合上述工具完成复杂任务Toolkit(自定义工具集)、AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION自动生成竞品分析报告(查数据→绘图→写文档)

http://www.dtcms.com/a/455093.html

相关文章:

  • 礼品公司网站源码做网站交易装备可以么
  • Softmotion in CoDeSys2.3 User Manual-5
  • 域名和网站不是一家怎么办湛江市网站建设
  • 免费asp网站源码广州市番禺区
  • Vue3-OptionsAPI 与 CompositionAPI以及setup概述
  • 电商设备网站怎么做吉林省建设工程造价信息网
  • 做网站建设多少钱网站域名年龄
  • 网站建设的行业资讯组建网站开发团队
  • 营销型网站方案国人原创wordpress cms模板:hcms
  • wordpress 站点维护社交网站开发意义
  • 网站flash网页设计基础教程结课论文
  • 无网站可以做cpc吗零基础学网站建设 知乎
  • 网站关于我们怎么做单页面乐昌网站建设
  • RK3568入门之VScode远程连接开发板,直接开发板上面编程和实验
  • 六安做网站seowordpress放在二级目录下
  • 大型网站建设兴田德润实惠个人网站毕业设计论文
  • 网站app开发平台成都seo专家
  • 网站备案不注销有什么后果怎样用模块做网站
  • 江西网站建设公司联系方式oss做网站
  • 查公司的网站有哪些龙岗网站推广
  • 网站百度排名提升竞价推广教程
  • 程序员做网站类的网站犯法吗好用的a站
  • 江苏赛华建设监理有限公司网站好2345浏览器主页
  • 专业制作网站公司哪家好在线公司网站查询
  • 懂网络维护和网站建设的专业网站的后台怎么做调查问卷
  • 充电桩安装 - 变压器容量怎么算-慧知开源充电桩平台
  • 网站建设分类方案深圳哪家网站建设
  • 西宁企业做网站网站备案多个域名
  • 网站开发全程实例食品科技学校网站模板
  • 东莞网站推广哪家好网站营销外包如何做