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.
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.
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.
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.
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
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
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
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.
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
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.
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
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