创新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_content
    document_name = getattr(loaded_document, 'name', 'Unknown Document')  # Assuming each document has a 'name' attribute
    chain = (
        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 之旅中发挥关键作用。请通过电话和邮件与我们联系,分享你的见解和发现!

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

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

相关文章

C++ 音视频原理

本篇文章我们来描述一下音视频原理 音视频录制原理: 下面是对这张思维导图的介绍 摄像头部分: 麦克风采集声音 摄像头采集画面 摄像头采集回来的数据可以用RGB也可以用YUV来表示 图像帧帧率 一秒能处理多少张图像 图像处理 :调亮度 图像帧队列 :意思是将数据取…

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…

【JVM篇】什么是jvm

文章目录 🍔什么是Java虚拟机🛸Java虚拟机有什么用🌹Java虚拟机的功能🎈Java虚拟机的组成 🍔什么是Java虚拟机 JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,可以运行 Java字节码文件…

微信小程序开发学习笔记《17》uni-app框架-tabBar

微信小程序开发学习笔记《17》uni-app框架-tabBar 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、创建tabBar分支 运行如下的命令,基于master分支在本地创建tabBar子分支&#x…

Spring Boot3自定义异常及全局异常捕获

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 目的 主要步骤 定义自定义异常类 创建全局异常处理器 手动抛出自定义异常 前置条件 已经初始化好一个…

17 ABCD数码管显示与动态扫描原理

1. 驱动八位数码管循环点亮 1.1 数码管结构图 数码管有两种结构,共阴极和共阳极,ACX720板上的是共阳极数码管,低电平点亮。 1.2 三位数码管等效电路图 为了节约I/O接口,各个数码管的各段发光管被连在一起,通过sel端…

【Spring框架】Spring事务同步

目录 一、什么是Spring事务同步 二、 事务同步管理器 2.1 TransactionSynchronizationManager事务同步管理器 2.1.1 资源同步 2.1.2 事务同步 2.1.3 总结 三、事务同步管理器保障事务的原理 四、spring事务为何使用TransactionSynchronizationManager spring源码实现 …

详解CC++内存管理(new和delete)

文章目录 写在前面1. C&C内存分布2. C语言中动态内存管理方式:malloc/calloc/realloc/free3. C内存管理方式(语法)3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete…

企业架构师的人格特质

L - Learning 持续学习的能力A - Abstracting 概念抽象的能力C1 - Connecting 联结事物的能力C2 - Compromising 平衡折衷的能力D - Decisioning 果断决策的能力 参考文章的链接

再利用系统盘时,如何删除恢复分区(Recovery Partition)

系统盘有一个Recovery Partition,记录了重要的系统信息,不能删除。 Windows 10的 Disk Managment 不提供用户删除这个Partition的选项。 近日我插入一块原系统盘,Format后作为DataDisk,此时需要删除这块硬盘上的RecoveryPartition…

Redis中内存淘汰算法实现

Redis中内存淘汰算法实现 Redis的maxmemory支持的内存淘汰机制使得其成为一种有效的缓存方案,成为memcached的有效替代方案。 当内存达到maxmemory后,Redis会按照maxmemory-policy启动淘汰策略。 Redis 3.0中已有淘汰机制: noevictionall…

配置 JDK 环境变量(最简单)

前言 在通过控制台使用 javac 命令编译 ,java 命令运行 Java 程序时,会出现识别不了这两个命令的情况,如下所示: 这是没有配置环境变量导致的 在控制台输入的命令,操作系统会去一些特定的目录中去找,看看是…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-动态内存

目录 一、动态内存运行机制二、动态内存开发流程三、动态内存使用说明四、动态内存核心算法五、动态内存接口六、代码分析(待续...)坚持就有收获 一、动态内存运行机制 动态内存管理,即在内存资源充足的情况下,根据用户需求&…

漫漫数学之旅019

文章目录 经典格言数学习题古今评注名人小传 - 大卫希尔伯特 经典格言 没有人能够把我们从康托为我们创造的乐园中驱逐出去。——大卫希尔伯特(David Hilbert) 大卫希尔伯特,这位数学界的“顽皮大亨”,曾经用一种近乎宣誓的方式来…

更新至2022年,各省人口高质量城镇化指标体系构建原始数据(13个指标)

更新至2022年,各省人口高质量城镇化指标体系构建原始数据 1、时间:更新至2022年,具体每个指标时间见下文 2、来源:整理自国家统计局、统计年鉴 3、范围:31省市 4、指标: 2008-2022年每十万人口高等学校…

【QT+QGIS跨平台编译】之三十六:【RasterLite2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、RasterLite2介绍二、文件下载三、文件分析四、pro文件五、编译实践一、RasterLite2介绍 RasterLite2是一个开源的轻量级栅格数据库,可以用于存储和管理各种类型的栅格数据,包括卫星遥感图像、数字高程模型等。 与传统的GIS数据存储方式不同,RasterLite2采用基…

Swift Combine 有序的异步操作 从入门到精通十二

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

零基础学编程怎么入手,中文编程工具构件箱之星空构件用法教程,系统化的编程视频教程上线

零基础学编程怎么入手,中文编程工具构件箱之星空构件用法教程,系统化的编程视频教程上线 一、前言 今天给大家分享的中文编程开发语言工具资料如下: 编程入门视频教程链接 http://​ https://edu.csdn.net/course/detail/39036 ​ 编程…

C++笔记:类与对象的语法

文章目录 1 简单认识面向过程与面向对象1.1 面向过程1.2 面向对象 2 类的引入:struct -> class3 类的定义3.1 class 定义类的语法3.2 成员变量的命名建议 4 类的访问限定符4.1 class 和 struct 的区别4.2 C更喜欢用class定义类的原因 5 类的作用域5.1 声明定义合…

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…
最新文章