En el mundo del almacenamiento y procesamiento de datos en rápida evolución, combinar soluciones eficientes de almacenamiento en la nube con capacidades avanzadas de IA presenta un enfoque transformador para manejar grandes volúmenes de datos. Este artículo demuestra una implementación práctica utilizando MinIO, Langchain y el modelo GPT-3.5 de OpenAI, centrándose en resumir documentos almacenados en depósitos MinIO.
MinIO es un almacenamiento de objetos de código abierto y alto rendimiento que es totalmente compatible con la API de Amazon S3. Conocido por su escalabilidad, MinIO es ideal para almacenar datos no estructurados como fotos, vídeos, archivos de registro, copias de seguridad e imágenes de contenedores. No se trata sólo de almacenamiento; MinIO también ofrece funciones como replicación de datos, gestión del ciclo de vida y alta disponibilidad, lo que lo convierte en la mejor opción para las aplicaciones modernas nativas de la nube.
Antes de sumergirse en la implementación, asegúrese de tener Langchain instalado. Instálalo mediante pip:
pip install --upgrade langchain
Esto encapsulará todas las bibliotecas necesarias que usaremos para nuestros cargadores S3 y el modelo OpenAI.
Inicialmente, nos centramos en cargar documentos utilizando S3DirectoryLoader
y S3FileLoader
de Langchain. Estos cargadores son responsables de recuperar documentos únicos y múltiples de directorios y archivos específicos en depósitos de 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()
Ejemplo de Python Langchain: cargador de archivos 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()
Ejemplo de Python Langchain: cargador de directorios S3
Después de cargar los documentos, utilizamos el modelo GPT-3.5 de OpenAI (que se incluye en la biblioteca Langchain a través de ChatOpenAI
) para generar resúmenes. Este paso ilustra la capacidad del modelo para comprender y condensar el contenido, proporcionando información rápida a partir de documentos grandes.
Para acceder a la API de OpenAI, puede adquirir una clave API visitando el
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)
Ejemplo de Python Langchain: resumen de documentos con la API OpenAI
A continuación se muestra el resultado de la ejecución de esta demostración y es el resultado de la integración de LangChain con el almacenamiento GPT-3.5 y MinIO S3 de OpenAI; la salida se ha acortado con fines demostrativos:
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.
Respuesta de la API OpenAI
Este método destaca una forma interesante de cargar documentos desde el almacenamiento S3 en un LLM utilizando el marco Langchain para procesarlos, mientras que el modelo GPT-3.5 de OpenAI genera un resumen conciso y puntos clave de MinIO_Quickstart.md
que se obtiene de play.min.io
servidor play.min.io
. El uso de IA para analizar y condensar documentación extensa proporciona a los usuarios una comprensión rápida y completa de aspectos esenciales como la instalación, la configuración del servidor, los SDK y otras funciones de MinIO. Muestra la capacidad de la IA para extraer y presentar información crítica de fuentes de datos integrales.
La integración de MinIO, Langchain y OpenAI ofrece un conjunto de herramientas convincente para gestionar grandes volúmenes de datos. Si bien los cargadores S3 de Langchain, S3DirectoryLoader y S3FileLoader, desempeñan un papel importante en la recuperación de documentos de depósitos MinIO, sirven únicamente para cargar datos en Langchain. Estos cargadores no realizan acciones relacionadas con la carga de datos en depósitos. Para tareas como cargar, modificar o administrar políticas de depósitos, el SDK de MinIO Python es la herramienta adecuada. Este SDK proporciona un conjunto completo de funcionalidades para interactuar con el almacenamiento MinIO, incluida la carga de archivos, la administración de depósitos y más. Para obtener información adicional, consulte
Si bien Langchain agiliza el proceso de obtención y procesamiento de datos utilizando modelos de IA, el trabajo pesado de la gestión de datos dentro de los depósitos de MinIO depende del SDK de MinIO Python. Esta es una distinción importante que deben comprender los desarrolladores e ingenieros de datos que crean soluciones de almacenamiento eficientes integradas en IA. Para obtener una comprensión profunda de las capacidades de MinIO y cómo utilizar su SDK de Python para diversas operaciones de almacenamiento, consulte el sitio web oficial de MinIO.
Al utilizar el almacenamiento de objetos MinIO como depósito de datos principal para los procesos de IA y ML, puede simplificar su proceso de gestión de datos. MinIO se destaca como una solución integral para
Para aquellos interesados en profundizar en la integración de MinIO con Langchain para mejorar el uso de herramientas LLM, el artículo " Desarrollo de agentes Langchain con MinIO SDK para el uso de herramientas LLM " ofrece una exploración completa del tema.
¡Buena suerte en tus esfuerzos de desarrollo! Esperamos