Introducción a LangChain
Creación de un sistema de preguntas y respuestas con LangChain
Estructura y Uso de Langchain en Python
Carga de Modelos Open Source con Lanchain y Hugging Face
Uso de Modelos OpenAI con LangChain: Guía Práctica para Principiantes
Creación de Prompts Dinámicos con LangChain
Uso de Cadenas en Modelos de Lenguaje con Language Chain
Procesamiento de PDFs y creación de resúmenes con LangChain
Creación de Cadenas de Preguntas y Respuestas con Modelos de Lenguaje
Creación de cadenas secuenciales en Python para procesamiento de texto
Quiz: Introducción a LangChain
Casos de uso de LangChain
Aplicaciones y Beneficios de Lancheng en el Manejo de LLMs
Implementación de Lanchain y LLMs: Costos, Privacidad y Buenas Prácticas
Quiz: Casos de uso de LangChain
Manejo de documentos con índices
Carga de Documentos en Langchain para Creación de Índices
Fundamentos de la Clase Document en Langchain
Carga y Transformación de Documentos No Estructurados con Landship
Lectura de CSV y conversión a DataFrame de Pandas y LangChain
Creación de un Cargador de JSON-Lines Personalizado en Python
Fragmentación de Documentos con TextSplitter en Langsteam
Creación de un Chatbot con Documentación de Hugging Face
Creación de Índice Vectorial con Langchain y Embeddings
Quiz: Manejo de documentos con índices
Embeddings y bases de datos vectoriales
Creación de Índices con Embeddings y Bases de Datos Vectoriales
Creación y uso de embeddings con OpenAI y Lanchain
Modelos de Embeddings Open Source en Español con Sentence Transformers
Creación y Gestión de Bases de Datos Vectoriales con Chroma
Creación y manejo de bases de datos vectoriales con OpenAI Embeddings
Creación y Uso de un Retriever en Chroma para Consultas Avanzadas
Modelo de Chat para Preguntas y Respuestas con LangChain y Chroma
Creación de un Chatbot para Preguntas con Bases de Datos Vectoriales
Quiz: Embeddings y bases de datos vectoriales
Chats y memoria con LangChain
Memoria de Corto Plazo en Chatbots: Implementación y Optimización
Creación y Uso de Modelos de Chat con OpenAI y LangChain
Creación de Plantillas Dinámicas para Prompts de Chat en Langstead
Memoria en chatbots: Implementación con ConversationBufferMemory
Configuración de ConversationBufferWindowMemory en Chatbots
Memoria de Resumen de Conversaciones con Chat GPT-3.5
Gestión de Memoria en Chatbots con ConversationSummaryBufferMemory
Memoria de Entidades en Chatbots para Soporte de Ventas
Implementación de Chatbot con Memoria en Python usando Langchain
Quiz: Chats y memoria con LangChain
Evolución del uso de LLM
Creación de Chatbots con Modelos de Lenguaje y Bases de Datos Vectoriales
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Cuando comenzamos a trabajar con documentos no estructurados, debemos cargarlos y transformarlos al formato deseado, con su correspondiente contenido y metadatos. Esta tarea es esencial para poder manipular y acceder a la información de manera eficiente. Afortunadamente, existen distintas integraciones disponibles que facilitan la conversión de textos provenientes de diferentes formatos, como CSV, Excel, HTML, y mucho más, a documentos estructurados.
Para empezar, el primer paso consiste en descargar el PDF y guardarlo localmente. A continuación, utilizaremos unstructured file loader
de la librería Document Loaders en Landship para cargar el archivo.
from document_loaders import UnstructuredFileLoader
# Cargamos la librería de unstructured si aún no lo hemos hecho
!pip install unstructured
# Creamos el loader
loader = UnstructuredFileLoader('ruta_al_archivo.pdf')
# Cargamos los datos
data = loader.load()
Con este enfoque, logramos tener el contenido del PDF en un solo documento cuando se trata, por ejemplo, de 18 páginas. Al utilizar el unstructured file loader
, tratamos con documentos no estructurados de manera eficaz.
Primero, es fundamental saber que los datos se almacenan como una lista en Python. Al explorar el primer elemento de esta lista, podemos comprobar que es un document
que contiene dos atributos clave: metadata
y page content
.
source
(la ruta del PDF).# Ver la metadata
metadata = data[0].metadata
print(metadata['source'])
# Ver los primeros 300 caracteres del contenido del documento
print(data[0].page_content[:300])
Si necesitamos que cada página del PDF se guarde como un documento independiente, podemos utilizar la clase pypdfloader
de la misma librería Document Loaders. Con esta técnica, cada página del PDF se convierte en un documento único, lo cual resulta útil para proyectos que requieren una granularidad más fina de los datos.
from document_loaders import PyPDFLoader
# Instalar la librería pypdf si no ha sido instalada
!pip install pypdf
# Crear el loader para dividir por páginas
loader = PyPDFLoader('ruta_al_archivo.pdf')
# Cargar los datos
data = loader.load()
La metadata nos ofrece información valiosa sobre cada página del documento. Al dividir el PDF en documentos por página, podemos acceder a información como el número de página, lo cual facilita la navegación y organización de los contenidos.
source
, ahora tenemos el atributo page
, que indica el número de página correspondiente, tal como lo haría un índice en un libro.# Comprobar metadata y contenido de una página
pagina_17 = data[16] # Índice 16 para la página 17
print(pagina_17.metadata)
print(pagina_17.page_content)
La metodología para trabajar con documentos Word de manera similar es igualmente práctica. En los recursos adicionales de la clase, encontrarás la documentación necesaria para aplicar estas técnicas a documentos Word, permitiendo dividirlos también en diferentes documentos por página.
Estos pasos y herramientas te permiten manejar un amplio rango de formatos de documento de manera flexible y eficiente. Te animo a seguir explorando y experimentando con otras integraciones, dado que el mundo de los datos no estructurados ofrece un horizonte sin fin de posibilidades para descubrir y aprovechar.
Aportes 8
Preguntas 3
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?