Elasticsearch:LangChain 是什么?

当你将应用程序称为 “AI(人工智能)” 时,这通常意味着它包含与学习模型(例如大型语言模型,或 LLM)的交互。 [不那么]有趣的事实是,LLM 的使用实际上并不是使应用程序变得智能的原因。 它的特殊之处在于实时使用神经网络。 碰巧 LLM 是使用神经网络构建的。 人工智能应用程序通常实时处理数据。 这意味着,虽然它拥有大量预先训练的知识,但它可以在数据被提交到应用程序时接收数据并为 LLM 提供最新信息。

“人工智能应用程序” 的替代方案包括使用机器学习模型。 这些应用程序仍然非常智能,但它们的数据处理更限于已经接受过训练的内容。 没有太多实时信息。 预训练模型与使用神经网络似乎是一个很小的微妙之处,因为它们似乎都在做同样的事情,但在数据科学领域,这是一个很大的区别。

人工智能应用程序通常是一组处理接收到的数据的步骤。 当你点击查看电子商务网站上的商品时,该点击事件将发送到网站并通过人工智能应用程序进行处理,以决定应在页面上显示的其他 “建议商品”(如果你正在犹豫 ,是的,他们正在观看)。 该应用程序将获得正在查看的商品的上下文、你的购物车中的商品以及你之前查看过并表现出兴趣的商品。所有这些数据都将提供给 LLM,以决定你可能感兴趣的其他商品。

当你构建这样的应用程序时,管道中的步骤会编排应包含哪些服务、如何 “馈送” 数据以及数据将采用什么形式。 正如你可以想象的那样,这些都是复杂的操作,需要 API、数据结构、网络访问、安全性等等。

LangChain 是一个 Python 框架,可以帮助人们构建人工智能应用程序并简化所有需求,而无需编写所有小细节。 与 LLM 的互动就是一个例子。 一旦所有信息都以简洁的提示形式汇集在一起,你将需要将其提交给 LLM 以完成。 LangChain 为流行的 LLM(如 OpenAI GPT)提供了预构建的库,因此程序员所要做的就是提供他们的凭据和提示并等待响应。 他们无需担心 OpenAI 的任何 API 细节,例如端点、协议和身份验证。

但 LLM 互动只是 LangChain 可以提供帮助的开始。 让我们看一下该框架的一些主要功能。

LangChain 的关键组件有哪些?

以下是 LangChain 最受欢迎的功能的总结。 这并不是 LangChain 所提供的所有功能的详尽列表,而是一个精心策划的列表,列出了它的一些最佳功能。

与模型交流

在构建人工智能应用程序时,你需要一种与模型进行通信的方法(该模型可能是 LLM)。 此外,如果你的应用遵循检索增强生成 (RAG) 模式、提交 LLM 完成提示或打开与模型的聊天会话,你可能需要生成向量嵌入。 LangChain 特别关注与模型的常见交互,并使创建完整的解决方案变得非常容易(了解有关模型以及 LangChain 支持哪些 LLM 的更多信息),

通常,应用程序会一次又一次地执行相同的操作。 无论实时数据是什么,用于与模型通信的提示都会有一些保持不变的文本。 LangChain有一个专门的提示库来帮助参数化常见的提示文本。 这意味着提示可以包含占位符,用于在提交 LLM 之前填写的区域。 你无需在提示符上进行非常低效的字符串替换,而是向 LangChain 提供每个占位符及其值的映射。 它将负责有效地让提示做好完成的准备(了解有关提示的更多信息)。

一旦模型完成其工作并响应完成,应用程序很可能需要在继续之前进行一些后处理。 可能需要对字符进行一些简单的清理,或者(最有可能)需要将完成包含在类对象的参数中。 LangChain 的输出解析器通过提供 LLM 的响应方式和应用程序的自定义类之间的深度集成来快速解决此问题(了解有关输出解析器的更多信息)。

数据检索

创建模型后,会使用一些数据集对其进行训练。 根据训练期间使用的数据量,模型被认为是小或大。 例如,像 GPT 这样的 LLM 已经在整个公共互联网上接受了培训。 如此大的数据量值得贴上 “大” 标签。 挑战在于,无论模型使用多少数据进行训练,它仍然是固定数量。 模型完成后,数据并没有停止。

RAG 是一种应用程序设计,其中应用程序首先将输入数据与其他最新数据进行比较,以获得更好的上下文。 然后,将最新的上下文提供给 LLM,以提供最新的响应。 但这并不像快速查询并继续与 LLM 互动那么简单。 必须执行一些中间步骤。 此外,数据必须以可理解的格式存储,以便数据的检索简单且一致。

LangChain 提供了一些库来帮助在应用程序中实现 RAG 模式。 首先,为了获得正确的背景,数据可能需要来自不同的来源。 每个来源可能遵循不同的模式。 LangChain 提供 “document” 对象作为 “标准化” 来自多个不同来源的数据的一种方式。 作为文档 (document),数据可以轻松地以非常结构化的方式在不同的链之间传递。

用于查找最新上下文的存储不是典型的关系数据库。 它是数据库的特殊版本,可用于存储和检索向量。 现代数据库,如 Elasticsearch,提供向量选项。 还有一些特定于向量的数据库仅用于存储向量嵌入。 LangChain 为所有流行的向量商店提供集成,包括 Elasticsearch。 它还提供了一些特定于向量搜索的非常方便的功能,包括相似性搜索和向量相似性搜索,从而使事情更进一步。 你可以使用最大边际相关性搜索来调整向量搜索。 当你想要获得正确的上下文时,这会非常方便 —— 向 LLM 提供的数据既不要太多,也不要太少。

聊天记忆

如今,聊天机器人风靡一时。 这是人工智能应用程序开发的 “hello word”。 想想 “聊天” 的概念,当你和朋友聊天时,谈话有一定的流程。 随着事情的进展,你们都会分享已经说过的事情的历史。 这有助于推动对话的进展。

当人工智能应用程序与 LLM 聊天时,它需要向 LLM 提供一些有关所询问内容的历史信息(上下文)。 如果没有给出上下文,对话将会非常枯燥并且效率不高。 在前面的数据检索部分中,RAG 模式被描述为添加此上下文的一种方法。

但有时,背景需要是当下的。 当你与朋友聊天时,你很可能没有做笔记,也没有试图记住所说的每一个字。 如果你这样做的话,谈话就变成了一场讲座 —— 这并不有趣。 与 LLM 的聊天也是如此。

LangChain提供了一个特殊的内存库,应用程序可以将聊天历史记录保存到快速查找存储中。 数据以特定方式存储在可以提供非常快速查找的存储类型中。 通常它不是关系数据库。 它通常是 NoSQL 或内存存储。

能够快速检索聊天历史并将其注入 LLM 的提示中是创建非常智能的上下文应用程序的强大方法。

LangChain 是如何工作的?

当你使用信用卡支付某项费用时,需要按特定顺序执行某些步骤。 首先,需要收集和保护卡信息。 然后需要将其传输到处理器。 处理者确保卡帐户有效并且资金可用。 处理者将资金从您的帐户转移到商家的帐户。 最后,所有这些的确认都会被传回,并且你会收到一张收据。 每个步骤都必须按特定顺序执行。 你无法从没有资金的账户中提取资金。 与 LLM 的互动也是如此。 你无法在没有上下文的情况下向 LLM 发送提示。 此时你只需进行互联网搜索即可。

LangChain 中的 “链” 带来了将人工智能动作按顺序组合在一起的想法,以创建一个处理管道。 每个行动或链都是完成总体目标所需的步骤。 考虑 RAG 模式,它从用户提交问题开始。 根据该文本创建嵌入,在向量数据库上进行查找以获得有关该问题的更多上下文,然后使用原始问题和检索中的上下文创建提示。 提示被提交给 LLM,LLM 以智能完成提示的方式进行响应。

RAG 模式中的所有步骤都需要连续发生。 如果过程中出现任何错误,处理应该停止。 LangChain 提供了“链”结构,以特定的方式和特定的配置将步骤连接在一起。 所有 LangChain 库都遵循这种链结构,使得移动步骤和创建强大的处理管道变得非常容易。

LangChain 应用示例

RAG

LangChain 提供了几种实现 RAG 模式的不同场景。 有一个简单的问题/答案示例,它是向提示添加上下文的经典用法。 还有 RAG-over-code 示例可以帮助开发人员编写代码。 聊天历史记录示例为 LLM 创建了非常智能的聊天体验。 请访问 LangChain 的用例区了解更多信息。

聊天机器人

聊天机器人是 LLM 互动的基石。 LangChain 提供了一个入门示例,帮助你在短短几分钟内创建一个 AI 应用程序。

合成数据生成

在开发应用程序时,工程师编写测试以确保其所有功能都按预期工作。 这些被称为单元测试。 开发人员还进行负载测试,以确保应用程序可以处理生产中遇到的负载。 要运行这些测试中的任何一个,你都需要数据。 有时数据很多。 LangChain 的合成数据生成示例使用 LLM 来人工生成数据。 然后,开发人员可以使用该数据来测试他们的应用程序。

使用自然语言与数据库交互

编写 SQL 查询并不是很有趣。 编写查询需要将现实问题转换为 SQL 语法。 像 “How many chunks can a woodchuck chuck” 这样的简单问题将被转换为 “select count(chunk) from chunks where animal like ‘woodchuck’”。 LangChain 的 SQL 示例使用 LLM 将自然语言问题转换为 SQL 方言。

LangChain 入门

无论你现有的 Python 应用程序需要学习新的 AI 技巧还是从头开始,你都需要将 LangChain 库添加到需求中。

假设你计划与 LLM 进行交互,下一步就是安装其支持库。 在此查看 LLM 的完整列表。

就这样,乐趣开始了! 你可以创建 PromptTemplate + LLM + OutputParser,也可以创建一个简单的提示模板应用程序。 在 LangChain 文档中阅读有关与模型、数据检索、链和内存交互的更多信息。

如何结合 Elasticsearch 使用 LangChain

如果你想更多地了解如何结合 Elasticsearch 来使用 LangChain,请详细阅读文章 “Elastic:开发者上手指南” 中的 “NLP - 自然语言处理及向量搜索” 章节。

在那里,我们可以找到很多相关的文章来介绍如何在 Elasticsearch Stack 中使用 LangChain。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux中vi常用命令-批量替换

在日常服务器日志查看中常用到的命令有grep、tail等,有时想查看详细日志,用到vi命令,记录下来,方便查看。 操作文件:test.properites 一、查看与编辑 查看命令:vi 文件名 编辑命令:按键 i&…

【SAS Planet 下载地图瓦片-读取】

SAS Planet下载地图瓦片请看上一篇 详细介绍了下载方法 【SAS Planet 下载地图瓦片】-CSDN博客 准备工作: 1.提前下载好地图瓦片数据 SAS Planet下载地图瓦片默认存储路径如下 默认存储格式为 .sqlitedb 2.提前准备好 java开发环境和开发工具,新建 一个…

印度客户来访广东育菁装备考察桌面型数控机床

印度客户来访广东育菁装备考察桌面型数控机床,这是一个重要的商业活动,对于育菁装备来说,这是一个展示产品和技术实力,拓展国际市场的好机会。 在接待印度客户的过程中,育菁装备需要做好充分的准备,包括&am…

YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)

论文地址:官方论文地址 代码地址:官方代码地址 一、本文介绍 本文给大家带来的改进机制是可切换的空洞卷积(Switchable Atrous Convolution, SAC)是一种创新的卷积网络机制,专为增强物体检测和分割任务中的特征提取而…

Linux socket编程(6):IO复用之select原理及例子

文章目录 1 五种I/O模型1.1 阻塞I/O模型1.2 非阻塞I/O模型1.3 I/O复用模型1.4 信号驱动I/O模型1.5 异步I/O模型 2 select函数3 select实战:实现多个套接字监听3.1 客户端3.2 服务端3.3 实验结果3.4 完整代码 在之前的网络编程中,我们遇到了一个问题&…

初识数据结构

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 熬过了我们不想要的生活&#xf…

RT-DETR论文阅读笔记(包括YOLO版本训练和官方版本训练)

论文地址:RT-DETR论文地址 代码地址:RT-DETR官方下载地址 大家如果想看更详细训练、推理、部署、验证等教程可以看我的另一篇博客里面有更详细的介绍 内容回顾:详解RT-DETR网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署 目录 一…

【计算机网络笔记】多路访问控制(MAC)协议——轮转访问MAC协议

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

HCIA-RS基础-RIP路由协议

前言: RIP路由协议是一种常用的距离矢量路由协议,广泛应用于小规模网络中。本文将详细介绍RIP路由协议的两个版本:RIPv1和RIPv2,并介绍RIP的常用配置命令。通过学习本文,您将能够掌握RIP协议的基本原理、RIPv1和RIPv2的…

软件工程期末复习(选择+填空+判断)

文章目录 软件工程期末复习一、 选择题 软件工程期末复习 一、 选择题 1.“软件危机”的表现不包括:(c) A、软件产品不能按期交付 B、用户对“已完成的”软件产品时常不满意 C、程序员越来越供不应求 D、软件项目难以管理,维护困…

Java Thread 介绍

线程是操作系统调度的最小单元, 也叫轻量级进程。它被包含在进程之中, 是进程中的实际运作单位。 同一进程可以创建多个线程, 每个线程都有自己独立的一块内存空间, 并且能够访问共享的内存变量。 1 线程的分类 在 Java 中, 线程可以分为 2 种 守护线程: 守护线程是为用户线程…

kali linux英文改中文

如果英语基础较好的同学可以不用调整 反之则需要 找到终端(就是输入命令的那个地方 如下)点击它出现命令终端 切换为root用户,命令为: sudo dpkg-reconfigure locales 然后回车 找到这个zh_CN 然后回车 鼠标下键选中并且回车 输…

耶鲁博弈论笔记

编辑记录: 1126:开个新坑,耶鲁大学的博弈论课程, 和专业相关不大,纯兴趣,尽量写好一点吧 1. 首先指出博弈论是一种研究策略形式的方法,对于经济学中,完全竞争市场只能被动接受均衡…

IT问题解答类型网站源码

问答网是一款为IT工程师提供的问答平台,旨在帮助用户在线获取专业知识和相关问题的答案。在问答网,用户可以轻松找到其他人的问答问题,并在这里寻求解答。如果您有任何想要解决的问题,都可以在此发布问题并得到其他同行的解答。 …

【STL】string类 (下)

目录 1,insert 2,erase 3,find 4,replace 5,rfind 6,substr 7,find_first_of 8,find_first_not_of 9,find_last_of 10,operator 11,ge…

Qt TCP网络上位机的设计(通过网络编程与下位机结合)

目录 TCP 协议基础 QTcpServer 和 QAbstractSocket 主要接口函数 TCP 应用程序 1.服务端 2.客户端 上位机通过网络编程与下位机实现通信 TCP 协议基础 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于…

Camtasia Studio2024专业的屏幕录制和视频剪辑软件

Camtasia2024专业的屏幕录制和视频剪辑软件3000多万专业人士在全球范围内使用Camtasia展示产品,教授课程,培训他人,以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。 …

BGP选路实验

要求 1 使用PreVal策略,确保R4通过R2到达192.168.10.0/24 2 使用AS_Path策略,确保R4通过R3到达192.168.11.0/24 3 配置MED策略,确保R4通过R3到达192.168.12.0/24 4 使用Local Preference策略,确保R1通过R2到达192.168.1.0/24 5 使…

【古诗生成AI实战】之五——加载模型进行古诗生成

回顾上一篇博客,我们已经成功地训练了我们的模型,并将其保存下来。这是一个重要的里程碑,因为训练好的模型是我们进行文本生成的基础。 现在,接下来的步骤是加载这个训练好的模型,然后使用它来生成古诗。 本章的内容属…

打印菱形-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第9讲。 打印菱形&#xff…
最新文章