paint-brush
Gestion de gros volumes de données avec MinIO, Langchain et OpenAIpar@minio
8,583 lectures
8,583 lectures

Gestion de gros volumes de données avec MinIO, Langchain et OpenAI

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

Trop long; Pour lire

Cet article présente une implémentation pratique utilisant MinIO, Langchain et le modèle GPT-3.5 d'OpenAI, en se concentrant sur la synthèse des documents stockés dans les compartiments MinIO.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Gestion de gros volumes de données avec MinIO, Langchain et OpenAI
MinIO HackerNoon profile picture
0-item


Dans le monde en évolution rapide du stockage et du traitement des données, la combinaison de solutions de stockage cloud efficaces avec des capacités avancées d’IA présente une approche transformatrice de la gestion de vastes volumes de données. Cet article présente une implémentation pratique utilisant MinIO, Langchain et le modèle GPT-3.5 d'OpenAI, en se concentrant sur la synthèse des documents stockés dans les compartiments MinIO.

La puissance de MinIO

MinIO est un stockage d'objets open source hautes performances entièrement compatible avec l'API Amazon S3. Connu pour son évolutivité, MinIO est idéal pour stocker des données non structurées telles que des photos, des vidéos, des fichiers journaux, des sauvegardes et des images de conteneurs. Il ne s'agit pas seulement de stockage ; MinIO offre également des fonctionnalités telles que la réplication des données, la gestion du cycle de vie et la haute disponibilité, ce qui en fait un choix de premier ordre pour les applications cloud natives modernes.

Intégration de Langchain et OpenAI

Langchain , un outil basé sur Python, facilite l'interaction entre les chargeurs de documents et les modèles d'IA. Dans notre cas d'utilisation, nous combinons Langchain avec OpenAI gpt-3.5-turbo-1106 modèle pour résumer les documents des compartiments MinIO. Cette configuration illustre la manière dont l’IA peut extraire des informations essentielles à partir de données volumineuses, simplifiant ainsi l’analyse et l’interprétation des données. Pour des informations supplémentaires et des documents de support liés à cet article, tels que des cahiers et des documents chargés, veuillez visiter le Dépôt MinIO Github dans le langchain-s3-minio annuaire.

Installation de Langchain

Avant de vous lancer dans la mise en œuvre, assurez-vous que Langchain est installé. Installez-le via pip :


 pip install --upgrade langchain


Cela encapsulera toutes les bibliothèques requises que nous utiliserons pour nos chargeurs S3 et notre modèle OpenAI.

Étape 1 : Répertoire Langchain S3 et chargeurs de fichiers

Dans un premier temps, nous nous concentrons sur le chargement de documents à l'aide de S3DirectoryLoader et S3FileLoader de Langchain. Ces chargeurs sont chargés de récupérer plusieurs documents uniques à partir de répertoires et de fichiers spécifiés dans les compartiments MinIO.

Configurations MinIO et chargeur de fichiers 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()

Exemple Python Langchain - Chargeur de fichiers S3

Chargeur d'annuaire 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()

Exemple Python Langchain - Chargeur d'annuaire S3

Étape 2: Résumer avec OpenAI

Après avoir chargé les documents, nous utilisons le modèle GPT-3.5 d'OpenAI (qui est inclus dans la bibliothèque Langchain via ChatOpenAI ) pour générer des résumés. Cette étape illustre la capacité du modèle à comprendre et à condenser le contenu, fournissant ainsi des informations rapides à partir de documents volumineux.

Pour accéder à l'API OpenAI, vous pouvez acquérir une clé API en visitant le Plateforme OpenAI . Une fois que vous avez la clé, intégrez-la dans le code ci-dessous pour exploiter la puissance de GPT-3.5 pour la synthèse de documents.

Exemple de code pour le résumé de document :


 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)

Exemple Python Langchain - Résumer des documents avec l'API OpenAI


Vous trouverez ci-dessous le résultat de l'exécution de cette démo et est le résultat de l'intégration de LangChain avec le stockage GPT-3.5 et MinIO S3 d'OpenAI ; le résultat a été raccourci à des fins de démonstration :


 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.

Réponse de l'API OpenAI


Cette méthode met en évidence une manière intéressante de charger des documents du stockage S3 dans un LLM en utilisant le framework Langchain pour les traiter, tandis que le modèle GPT-3.5 d'OpenAI génère un résumé concis et les points clés du MinIO_Quickstart.md qui est extrait du play.min.io serveur play.min.io . L'utilisation de l'IA pour analyser et condenser une documentation complète offre aux utilisateurs une compréhension rapide et approfondie des aspects essentiels tels que l'installation, la configuration du serveur, les SDK et autres fonctionnalités MinIO. Il met en valeur la capacité de l’IA à extraire et à présenter des informations critiques à partir de sources de données complètes.

Chargement de documents à partir de compartiments MinIO avec Langchain

L'intégration de MinIO, Langchain et OpenAI offre un ensemble d'outils convaincant pour gérer de gros volumes de données. Bien que les chargeurs S3 de Langchain, S3DirectoryLoader et S3FileLoader, jouent un rôle important dans la récupération de documents à partir des compartiments MinIO, ils servent uniquement à charger des données dans Langchain. Ces chargeurs n'effectuent pas d'actions liées au téléchargement de données dans des compartiments. Pour des tâches telles que le téléchargement, la modification ou la gestion des politiques de compartiment, le SDK MinIO Python est l'outil approprié. Ce SDK fournit un ensemble complet de fonctionnalités pour interagir avec le stockage MinIO, notamment le téléchargement de fichiers, la gestion des compartiments et bien plus encore. Pour plus d'informations, veuillez consulter Guide de démarrage rapide — Stockage d'objets MinIO pour Linux , Référence de l'API client Python — Stockage d'objets MinIO pour Linux .


Alors que Langchain rationalise le processus de récupération et de traitement des données à l'aide de modèles d'IA, le gros du travail de gestion des données dans les compartiments MinIO dépend du SDK MinIO Python. Il s'agit d'une distinction importante qui doit être comprise par les développeurs et les ingénieurs de données qui créent des solutions de stockage efficaces et intégrées à l'IA. Pour une compréhension approfondie des capacités de MinIO et comment utiliser son SDK Python pour diverses opérations de stockage, reportez-vous au site officiel de MinIO. Documentation .


En utilisant le stockage d'objets MinIO comme référentiel de données principal pour les processus d'IA et de ML, vous pouvez simplifier votre pipeline de gestion des données. MinIO excelle en tant que solution unique pour stocker, gérer et récupérer de grands ensembles de données , ce qui est crucial pour des opérations efficaces d’IA et de ML. Cette approche rationalisée réduit la complexité et les frais généraux, accélérant potentiellement les informations en garantissant un accès rapide aux données.


Pour ceux qui souhaitent approfondir l'intégration de MinIO avec Langchain pour améliorer l'utilisation des outils LLM, l'article « Développement d'agents Langchain avec le SDK MinIO pour l'utilisation des outils LLM » propose une exploration complète du sujet.


Bonne chance dans vos efforts de développement! Nous esperons MinIO continue de jouer un rôle clé dans votre parcours IA/ML. Contactez-nous sur Mou et partagez vos idées et découvertes !