Introducción a LangChain

1

Creación de un sistema de preguntas y respuestas con LangChain

2

Estructura y Uso de Langchain en Python

3

Carga de Modelos Open Source con Lanchain y Hugging Face

4

Uso de Modelos OpenAI con LangChain: Guía Práctica para Principiantes

5

Creación de Prompts Dinámicos con LangChain

6

Uso de Cadenas en Modelos de Lenguaje con Language Chain

7

Procesamiento de PDFs y creación de resúmenes con LangChain

8

Creación de Cadenas de Preguntas y Respuestas con Modelos de Lenguaje

9

Creación de cadenas secuenciales en Python para procesamiento de texto

Quiz: Introducción a LangChain

Casos de uso de LangChain

10

Aplicaciones y Beneficios de Lancheng en el Manejo de LLMs

11

Implementación de Lanchain y LLMs: Costos, Privacidad y Buenas Prácticas

Quiz: Casos de uso de LangChain

Manejo de documentos con índices

12

Carga de Documentos en Langchain para Creación de Índices

13

Fundamentos de la Clase Document en Langchain

14

Carga y Transformación de Documentos No Estructurados con Landship

15

Lectura de CSV y conversión a DataFrame de Pandas y LangChain

16

Creación de un Cargador de JSON-Lines Personalizado en Python

17

Fragmentación de Documentos con TextSplitter en Langsteam

18

Creación de un Chatbot con Documentación de Hugging Face

19

Creación de Índice Vectorial con Langchain y Embeddings

Quiz: Manejo de documentos con índices

Embeddings y bases de datos vectoriales

20

Creación de Índices con Embeddings y Bases de Datos Vectoriales

21

Creación y uso de embeddings con OpenAI y Lanchain

22

Modelos de Embeddings Open Source en Español con Sentence Transformers

23

Creación y Gestión de Bases de Datos Vectoriales con Chroma

24

Creación y manejo de bases de datos vectoriales con OpenAI Embeddings

25

Creación y Uso de un Retriever en Chroma para Consultas Avanzadas

26

Modelo de Chat para Preguntas y Respuestas con LangChain y Chroma

27

Creación de un Chatbot para Preguntas con Bases de Datos Vectoriales

Quiz: Embeddings y bases de datos vectoriales

Chats y memoria con LangChain

28

Memoria de Corto Plazo en Chatbots: Implementación y Optimización

29

Creación y Uso de Modelos de Chat con OpenAI y LangChain

30

Creación de Plantillas Dinámicas para Prompts de Chat en Langstead

31

Memoria en chatbots: Implementación con ConversationBufferMemory

32

Configuración de ConversationBufferWindowMemory en Chatbots

33

Memoria de Resumen de Conversaciones con Chat GPT-3.5

34

Gestión de Memoria en Chatbots con ConversationSummaryBufferMemory

35

Memoria de Entidades en Chatbots para Soporte de Ventas

36

Implementación de Chatbot con Memoria en Python usando Langchain

Quiz: Chats y memoria con LangChain

Evolución del uso de LLM

37

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

Curso de LangChain

Curso de LangChain

Omar Espejel

Omar Espejel

Carga y Transformación de Documentos No Estructurados con Landship

14/37
Recursos

¿Cómo indexar documentos no estructurados?

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.

¿Cómo descargar y cargar un PDF?

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.

¿Cómo entender el formato de los datos cargados?

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.

  • Metadata: Incluye detalles como source (la ruta del PDF).
  • Page Content: La parte del contenido del documento.
# 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])

¿Cómo dividir un PDF en documentos por página?

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()

¿Por qué es importante la metadata al dividir por página?

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.

  • Page: Además del 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)

¿Cómo trabajar con documentos Word?

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

en mi caso tuve un problema con el uso de unstructured, por lo que tuve que instalarlo usando: ```js %%capture !pip install "unstructured[pdf]" ```no tuve que cambiar nada más además, en mi caso uso jupyter noteboks en local, para evitar problemas de cache reinicie mi entorno de jupypter y con eso me basto
Actualización a Jan 2024: Estas son las librerías que deben importar para que esta clase pueda funcionar: ```js %%capture !pip install "unstructured[pdf]" !pip install -U langchain-community ``` Y este es el enlace para ver como hacer el ejercicio de word: <https://python.langchain.com/docs/integrations/document_loaders/microsoft_word/>
Yo tengo Python 3.12 (por un proyecto en el que estoy trabajando) y me dio errores al ejecutar el proyecto usando el UnstructuredFileLoader y probé lo que indica Sebastian de la versión indicada y me genera otro error al instalar esa libreria. Por lo que utilice el PyPDFLoader para este ejemplo del PDF y me funcionó sin problema
Debido a las actualizaciones el link se cayó, el nuevo es [`https://python.langchain.com/docs/integrations/document_loaders/microsoft_word/`](https://python.langchain.com/docs/integrations/document_loaders/microsoft_word/) Y al momento de cumplir con el reto tuve "modulo docx no encontrado" problema que se solucionó `!pip install python-docx` Aquí está mi código: `from langchain_community.document_loaders import UnstructuredWordDocumentLoader` `loader = UnstructuredWordDocumentLoader("./word.docx")` `data = loader.load()` `len(data)`
Reto Cumplido ![](https://static.platzi.com/media/user_upload/image-097f35e9-6b6c-4a69-a109-a82bf46e0a8a.jpg)![](https://static.platzi.com/media/user_upload/image-d9ca2c94-bd11-40f7-8e2c-af1285171e2a.jpg)
![](https://static.platzi.com/media/user_upload/image-79483fcc-d0b3-4148-9f91-a64b0f2ea655.jpg) ¡Reto completado!
Como le puedo pasar el codigo de mi proyecto a langchain para que me de sugerencias???? plss help :(((
no me deja ingresar a los recursos del curso, algun problema con la pagina?