paint-brush
Große Datenmengen verwalten mit MinIO, Langchain und OpenAIby@minio
8,516
8,516

Große Datenmengen verwalten mit MinIO, Langchain und OpenAI

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

Dieser Artikel demonstriert eine praktische Implementierung mit MinIO, Langchain und dem GPT-3.5-Modell von OpenAI, wobei der Schwerpunkt auf der Zusammenfassung von in MinIO-Buckets gespeicherten Dokumenten liegt.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Große Datenmengen verwalten mit MinIO, Langchain und OpenAI
MinIO HackerNoon profile picture
0-item


In der sich rasch entwickelnden Welt der Datenspeicherung und -verarbeitung stellt die Kombination effizienter Cloud-Speicherlösungen mit erweiterten KI-Funktionen einen transformativen Ansatz für die Handhabung riesiger Datenmengen dar. Dieser Artikel demonstriert eine praktische Implementierung mit MinIO, Langchain und dem GPT-3.5-Modell von OpenAI, wobei der Schwerpunkt auf der Zusammenfassung von in MinIO-Buckets gespeicherten Dokumenten liegt.

Die Leistung von MinIO

MinIO ist ein Open-Source-Objektspeicher mit hoher Leistung, der vollständig mit der Amazon S3-API kompatibel ist. MinIO ist für seine Skalierbarkeit bekannt und eignet sich ideal zum Speichern unstrukturierter Daten wie Fotos, Videos, Protokolldateien, Backups und Container-Images. Es geht nicht nur um Speicher; MinIO bietet auch Funktionen wie Datenreplikation, Lebenszyklusverwaltung und hohe Verfügbarkeit und ist damit die erste Wahl für moderne Cloud-native Anwendungen.

Integration von Langchain und OpenAI

Langchain , ein Python-basiertes Tool, erleichtert die Interaktion zwischen Dokumentladern und KI-Modellen. In unserem Anwendungsfall kombinieren wir Langchain mit OpenAIs gpt-3.5-turbo-1106 Modell zum Zusammenfassen von Dokumenten aus MinIO-Buckets. Dieses Setup veranschaulicht, wie KI wichtige Informationen aus umfangreichen Daten extrahieren und so die Datenanalyse und -interpretation vereinfachen kann. Weitere Informationen und unterstützende Materialien zu diesem Artikel wie Notizbücher und geladene Dokumente finden Sie unter MinIO Github-Repository im langchain-s3-minio Verzeichnis.

Langchain installieren

Bevor Sie mit der Implementierung beginnen, stellen Sie sicher, dass Sie Langchain installiert haben. Installieren Sie es über Pip:


 pip install --upgrade langchain


Dies wird alle erforderlichen Bibliotheken kapseln, die wir für unsere S3-Loader und unser OpenAI-Modell verwenden werden.

Schritt 1: Langchain S3-Verzeichnis und Dateilader

Zunächst konzentrieren wir uns auf das Laden von Dokumenten mit S3DirectoryLoader und S3FileLoader von Langchain. Diese Loader sind dafür verantwortlich, mehrere und einzelne Dokumente aus angegebenen Verzeichnissen und Dateien in MinIO-Buckets abzurufen.

MinIO-Konfigurationen und Langchain S3 File Loader


 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-Beispiel - S3-Dateilader

Langchain S3-Verzeichnislader:


 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-Beispiel - S3 Directory Loader

Schritt 2: Zusammenfassen mit OpenAI

Nach dem Laden der Dokumente verwenden wir das GPT-3.5-Modell von OpenAI (das über ChatOpenAI in der Langchain-Bibliothek enthalten ist), um Zusammenfassungen zu generieren. Dieser Schritt veranschaulicht die Fähigkeit des Modells, den Inhalt zu verstehen und zu verdichten und so schnelle Erkenntnisse aus großen Dokumenten zu liefern.

Um auf die OpenAI-API zuzugreifen, können Sie einen API-Schlüssel erwerben, indem Sie die OpenAI-Plattform . Sobald Sie den Schlüssel haben, integrieren Sie ihn in den folgenden Code, um die Leistung von GPT-3.5 für die Dokumentzusammenfassung zu nutzen.

Codebeispiel für die Dokumentzusammenfassung:


 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-Beispiel – Zusammenfassen von Dokumenten mit der OpenAI-API


Unten sehen Sie die Ausgabe dieser Demo. Sie ist das Ergebnis der Integration von LangChain mit dem GPT-3.5- und MinIO S3-Speicher von OpenAI. Die Ausgabe wurde zu Demonstrationszwecken gekürzt:


 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.

Antwort von OpenAI API


Diese Methode zeigt eine interessante Möglichkeit, Dokumente aus dem S3-Speicher in ein LLM zu laden und sie mithilfe des Langchain-Frameworks zu verarbeiten, während das GPT-3.5-Modell von OpenAI eine prägnante Zusammenfassung und die wichtigsten Punkte der MinIO_Quickstart.md generiert, die vom Server play.min.io abgerufen wird. Die Verwendung von KI zur Analyse und Verdichtung umfangreicher Dokumentationen bietet Benutzern ein schnelles und umfassendes Verständnis wesentlicher Aspekte wie Installation, Serverkonfiguration, SDKs und anderer MinIO-Funktionen. Es zeigt die Fähigkeit von KI, wichtige Informationen aus umfassenden Datenquellen zu extrahieren und darzustellen.

Laden von Dokumenten aus MinIO-Buckets mit Langchain

Die Integration von MinIO, Langchain und OpenAI bietet ein überzeugendes Toolset für die Verwaltung großer Datenmengen. Während die S3-Loader von Langchain, S3DirectoryLoader und S3FileLoader, eine wichtige Rolle beim Abrufen von Dokumenten aus MinIO-Buckets spielen, dienen sie ausschließlich zum Laden von Daten in Langchain. Diese Loader führen keine Aktionen im Zusammenhang mit dem Hochladen von Daten in Buckets aus. Für Aufgaben wie das Hochladen, Ändern oder Verwalten von Bucket-Richtlinien ist das MinIO Python SDK das geeignete Tool. Dieses SDK bietet einen umfassenden Satz von Funktionen für die Interaktion mit MinIO-Speicher, einschließlich Datei-Uploads, Bucket-Verwaltung und mehr. Weitere Informationen finden Sie unter Schnellstartanleitung – MinIO Object Storage für Linux , Python-Client-API-Referenz – MinIO-Objektspeicher für Linux .


Während Langchain den Prozess des Abrufens und Verarbeitens von Daten mithilfe von KI-Modellen optimiert, hängt die Datenverwaltung innerhalb der MinIO-Buckets vom MinIO Python SDK ab. Dies ist ein wichtiger Unterschied, den Entwickler und Dateningenieure verstehen müssen, die effiziente, KI-integrierte Speicherlösungen erstellen. Um ein umfassendes Verständnis der Funktionen von MinIO und der Verwendung des Python SDK für verschiedene Speichervorgänge zu erhalten, lesen Sie die offizielle MinIO-Website. Dokumentation .


Indem Sie den MinIO-Objektspeicher als primäres Datenrepository für KI- und ML-Prozesse verwenden, können Sie Ihre Datenverwaltungspipeline vereinfachen. MinIO eignet sich hervorragend als Komplettlösung für Speichern, Verwalten und Abrufen großer Datensätze , was für effektive KI- und ML-Operationen von entscheidender Bedeutung ist. Dieser optimierte Ansatz reduziert Komplexität und Aufwand und beschleunigt potenziell Erkenntnisse, indem er einen schnellen Datenzugriff gewährleistet.


Wer sich tiefer mit der Integration von MinIO mit Langchain befassen möchte, um die Nutzung von LLM-Tools zu verbessern, findet im Artikel „ Entwickeln von Langchain-Agenten mit MinIO SDK für die Nutzung von LLM-Tools “ eine umfassende Erläuterung des Themas.


Viel Glück bei Ihren Entwicklungsbemühungen! Wir hoffen MinIO spielt weiterhin eine Schlüsselrolle auf Ihrem Weg zu KI/ML. Kontaktieren Sie uns unter Locker und teilen Sie Ihre Erkenntnisse und Entdeckungen!