大语言模型学习笔记 LangChain简述

news2024/9/27 21:24:11

一、简述

        LangChain是一个由大型语言模型 (LLM) 驱动的应用程序开发框架。LangChain 旨在为开发人员提供一系列功能,利用大型语言模型简化应用程序的创建和管理。

        LangChain 可充当几乎所有 LLM 的通用接口,提供集中式开发环境来构建 LLM 应用程序并将其与外部数据源和软件工作流集成。LangChain 的模块化方法允许开发人员动态比较不同的提示甚至不同的基础模型,而无需重写代码。这种模块化环境还允许使用多个 LLM 的程序:例如,一个应用程序使用一个 LLM 来解释用户查询,另一个 LLM 来编写响应。

        LangChain 由 Harrison Chase 于 2022 年 10 月推出,随后迅速蹿红:截至 2023 年 6 月,它是 Github 上增长最快的开源项目。紧随其后的是 OpenAI 于次月推出的 ChatGPT,LangChain在广受欢迎之后, 在让生成式人工智能更容易被爱好者使用方面发挥了重要作用。 LangChain 可以促进 LLM 和自然语言处理 (NLP)的大多数用例,例如聊天机器人、智能搜索、问答、摘要服务,甚至能够实现机器人过程自动化的虚拟代理。

二、与 LLM 的整合

        LLM 不是独立的应用程序:它们是预先训练的统计模型,必须与应用程序(在某些情况下,是特定数据源)配对才能达到其目的。 

        例如,Chat-GPT 不是 LLM:它是一个聊天机器人应用程序,根据您选择的版本,它使用 GPT-3.5 或 GPT-4 语言模型。虽然 GPT 模型可以解释用户的输入并编写自然语言响应,但应用程序(除其他外)为用户提供了键入和阅读的界面以及控制聊天机器人体验的界面。即使在企业级,Chat-GPT 也不是唯一使用 GPT 模型的应用程序:微软使用 GPT-4 为 Bing Chat 提供支持。

        此外,尽管基础模型(如支持 LLM 的模型)是在海量数据集上进行预训练的,但它们并非无所不知。如果特定任务需要访问特定的上下文信息(如内部文档或领域专业知识),则 LLM 必须连接到这些外部数据源。

        即使您只是希望模型反映对当前事件的实时感知,它也需要外部信息:模型的内部数据仅在预训练的时间段内是最新的。同样,如果给定的生成式 AI 任务需要访问外部软件工作流程(例如,如果您希望虚拟代理与 Slack 集成),那么您将需要一种方法将 LLM 与该软件的 API集成。 虽然这些集成通常可以通过完全手动的代码实现,但 LangChain 等(还有一些其它选择,比如IBM watsonx平台)编排框架大大简化了该过程。它们还使尝试不同的 LLM 来比较结果变得更加容易,因为只需对代码进行很少的更改即可交换不同的模型。

三、LangChain 如何运作?

        LangChain 的核心是一个开发环境,它通过使用 抽象来简化 LLM 应用程序的编程:通过将一个或多个复杂过程表示为封装其所有组成步骤的命名组件来简化代码。

        几乎任何 LLM 都可以在 LangChain 中使用。只要您有 API 密钥,就可以将语言模型导入 LangChain 很容易。LLM旨在为所有模型提供标准接口。大多数 LLM 提供商会要求您创建一个帐户才能接收 API 密钥。其中一些 API(尤其是用于专有闭源模型的 API,例如 OpenAI 或 Anthropic 提供的 API)可能需要付费。

        许多开源模型,如 BigScience 的 BLOOM、Meta AI 的 LLaMa 和 Google 的 Flan-T5,都可以通过Hugging Face访问。使用任一服务创建帐户将允许您为该提供商提供的任何模型生成 API 密钥。 LangChain 不仅限于现成的基础模型:CustomLLM类允许自定义 LLM 包装器。同样,您可以使用Python SDK (其中包括 LangChain 集成)在 LangChain 中构建应用程序,这些应用程序使用您已经使用WatsonxLLM类(以及该模型的特定项目 ID )针对特定需求进行过训练或微调的模型。

        Langchain 的工作流程可以概括为以下几个步骤:

        提问:用户提出问题。

        向语言模型查询:问题被转换成向量表示,用于在向量数据库中进行相似性搜索。

        获取相关信息:从向量数据库中提取相关信息块,并将其输入给语言模型。

        生成答案或执行操作:语言模型现在拥有了初始问题和相关信息,能够提供答案或执行操作。

        如上图所示展示了一个智能问答系统的工作流程,它从用户提出的问题(Question)开始,然后通过相似性搜索(Similarity Search)在一个大型数据库或向量空间中找到与之相关的信息。 得到的信息与原始问题结合后,由一个处理模型分析,以产生一个答案(Answer)。 这个答案接着被用来指导一个代理采取行动(Action),这个代理可能会执行一个API调用或与外部系统交互以完成任务。 整个流程反映了数据驱动的决策过程,其中包含了从信息检索到处理,再到最终行动的自动化步骤。

四、Langchain 核心概念

        Langchain 由几个核心概念组成。

1、LLM Wrappers

        这些包装器允许你连接到大型语言模型,如 GPT-4 或 Hugging Face 提供的模型。Prompt Templates:这些模板让你避免硬编码文本输入。你可以动态地将用户输入插入到模板中,并发送给语言模型。Indexes:索引帮助你从语言模型中提取相关信息。Chains:链允许你将多个组件组合在一起,解决特定的任务,并构建完整的语言模型应用程序。Agents:代理允许语言模型与外部API交互。

        上图展示了一个复杂的语言处理系统,其中包含模型、提示、链、代理和嵌入与向量存储。 模型 Models 负责理解和生成语言,提示用于引导模型输出; 链条 Chains 代表将多个步骤串联起来完成复杂任务的过程; 代理 Agents 则用于让模型与外部环境互动,比如执行API调用。 Embedding 嵌入与向量存储 VectorStore 是数据表示和检索的手段,为模型提供必要的语言理解基础。

2、索引

        为了完成某些任务,LLM 需要访问其训练数据集中未包含的特定外部数据源,例如内部文档、电子邮件或数据集。LangChain 将此类外部文档统称为“索引”。

        文档加载器

        LangChain为第三方应用程序提供各种文档加载器。这样可以轻松从文件存储服务(云存储)、Web 内容(视频网站、web url)、协作工具、数据库(如 Pandas、MongoDB)等来源导入数据。

        向量数据库

        与“传统”结构化数据库不同,向量数据库通过将数据点转换为向量嵌入来表示数据点:以具有固定维数的向量形式的数值表示,通常使用无监督学习方法对相关数据点进行聚类。这使得即使对于海量数据集也能实现低延迟查询,从而大大提高效率。向量嵌入还存储每个向量的元数据,进一步增强了搜索可能性。 LangChain 提供超过 25 种不同嵌入方法的集成,以及超过 50 种不同的向量存储(云托管和本地)。

        文本分割器

        为了提高速度并减少计算需求,将大型文本文档分割成较小的部分通常是明智之举。LangChain 的TextSplitters将文本分割成小的、语义上有意义的块,然后可以使用您选择的方法和参数将它们组合在一起。

        检索

        一旦连接了外部知识源,模型必须能够根据需要快速检索和集成相关信息。与 watsonx 一样,LangChain 提供检索增强生成 (RAG):其检索器模块接受字符串查询作为输入,并返回Document列表作为输出。

3、记忆

        默认情况下,LLM 不具有任何先前对话的长期记忆(除非该聊天记录用作查询的输入)。LangChain 使用简单的实用程序为系统添加内存来解决此问题,选项范围从保留所有对话的全部内容到保留迄今为止的对话摘要,再到保留最近的n次交流。

4、代理

        LangChain 代理可以使用给定的语言模型作为“推理引擎”来确定要采取哪些行动。在为代理构建链时,输入包括:

  • 可以利用的可用工具列表。
  • 用户输入(如提示和查询)。
  • 任何相关的先前执行的步骤。

五、LangChain 用例

        使用 LangChain 制作的应用程序为各种用例提供​​了极大的实用性,从简单的问答和文本生成任务到使用 LLM 作为“推理引擎”的更复杂的解决方案。

        聊天机器人:聊天机器人是 LLM 最直观的用途之一。LangChain 可用于为聊天机器人的具体用途提供适当的上下文,并使用自己的 API 将聊天机器人集成到现有的通信渠道和工作流程中。

        总结:语言模型可以负责总结多种类型的文本,从分解复杂的学术文章和成绩单到提供收到的电子邮件的摘要。

        问答:使用特定文档或专门的知识库(如 Wolfram、arXiv 或 PubMed),LLM 可以从存储中检索相关信息并给出有用的答案。如果经过微调或适当提示,一些 LLM 甚至无需外部信息就能回答许多问题。

        数据增强: LLM 可用于生成用于机器学习的合成数据。例如,可以训练 LLM 来生成与训练数据集中的数据点非常相似的其他数据样本。

        虚拟代理:与正确的工作流程集成,LangChain 的代理模块可以使用 LLM 自主确定后续步骤并使用机器人流程自动化 (RPA) 采取行动。

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

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

相关文章

二十天刷leetcode【hot100】算法- day1[前端Typescript]

哈希表 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你…

适用于个人使用的十大数据恢复工具:综合指南

有许多数据恢复工具和软件可用于帮助恢复丢失或损坏的文件。通过了解您的需求并考虑这里探讨的工具,您将能够选择最佳的数据恢复软件,并希望找回您丢失的宝藏。在本综合指南中,我们将探索个人使用的十大数据恢复工具,重点介绍它们…

ESP32人脸识别开发- 基础介绍(一)

一、ESP32人脸识别的方案介绍 目前ESP32和ESP32S3都是支持的,官方推的开发板有两种,一种 ESP-EYE ,没有LCD 另一种是ESP32S3-EYE,有带LCD屏 二、ESP32人脸识别选用ESP32的优势 ESP32S3带AI 加速功能,在人脸识别的速度是比ESP32快了不少 | S…

鸿蒙 IM 即时通讯开发实践,融云 IM HarmonyOS NEXT 版

融云完成针对“纯血鸿蒙”操作系统的 SDK 研发,HarmonyOS NEXT 版融云 IM SDK 已上线,开发者可在“鸿蒙生态伙伴 SDK 市场”查询使用。 发挥 20 年通信行业技术积累和领创品牌效应,融云为社交、娱乐、游戏、电商、出行、医疗等各行业提供专业…

【深澜计费管理系统存在任意文件读取漏洞复现和检测脚本】

目录 一、漏洞介绍 二、poc利用 三、批量检测脚本 一、漏洞介绍 深澜计费管理系统存在任意文件读取漏洞。攻击者可以利用这个漏洞读取服务器上的任何文件,包括配置文件、源代码文件和敏感数据等。 二、poc利用 360 quake: favicon: "1fc27943c1f0d9b54cc…

modin,一个强大的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个强大的 Python 库 - modin。 Github地址:https://github.com/modin-project/modin 在数据科学和机器学习的领域中,Pandas 是一个非常流行的数据处理…

Excel第33享:借助易用宝将多个表格合并到一个表格

1、需求描述 现有3个销售数据的Excel表格,希望将其整合到一个表格里,如下图所示。 2、具体操作 (1)下载一个插件“易用宝”。 下载地址:最新版下载 | Excel易用宝 如果本地址失效,可以直接百度搜索“易…

2024年企业电脑加密系统排名|电脑加密系统TOP8

随着信息技术的发展,数据安全变得尤为重要。企业需要可靠的加密系统来保护敏感信息不受内部或外部威胁。以下是我为您推荐的8款企业电脑加密系统,都是知名的产品。 1.安企神系统 简介:安企神是一款专注于企业数据安全管理的综合性软件&#…

你的网站访客来自何方?GoAccess地理分析工具告诉你!

你的网站访客来自何方?GoAccess地理分析工具告诉你! 致读者: 点击上方 “雪之梦技术驿站” → 点击右上角“ … ”→ 点选“设为星标★ ” 加上星标,就不会找不到我啦!想象一下,你站在世界地图前,手中的放大镜缓缓移动,寻找着那些隐藏在数字海洋中的神秘岛屿——IP地址…

下一个十年能否赚到钱,就看你消化得了这篇文章不

所有的互联网创业者在2024年都会迎来前所未有的挑战,因为中国经济正在发生翻天覆地的变化,人口红利的消失,流量红利的消失,也就是说我们从一个增量时代到存量时代的过渡中,所以这两年我们可以清晰的看到很多传统老板正…

【传知代码】一款轻量级的隐私保护推荐系统(论文复现)

在当今信息爆炸的时代,个性化推荐系统在我们的日常生活中扮演着越来越重要的角色。然而,随着个人数据的广泛收集和利用,隐私保护成为了一个不可忽视的挑战。为了平衡推荐系统的效用与用户隐私的保护,一款轻量级的隐私保护推荐系统…

装win7出现0x0000007b蓝屏原因分析及解决方法

最近有网友问我装win7出现0x0000007b蓝屏怎么办?0x0000007b电脑蓝屏通常情况是硬盘的存储控制器驱动加载错误导致故障。出现0x0000007b蓝屏代码的原因有很多比如硬盘模式、安装的系统没有集成相关的磁盘控制器驱动等,下面小编就教大家装win7出现0x000000…

VFS(虚拟文件系统)是什么,有真实的文件系统吗?

文章目录 1 VFS(虚拟文件系统)是什么1.1 VFS 的设计目的 2 VFS 的工作原理2.1 VFS 的文件操作流程 3 真实的文件系统3.1 常见的真实文件系统3.2 真实文件系统与 VFS 的关系 4 总结封面 1 VFS(虚拟文件系统)是什么 虚拟文件系统&a…

水论文如何找创新,优秀者模仿,末尾有例子示范_来自B站水论文的程序猿

系列文章目录 文章目录 系列文章目录一、水论文如何找创新关键在“找”1、相似领域找2、找到后3、如何稍微改动4、 自己领域找 二、示例 一、水论文如何找创新关键在“找” 1、相似领域找 比如某人研究视频描述中的单句视频描述,他可以去密集视频描述领域找相关论…

springMVC中从Excel文件中导入导出数据

目录 1. 数据库展示2. 导入依赖3. 写方法3.1 导入数据3.2 导出数据 4. 效果5. 不足6. 参考链接 1. 数据库展示 2. 导入依赖 pom.xml <!--文件上传处理--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId>&…

邻接表(链式存储)实现图的存储

目录 一. 前言 二. 用邻接表创建无向网的完整源代码 一. 前言 无向图邻接表的形式如下所示&#xff1a; 其中类如v1的结点为头结点&#xff0c;头结点后面的结点为边结点&#xff0c;表示与头结点中顶点相连的边的信息。 采用邻接表创建无向网的算法思路&#xff1a; 1&#…

GPU爆显存 | Windows下杀死GPU进程释放显存

文章目录 0 问题引入1 解决方案 0 问题引入 深度学习的时候&#xff0c;用CUDA加速训练了&#xff0c;但是进程没有完全结束&#xff0c;再跑的时候爆显存了。 1 解决方案 查看当前的GPU进程 nvidia-smi通过如下命令来杀死指定的进程。 taskkill /PID PID号 /F //例如&am…

单工和双工、半双工和全双工、波特率

目录 一、单工和双工 二、半双工和全双工 三、波特率 &#x1f308;你好呀&#xff01;我是 程序猿 &#x1f30c; 2024感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&#xff01; 一、单工和双工 单工&#xff1a…

ComfyUI: 报EP Error错误(onnxruntime)

&#x1f936;背景描述 在使用反推提示词的时候&#xff0c;按照上一篇介绍的方法是可以正常使用的。 但是看后台的时候&#xff0c;发现有一个错误&#xff1a; *************** EP Error *************** EP Error D:\a\_work\1\s\onnxruntime\python\onnxruntime_pybind_s…

分布式领域扩展点设计稿

分布式领域扩展点设计稿 背景坐标设计理念设计图Quick Start相关组件 背景 随着交易业务和基础知识的沉淀&#xff0c;愈发觉得扩展点可以在大型交易分布式架构中可以做更多的事情。 经过一个月的思考&#xff0c;决定将 单点领域扩展点&#xff08;savior-ext&#xff09; 从…