急速に進化するデータ ストレージと処理の世界では、効率的なクラウド ストレージ ソリューションと高度な AI 機能を組み合わせることで、膨大な量のデータを処理するための革新的なアプローチが実現します。この記事では、MinIO、Langchain、OpenAI の GPT-3.5 モデルを使用した実用的な実装を示し、MinIO バケットに保存されているドキュメントの要約に焦点を当てます。
MinIO は、Amazon S3 API と完全に互換性のあるオープンソースの高性能オブジェクト ストレージです。スケーラビリティに定評のある MinIO は、写真、ビデオ、ログ ファイル、バックアップ、コンテナ イメージなどの非構造化データの保存に最適です。ストレージだけではありません。MinIO は、データ レプリケーション、ライフサイクル管理、高可用性などの機能も提供しており、最新のクラウド ネイティブ アプリケーションに最適です。
実装を始める前に、Langchain がインストールされていることを確認してください。pip でインストールします。
pip install --upgrade langchain
これにより、S3 ローダーと OpenAI モデルに使用する必要なライブラリがすべてカプセル化されます。
まず、Langchain のS3DirectoryLoader
とS3FileLoader
を使用してドキュメントをロードすることに焦点を当てます。これらのローダーは、MinIO バケット内の指定されたディレクトリとファイルから複数のドキュメントと単一のドキュメントを取得する役割を担います。
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 ファイルローダー
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 ディレクトリ ローダー
ドキュメントを読み込んだ後、OpenAI の GPT-3.5 モデル ( ChatOpenAI
経由で Langchain ライブラリに含まれています) を使用して要約を生成します。このステップでは、モデルがコンテンツを理解して要約し、大規模なドキュメントから迅速な洞察を提供する機能を示します。
OpenAI APIにアクセスするには、次のURLにアクセスしてAPIキーを取得してください。
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 の能力を示しています。
MinIO、Langchain、OpenAI の統合により、大量のデータを管理するための強力なツールセットが提供されます。Langchain の S3 ローダーである S3DirectoryLoader と S3FileLoader は、MinIO バケットからドキュメントを取得する際に重要な役割を果たしますが、Langchain にデータをロードするためだけのものです。これらのローダーは、バケットへのデータのアップロードに関連するアクションは実行しません。バケット ポリシーのアップロード、変更、管理などのタスクには、 MinIO Python SDKが適切なツールです。この SDK は、ファイルのアップロード、バケットの管理など、MinIO ストレージを操作するための包括的な機能セットを提供します。詳細については、以下を参照してください。
LangchainはAIモデルを使用してデータの取得と処理のプロセスを効率化しますが、MinIOバケット内のデータ管理の重労働はMinIO Python SDKに依存しています。これは、効率的なAI統合ストレージソリューションを構築する開発者やデータエンジニアが理解する必要がある重要な違いです。MinIOの機能と、さまざまなストレージ操作にPython SDKを活用する方法については、MinIOの公式ドキュメントを参照してください。
MinIOオブジェクトストレージをAIおよびMLプロセスの主要なデータリポジトリとして使用することで、データ管理パイプラインを簡素化できます。MinIOは、次のようなワンストップソリューションとして優れています。
LLM ツールの使用を強化するために MinIO と Langchain の統合についてさらに詳しく知りたい場合は、「 LLM ツールの使用のために MinIO SDK を使用した Langchain エージェントの開発」という記事でこのテーマについて包括的に説明しています。
開発の成功をお祈りします。