paint-brush
使用 MinIO、Langchain 和 OpenAI 管理大量数据经过@minio
8,583 讀數
8,583 讀數

使用 MinIO、Langchain 和 OpenAI 管理大量数据

经过 MinIO5m2024/04/23
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现,重点总结存储在 MinIO 存储桶中的文档。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 使用 MinIO、Langchain 和 OpenAI 管理大量数据
MinIO HackerNoon profile picture
0-item


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

MinIO 的强大功能

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

整合 Langchain 和 OpenAI

朗查因是一款基于 Python 的工具,可促进文档加载器与 AI 模型之间的交互。在我们的用例中,我们将 Langchain 与 OpenAI 的gpt-3.5-turbo-1106模型来汇总来自 MinIO 存储桶的文档。此设置展示了 AI 如何从大量数据中提取重要信息,从而简化数据分析和解释。有关本文的其他信息和支持材料(如笔记本和加载的文档),请访问MinIO Github 仓库在里面langchain-s3-minio目录。

安装 Langchain

在深入实现之前,请确保已安装 Langchain。通过 pip 安装:


 pip install --upgrade langchain


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

步骤 1:Langchain S3 目录和文件加载器

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

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,您可以通过访问获取 API 密钥OpenAI 平台。获得密钥后,将其集成到下面的代码中,以利用 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 功能等重要方面。它展示了 AI 从综合数据源中提取和呈现关键信息的能力。

使用 Langchain 从 MinIO Buckets 加载文档

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 与 Langchain 的集成以增强 LLM 工具使用的人来说,文章“使用 MinIO SDK 开发 Langchain 代理以供 LLM 工具使用”对该主题进行了全面的探索。


祝你开发顺利!我们希望MinIO继续在您的 AI/ML 旅程中发挥关键作用。请通过以下方式联系我们松弛并分享您的见解和发现!