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

创新S3存储桶检索:Langchain社区S3加载器搭载OpenAI API

在瞬息万变的数据存储和处理领域,将高效的云存储解决方案与先进的 AI 功能相结合,为处理大量数据提供了一种变革性的方法。本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现,重点总结了存储在 MinIO 存储桶中的文档。

MinIO的强大功能

MinIO 是开源的高性能对象存储,与 Amazon S3 API 完全兼容。MinIO 以其可扩展性而闻名,非常适合存储非结构化数据,例如照片、视频、日志文件、备份和容器映像。这不仅仅是关于存储;MinIO 还提供数据复制、生命周期管理和高可用性等功能,使其成为现代云原生应用程序的首选。

集成 Langchain 和 OpenAI

Langchain 是一种基于 Python 的工具,可促进文档加载器和 AI 模型之间的交互。在我们的用例中,我们将 Langchain 与 OpenAI 的 gpt-3.5-turbo-1106 模型相结合,以汇总来自 MinIO 存储桶的文档。这种设置举例说明了人工智能如何从大量数据中提取基本信息,从而简化数据分析和解释。有关本文相关的更多信息和支持材料,例如笔记本和加载的文档,请访问 langchain-s3-minio 目录下的 MinIO Github 存储库。

安装 Langchain

在深入研究实施之前,请确保您已安装 Langchain。通过 pip 安装它:

pip install --upgrade langchain

这将封装我们将用于 S3 加载器和 OpenAI 模型的所有必需库。

第 1 步:Langchain S3 目录和文件加载程序

最初,我们专注于使用 Langchain 的 S3DirectoryLoaderS3FileLoader .这些加载程序负责从 MinIO 存储桶中的指定目录和文件中获取多个和单个文档。

MinIO 配置和 Langchain S3 文件加载器

from langchain_community.document_loaders.s3_file import S3FileLoader# MinIO Configuration for the public testing server
endpoint = 'play.min.io:9000'
access_key = 'minioadmin'
secret_key = 'minioadmin'
use_ssl = True# Initialize and load a single document
file_loader = S3FileLoader(bucket='web-documentation',key='MinIO_Quickstart.md',endpoint_url=f'http{"s" if use_ssl else ""}://{endpoint}',aws_access_key_id=access_key,aws_secret_access_key=secret_key,use_ssl=use_ssl
)document = file_loader.load()

Python Langchain 示例 - S3 文件加载程序

Langchain S3 目录加载程序:

from langchain_community.document_loaders.s3_directory import S3DirectoryLoader# Initialize and load documents
directory_loader = S3DirectoryLoader(bucket='web-documentation',prefix='',endpoint_url=f'http{"s" if use_ssl else ""}://{endpoint}',aws_access_key_id=access_key, aws_secret_access_key=secret_key, use_ssl=use_ssl
)documents = directory_loader.load()

Python Langchain 示例 - S3 目录加载程序

第 2 步:使用 OpenAI 进行总结

加载文档后,我们使用 OpenAI 的 GPT-3.5 模型(包含在 ChatOpenAI Langchain 库中通过 )来生成摘要。此步骤说明了模型理解和压缩内容的能力,从而提供从大型文档中快速获得见解的能力。

要访问 OpenAI API,您可以通过访问 OpenAI 平台获取 API 密钥。获得密钥后,将其集成到下面的代码中,以利用 GPT-3.5 的强大功能进行文档摘要。

文档摘要代码示例:

from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableLambda
import os# Set your OpenAI API key
os.environ['OPENAI_API_KEY'] = 'your-openai-api-key'
model = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-1106")prompt = ChatPromptTemplate.from_template("Summarize the following document '{document_name}':{context}Please provide the summary and key points."
)loaded_documents = [documents, document]  # From S3 Loaders
flattened_documents = [doc for sublist in loaded_documents for doc in sublist] for loaded_document in flattened_documents:document_text = loaded_document.page_contentdocument_name = getattr(loaded_document, 'name', 'Unknown Document')  # Assuming each document has a 'name' attributechain = (RunnableLambda(lambda x: {"context": document_text, "document_name": document_name})| prompt| model| StrOutputParser())summary = chain.invoke(None)print("Summary:", summary)

Python Langchain 示例 - 使用 OpenAI API 总结文档

以下是运行此演示的输出,是将 LangChain 与 OpenAI 的 GPT-3.5 和 MinIO S3 存储集成的结果;出于演示目的,输出已缩短:

Summary: The document is a quickstart guide for MinIO, a high-performance object storage system that is compatible with Amazon S3. It explains how to run MinIO on bare metal hardware or in containers. For Kubernetes environments, it recommends using the MinIO Kubernetes Operator. The key points are:- MinIO is a high-performance object storage system.
- It is released under the GNU Affero General Public License v3.0.
- MinIO is API compatible with Amazon S3.
- It can be used to build high-performance infrastructure for machine learning, analytics, and application data workloads.
- The guide provides quickstart instructions for running MinIO on bare metal hardware or in containers.
- For Kubernetes environments, the MinIO Kubernetes Operator is recommended.

来自 OpenAI API 的响应

这种方法突出了一种有趣的方式,即使用 Langchain 框架将文档从 S3 存储加载到其中LLM进行处理,而 OpenAI 的 GPT-3.5 模型会生成从 play.min.io 服务器获取的简明摘要和关键点 MinIO_Quickstart.md 。使用 AI 来分析和压缩大量文档,使用户能够快速、全面地了解安装、服务器配置、SDK 和其他 MinIO 功能等基本方面。它展示了人工智能从综合数据源中提取和呈现关键信息的能力。

使用 Langchain 从 MinIO 存储桶加载文档

MinIO、Langchain 和 OpenAI 的集成为管理大量数据提供了引人注目的工具集。虽然 Langchain 的 S3 加载器 S3DirectoryLoader 和 S3FileLoader 在从 MinIO 存储桶检索文档方面发挥着重要作用,但它们仅用于将数据加载到 Langchain 中。这些加载程序不会执行与将数据上传到存储桶相关的操作。对于上传、修改或管理存储桶策略等任务,MinIO Python SDK 是合适的工具。此 SDK 提供了一套用于与 MinIO 存储交互的综合功能,包括文件上传、存储桶管理等。有关更多信息,请参阅快速入门指南 — 适用于 Linux 的 MinIO 对象存储、Python 客户端 API 参考 — 适用于 Linux 的 MinIO 对象存储。

虽然 Langchain 简化了使用 AI 模型获取和处理数据的过程,但 MinIO 存储桶中数据管理的繁重工作取决于 MinIO Python SDK。这是一个重要的区别,开发人员和数据工程师必须了解这一点,以构建高效的 AI 集成存储解决方案。要全面了解 MinIO 的功能以及如何利用其 Python SDK 进行各种存储操作,请参阅 MinIO 的官方文档。

通过使用 MinIO 对象存储作为 AI 和 ML 流程的主要数据存储库,您可以简化数据管理管道。MinIO 是存储、管理和检索大型数据集的一站式解决方案,这对于有效的 AI 和 ML 操作至关重要。这种简化的方法降低了复杂性和开销,通过确保快速访问数据,有可能加速获得见解。

祝您在开发过程中好运!我们希望 MinIO 继续在您的 AI/ML 之旅中发挥关键作用。请通过电话和邮件与我们联系,分享你的见解和发现!

相关文章:

创新S3存储桶检索:Langchain社区S3加载器搭载OpenAI API

在瞬息万变的数据存储和处理领域,将高效的云存储解决方案与先进的 AI 功能相结合,为处理大量数据提供了一种变革性的方法。本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现,重点总结了存储在 MinIO 存储桶中的文档。 …...

【Linux技术宝典】Linux入门:揭开Linux的神秘面纱

文章目录 官网Linux 环境的搭建方式一、什么是Linux?二、Linux的起源与发展三、Linux的核心组件四、Linux企业应用现状五、Linux的发行版本六、为什么选择Linux?七、总结 Linux,一个在全球范围内广泛应用的开源操作系统,近年来越来…...

C语言---------对操作符的进一步认识

操作符中有⼀些操作符和⼆进制有关系,我们先学习了⼀下⼆进制的和进制转换的知识。 1.原码、反码和补码。 有符号整数的三种表⽰⽅法均有符号位和数值位两部分, 2进制序列中,最⾼位的1位是被当做符号位,剩余的都是数值位。 符号…...

HarmonyOS 鸿蒙 ArkTS ArkUI 页面之间切换转换动画设置

第一步:导入 import promptAction from ohos.promptAction 第二步:在build下方写入 pageTransition(){PageTransitionEnter({ duration: 1200 }).slide(SlideEffect.Right)PageTransitionExit({ delay: 100 }).translate({ x: 100.0, y: 100.0 }).opac…...

《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)

文章目录 8.1 CSS 文件的组织和管理8.1.1 基础知识8.1.2 重点案例:项目样式表结构8.1.3 拓展案例 1:使用BEM命名规范8.1.4 拓展案例 2:利用 Sass 混入创建响应式工具类 8.2 提高网页加载速度的技巧8.2.1 基础知识8.2.2 重点案例:图…...

Peter算法小课堂—背包问题

我们已经学过好久好久的动态规划了,动态规划_Peter Pan was right的博客-CSDN博客 那么,我用一张图片来概括一下背包问题。 大家有可能比较疑惑,优化决策怎么优化呢?答案是,滚动数组,一个神秘而简单的东西…...

网易腾讯面试题精选----50 个 Git 面试问题

介绍 Git 是 DevOps 之旅的起点。所以,我只是概述了 50 个快速问题以及 Git 的答案。这些问题非常快,你可以在 DevOps 面试中问。它适合初学者到中级水平。 面试问答 1.问:什么是Git? 答:Git 是一个分布式版本控制系统,允许多个开发人员在一个项目上进行协作并跟踪源代…...

Android CMakeLists.txt语法详解

一.CMake简介 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的…...

Vue3快速上手(二)VSCode官方推荐插件安装及配置

一、VSCode官方插件安装,如下图2款插件 在用vite创建的程序里,提示提安装推荐的插件了,如下图: 二、配置 在设置-扩展里找到Volar插件,将Dot Value勾选上。这样在ref()修改变量时,会自动填充.value,无需…...

等保2、3级所需设备

三级等保要求及所需设备 《等级保护基本要求》所需设备 结构安全(G3) b)应保证网络各个部分的宽带满足业务高峰期需要; g)应按照对业务服务的需要次序来指定宽带分配优先级别,保证在网络发生拥堵的时候优先保护重要主机 负载均衡…...

6 scala-面向对象编程基础

Scala 跟 Java 一样,是一门面向对象编程的语言,有类和对象的概念。 1 类与对象 与 Java 一样,Scala 也是通过关键字 class 来定义类,使用关键字 new 创建对象。 要运行我们编写的代码,同样像 Java 一样,…...

【linux温故】linux调度机制

假如你是设计者,你会设计怎样的调度机制呢? 时间片 最简单的,小学生都能想出来的一种,每个 ready task,按照一个固定的时间片轮流执行。 大家不要抢,挨个儿排队执行。执行完时间片,就排在后面…...

django中如何使用mysql连接池

一:介绍 在Django中使用MySQL时,通常情况下,Django的数据库层会为你管理数据库连接。Django的数据库接口是线程安全的,这意味着它会自动为每个线程创建和管理数据库连接。在大多数情况下,你不需要手动创建线程池来管理…...

3D高斯溅射:面向三维场景的实时渲染技术

1. 前言 高斯溅射技术【1】一经推出,立刻引起学术界和工业界的广泛关注。相比传统的隐式神经散射场渲染技术,高斯溅射依托椭球空间,显性地表示多目图像的三维空间关系,其计算效率和综合性能均有较大的提升,且更容易理…...

【数据结构】13:表达式转换(中缀表达式转成后缀表达式)

思想: 从头到尾依次读取中缀表达式里的每个对象,对不同对象按照不同的情况处理。 如果遇到空格,跳过如果遇到运算数字,直接输出如果遇到左括号,压栈如果遇到右括号,表示括号里的中缀表达式已经扫描完毕&a…...

MySQL进阶查询篇(9)-视图的创建和应用

数据库视图是MySQL中一个非常重要的概念。它是一个虚拟表,由一个查询的结果集组成。数据库视图为用户提供了一种简化数据查询和操作的方式。本文将介绍MySQL数据库视图的创建和应用。 1. 创建数据库视图 要创建MySQL数据库视图,我们使用CREATE VIEW语句…...

Rhino.Inside带材质将Revit模型bake到Rhino

Hello大家好!我是九哥~ 今天来讲一个小技巧,就是我通常采用RIR将Revit的模型的Geometry Bake到Rhino,肯定是没有材质的,那么如果我们需要带材质那要怎么办呢? 对于会的人,其实挺简单的,只需要…...

随记-Java项目处理SQL注入问题

现象:http://10.xx.xx.xx:xx/services/xxService 存在SQL注入情况 加固意见: 需要对网站所有参数中提交的数据进行过滤,禁止输入“"、"xor"、"or"、”--“、”#“、”select“、”and“等特殊字符;所有…...

精读《js 模块化发展》

1 引言 如今,Javascript 模块化规范非常方便、自然,但这个新规范仅执行了 2 年,就在 4 年前,js 的模块化还停留在运行时支持,10 年前,通过后端模版定义、注释定义模块依赖。对经历过来的人来说,…...

Proteus -模拟串口被关闭后怎样打开

Proteus -模拟串口被关闭后怎样打开 点击恢复弹出窗口,即可重新打开...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

Python异步编程:深入理解协程的原理与实践指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…...