En cualquier sistema de RAG, la calidad del resultado final depende directamente de la calidad del dato de entrada. Antes de aplicar técnicas de segmentación, generación de embeddings o recuperación de información, es imprescindible garantizar que el contenido extraído esté correctamente estructurado y libre de ruido.
En la práctica, los datos rara vez llegan en un formato listo para ser utilizados. Ya provengan de documentos PDF, páginas web u otras fuentes, el contenido suele presentar problemas como fragmentación del texto, elementos irrelevantes o estructuras inconsistentes. Estos problemas no son visibles a simple vista en todos los casos, pero tienen un impacto directo en el rendimiento del sistema.
Esto significa que, aunque el loader funcione correctamente, el resultado puede ser un texto difícil de utilizar en un sistema RAG como en este ejemplo:
print(document[6].page_content[:300])
zonas premium: cada metro valía (y vale) mucho más en Madrid, Baleares y País Vascoqueencualquierotraregión.
Por tanto, antes de avanzar hacia fases más avanzadas del sistema, es necesario validar y procesar adecuadamente el contenido extraído. Un pipeline sólido no comienza con el modelo, sino con datos bien preparados.
Antes de generar embeddings, es fundamental aplicar una fase de limpieza del texto. El objetivo es reconstruir, en la medida de lo posible, una estructura natural del lenguaje.
Una estrategia básica de limpieza incluye:
Eliminación de saltos de línea innecesarios
Normalización de espacios
Unificación del texto en una secuencia continua
Este enfoque elimina múltiples espacios, saltos de línea y fragmentaciones simples, devolviendo un texto más coherente. Para casos más complejos, se pueden aplicar reglas adicionales, como la eliminación de patrones repetitivos o la reconstrucción de párrafos.
Métodos de limpieza de datos tras la carga (post-load)
Una vez cargados los documentos mediante un loader, el siguiente paso crítico es aplicar técnicas de limpieza que permitan transformar el texto en una forma coherente y útil para el sistema RAG.
No existe un único método universal. La limpieza debe adaptarse al tipo de fuente (PDF, web, datos estructurados), pero sí existen patrones comunes que se aplican en la mayoría de los casos:
Normalización básica de espacios
Eliminar espacios duplicados, saltos de línea y fragmentación simple. Se debe hacer siempre. Es el primer paso obligatorio.
text = document.page_contentclean_text =" ".join(text.split())
Soluciona:
Saltos de línea (\n)
Espacios múltiples
Texto fragmentado
Eliminación explícita de saltos de línea
Reconstruir frases que han sido cortadas artificialmente. Se utiliza en PDFs con líneas rotas y texto extraído por coordenadas
text = document.page_contentclean_text = text.replace("\n", " ")clean_text =" ".join(clean_text.split())
Eliminación de patrones repetitivos (headers/footers)
Eliminar contenido repetido en todas las páginas. Como: “Página 1”, “Confidencial”, nombres de empresa, etc. Mejora la calidad del embedding.
La limpieza de datos no es un paso opcional dentro de un sistema RAG, sino una fase crítica que determina la calidad del resto del pipeline.
Aplicar técnicas básicas como la normalización de espacios o la eliminación de ruido puede mejorar significativamente la coherencia del texto y, por tanto, la precisión del sistema.
En entornos reales, la combinación de varios métodos de limpieza es la práctica habitual, adaptándose siempre al tipo de documento y a la calidad del contenido extraído.
En LangChain, un Document es una estructura que representa una unidad de información compuesta por dos elementos: el contenido del texto (page_content) y un conjunto de metadatos (metadata) que aportan contexto adicional, como el origen, identificadores o fechas.
Este formato estandarizado permite trabajar de manera uniforme con distintos tipos de datos, ya provengan de archivos, páginas web, bases de datos o otras aplicaciones. Para obtener estos documentos desde fuentes reales, LangChain utiliza los llamados Document Loaders, que son componentes diseñados para cargar información desde múltiples orígenes y convertirla automáticamente en objetos Document que posteriormente serán utilizados en pipelines de Retrieval-Augmented Generation (RAG).
BaseLoader
Antes de trabajar con loaders concretos, es importante entender que todos ellos heredan de una clase base común: BaseLoader. Esta clase define el comportamiento estándar que deben seguir todos los loaders dentro del ecosistema de LangChain.
BaseLoader no es un loader que se utilice directamente, sino una interfaz (clase abstracta) que establece cómo deben implementarse los métodos de carga de documentos. El propósito principal de BaseLoader es garantizar que todos los loaders:
Devuelvan datos en formato Document
Sigan un patrón consistente
Sean intercambiables dentro del pipeline
BaseLoader → <Name>Loader
Ejemplos:
TextLoader
PyPDFLoader
WebBaseLoader
Su salida siempre es una colección de objetos:
Document.page_content → contenido textual
Document.metadata → información contextual
Este diseño permite que cualquier loader sea intercambiable dentro del pipeline. De esta forma, los datos externos se integran fácilmente en los flujos de trabajo con modelos de lenguaje, siendo la base para aplicaciones más avanzadas como sistemas de recuperación de información (RAG), análisis de datos o asistentes inteligentes.
Lazy loading
El diseño de BaseLoader está orientado a evitar cargar todos los documentos en memoria de golpe. Por eso, el método fundamental que deben implementar los loaders es: lazy_load()
Métodos de BaseLoader
Método
Descripción
Cuándo usarlo
Notas
load()
Carga todos los documentos y los devuelve en una lista de Document.
Prototipos, datasets pequeños, pruebas rápidas.
Es un método de conveniencia. Internamente usa lazy_load(). No debe sobrescribirse.
lazy_load()
Devuelve un generador de documentos (uno a uno).
Producción, grandes volúmenes de datos, eficiencia en memoria.
Método clave que deben implementar los loaders. Base del sistema.
Sistemas escalables, streaming de datos, alto rendimiento.
Permite iteración asíncrona (async for).
Loaders
En cualquier sistema RAG, el punto de partida es siempre el mismo: los datos. Antes de hablar de embeddings, retrieval o generación de respuestas, es necesario convertir las fuentes de información en un formato que el sistema pueda procesar. En este contexto, los documentos PDF representan uno de los formatos más habituales en entornos empresariales.
En el ecosistema de LangChain, los loaders forman parte de la capa de ingestión de datos. Su función no es solo “leer archivos”, sino preparar la información para que pueda ser utilizada posteriormente en procesos de segmentación, embedding y recuperación.
Unstructured’s Loaders
Los loaders denominados Unstructured dentro del ecosistema de LangChain son herramientas especializadas que permiten mejorar significativamente la extracción. Este tipo de loader no se limita a leer el texto plano, sino que intenta interpretar la estructura del documento. El resultado es un contenido más limpio, menos fragmentado y semánticamente más consistente, lo que impacta directamente en la calidad de los embeddings y en la eficacia del sistema RAG.
Ventajas principales:
Mejor interpretación del layout: Este loader intenta entender la estructura del documento, no solo extraer texto plano. Esto permite preservar mejor párrafos, títulos y bloques de contenido.
Menor fragmentación del texto: Reduce significativamente los problemas de palabras separadas o saltos de línea artificiales.
Mayor calidad semántica: Al generar texto más coherente, los embeddings resultantes son más representativos, lo que mejora la recuperación en RAG.
Preparado para documentos reales: Está diseñado para trabajar con documentos del mundo empresarial: informes, contratos, manuales, etc.
Loader
Descripción
UnstructuredPDFLoader
Extrae contenido de PDFs interpretando la estructura del documento (títulos, párrafos, listas). Ideal para informes complejos.
UnstructuredHTMLLoader
Procesa archivos HTML locales identificando contenido semántico relevante, evitando ruido estructural.
UnstructuredURLLoader
Carga contenido desde URLs aplicando parsing inteligente para aislar el contenido principal de la web.
UnstructuredWordDocumentLoader
Extrae contenido de documentos Word manteniendo la estructura lógica del texto.
UnstructuredEmailLoader
Procesa correos electrónicos (.eml, .msg), incluyendo cuerpo del mensaje y opcionalmente adjuntos.
UnstructuredImageLoader
Extrae texto de imágenes (OCR) y organiza el contenido en elementos semánticos.
Consideraciones
Mayor coste computacional
Puede requerir dependencias adicionales
No siempre necesario para documentos simples
Modo de operación
Los loaders Unstructured suelen trabajar en dos modos:
single: Devuelve todo el documento como un único Document.
elements (recomendado): Divide el contenido en elementos estructurados:
from langchain_community.document_loaders import<Loader>loader =<Loader>("ruta/al/archivo")documents = loader.load()
En el momento de utilizarlos debes consultar la documentación de los parámetros adicionales en cada caso. Ejemplo para extracción de datos en un DataFrame de Pandas.
from langchain_community.document_loaders import DataFrameLoaderloader = DataFrameLoader(df, page_content_column="text")documents = loader.load()
Web Loaders
Los Web Loaders permiten incorporar información directamente desde internet a un sistema RAG. Esto incluye páginas web, blogs, documentación técnica o cualquier contenido accesible mediante una URL.
A diferencia de los loaders de archivos locales, aquí no trabajas con un documento estático, sino con contenido dinámico, estructurado en HTML y, en muchos casos, generado parcialmente mediante JavaScript. Para cada caso debes seleccionar el tipo correcto diferenciado en cómo acceden y procesan el contenido:
Loaders básicos → funcionan bien con páginas estáticas
Loaders con renderizado JS → necesarios para webs modernas
Loader básico para cargar páginas web. Extrae el HTML y lo convierte en texto.
AsyncHtmlLoader
Variante asíncrona para cargar múltiples páginas web de forma eficiente.
PlaywrightURLLoader
Carga páginas renderizadas con JavaScript usando Playwright. Ideal para webs dinámicas.
SeleniumURLLoader
Similar a Playwright, utiliza Selenium para renderizar contenido dinámico.
BrowserlessLoader
Utiliza un navegador remoto (Browserless) para cargar páginas complejas.
BrowserbaseLoader
Loader basado en navegador headless en la nube (Browserbase).
RecursiveUrlLoader
Crawler que navega recursivamente por enlaces dentro de una web.
SitemapLoader
Carga todas las URLs definidas en un sitemap XML.
Problemas específicos del contenido web:
Ruido HTML: El contenido incluye elementos que no aportan valor:
menús de navegación
banners de cookies
footers
enlaces secundarios
Contenido dinámico: Muchas webs modernas no cargan todo el contenido directamente en el HTML, sino que lo generan mediante JavaScript. El resultado es:
loaders básicos no ven el contenido
necesitas loaders con renderizado (Playwright, Selenium)
Riesgos de seguridad (SSRF): Los loaders tipo crawler pueden acceder a múltiples URLs automáticamente. Esto conlleva riesgos como:
acceso a recursos internos
carga de URLs maliciosas
problemas de seguridad en producción
Buenas prácticas para trabajar correctamente con Web Loaders en RAG:
No indexar páginas completas sin filtrar
Validar siempre el contenido extraído
Aplicar limpieza antes del chunking
Usar renderizado JS cuando sea necesario
Limitar el uso de crawlers a dominios controlados
Aquí tienes la sección completa de Loaders de bases de datos, lista para integrar en tu unidad:
Loaders de bases de datos
Los loaders de bases de datos permiten integrar datos estructurados directamente en un sistema RAG. A diferencia de los documentos tradicionales (PDF, web), aquí la información proviene de tablas, donde cada fila representa una unidad lógica de datos, o sea cada fila → un Document. Esto convierte datos estructurados en texto procesable por el modelo.
Loader
Descripción
SQLDatabaseLoader
Ejecuta consultas SQL y convierte cada fila del resultado en un Document. Compatible con múltiples motores vía SQLAlchemy.
DuckDBLoader
Permite cargar datos desde bases DuckDB, transformando resultados en documentos.
SnowflakeLoader
Extrae datos desde Snowflake y convierte cada fila en texto procesable.
AthenaLoader
Carga resultados de consultas en AWS Athena, ideal para grandes volúmenes de datos en la nube.
CassandraLoader
Permite trabajar con datos distribuidos en Cassandra, convirtiendo filas en documentos.
MongoDBLoader
Carga documentos desde MongoDB (NoSQL), transformando cada registro en un Document.
from langchain_community.document_loaders import SQLDatabaseLoaderfrom langchain_community.utilities import SQLDatabasedb = SQLDatabase.from_uri("sqlite:///mi_base.db")loader = SQLDatabaseLoader(db, query="SELECT * FROM reservas")documents = loader.load()
Buenas prácticas (nivel pro)
Convertir datos a texto limpio
No hacer SELECT * en producción
Limitar resultados (LIMIT)
Elegir columnas relevantes
Loaders de sistemas empresariales (SaaS)
Los loaders de sistemas empresariales permiten integrar información directamente desde herramientas utilizadas en entornos corporativos. En lugar de trabajar con archivos locales o bases de datos, estos loaders acceden a plataformas como sistemas de documentación, almacenamiento en la nube o herramientas de colaboración. A diferencia de otros loaders, aquí necesitas acceso a sistemas externos.
API tokens
OAuth
credenciales de usuario
cookies de sesión
Loader
Descripción
NotionDBLoader
Carga contenido desde una base de datos de Notion, convirtiendo cada página o entrada en un Document.
NotionDirectoryLoader
Carga exportaciones completas de Notion (directorios), incluyendo múltiples páginas y documentos.
ConfluenceLoader
Extrae páginas y contenido de espacios en Confluence, incluyendo opcionalmente adjuntos.
SlackDirectoryLoader
Carga mensajes desde un export de Slack, convirtiendo conversaciones en documentos.
DropboxLoader
Permite cargar archivos almacenados en Dropbox, incluyendo documentos y PDFs.
OneDriveLoader
Accede a archivos en Microsoft OneDrive y los transforma en documentos.
SharePointLoader
Carga contenido desde SharePoint, incluyendo documentos corporativos y bibliotecas de archivos.
Ejemplo básico (Notion)
from langchain_community.document_loaders import NotionDBLoaderloader = NotionDBLoader(integration_token="your_token",database_id="your_database_id")documents = loader.load()
Consideraciones importantes
Calidad del contenido: estos sistemas suelen contener texto desordenado, duplicados y mensajes irrelevantes por lo que es necesaria una limpieza posterior
El volumen de datos puede ser muy alto: miles de mensajes, documentos largos y múltiples fuentes. En este caso el filtrado es importante.
Privacidad y seguridad: Dado que trabajas con datos sensibles como información interna, conversaciones privadas y documentos confidenciales, es fundamental controlar accesos.
Buenas prácticas
Filtrar por fechas o relevancia
Usar metadata (autor, canal, fecha)
Limpiar antes de embeddings
Limitar el scope de datos
Loaders de repositorios y código
Los loaders de repositorios permiten trabajar con código fuente y artefactos asociados (issues, documentación) dentro de un sistema RAG. Son especialmente útiles para construir asistentes técnicos, copilots o sistemas de búsqueda sobre bases de código.
Estos loaders extraen archivos de repositorios locales o remotos y los convierten en objetos Document, manteniendo información relevante como rutas de archivo, nombres o metadatos del repositorio.
Loader
Descripción
GitLoader
Carga archivos de un repositorio Git (local o clonado desde remoto), convirtiendo cada archivo en un Document.
GithubFileLoader
Permite cargar archivos específicos desde un repositorio de GitHub mediante la API.
GitHubIssuesLoader
Extrae issues de un repositorio de GitHub, incluyendo títulos, descripciones y comentarios.
Loaders de contenido multimedia (audio, imagen, vídeo)
Los loaders de contenido multimedia permiten incorporar a un sistema RAG información que originalmente no está en formato de texto, como audio, imágenes o vídeos. Dado que los modelos de lenguaje trabajan con texto, estos loaders realizan una transformación previa: convierten contenido multimedia en texto procesable. Esto se consigue mediante tecnologías como:
transcripción de audio (speech-to-text)
OCR (reconocimiento de texto en imágenes)
generación automática de descripciones
Loader
Descripción
YoutubeLoader
Extrae transcripciones de vídeos de YouTube y las convierte en texto.
AssemblyAIAudioLoader
Carga transcripciones existentes desde AssemblyAI.
AssemblyAIAudioTranscriptLoader
Transcribe archivos de audio (locales o URL) usando AssemblyAI.
YoutubeAudioLoader
Descarga audio de vídeos de YouTube para su posterior procesamiento.
UnstructuredImageLoader
Extrae texto de imágenes mediante OCR.
ImageCaptionLoader
Genera descripciones automáticas de imágenes usando modelos de captioning.
Tipos de transformación
Audio → texto: Convierte voz en texto como llamadas, podcast o reuniones.
Imagen → texto: En esta caso hay dos enfoques:
OCR → extrae texto real
Captioning → describe la imagen
Vídeo → texto: generalmente mediante: transcripción del audio o subtítulos
Ejemplo básico (YouTube)
from langchain_community.document_loaders import YoutubeLoaderloader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=XXXX",add_video_info=True)documents = loader.load()
Ejemplo básico (audio)
from langchain_community.document_loaders import AssemblyAIAudioTranscriptLoaderloader = AssemblyAIAudioTranscriptLoader(file_path="audio.mp3")documents = loader.load()
Consideraciones importantes
Calidad del texto generado: La calidad depende del modelo de conversión ya que puede haber errores en transcripción, ruido en audio o OCR imperfecto lo que impacta directamente en embeddings.
Coste y latencia: Estos procesos suelen ser más lentos y más costosos debido a APIs externas.
Contexto limitado: El texto generado puede perder matices, simplificar contenido y omitir información visual.
Buenas prácticas
Revisar la calidad de la transcripción
Limpiar el texto antes de embeddings
Añadir metadata (fuente, timestamp, tipo)
Dividir correctamente en chunks
Aquí tienes la sección completa, alineada con el resto de tu unidad:
Loaders de datos públicos y fuentes externas
Los loaders de datos públicos permiten integrar información procedente de fuentes abiertas como enciclopedias, repositorios científicos o plataformas de contenido online. A diferencia de los loaders empresariales, aquí se trabaja con datos accesibles públicamente, lo que facilita la experimentación y el desarrollo de prototipos.
Loader
Descripción
WikipediaLoader
Carga contenido de páginas de Wikipedia a partir de una búsqueda o término específico.
PubMedLoader
Recupera artículos y abstracts del repositorio biomédico PubMed.
ArxivLoader
Carga papers científicos desde arXiv, extrayendo contenido desde PDFs o abstracts.
RedditPostsLoader
Extrae publicaciones y comentarios de Reddit desde un subreddit específico.
HNLoader
Carga contenido de Hacker News, incluyendo noticias y comentarios.
from langchain_community.document_loaders import WikipediaLoaderloader = WikipediaLoader(query="LangChain", load_max_docs=2)documents = loader.load()
Consideraciones importantes
Calidad variable del contenido: dependiendo de la fuente, el contenido puede ser generalista, informal o altamente técnico.
Ruido y relevancia: No todo lo que se carga es útil se puede cargar comentarios irrelevantes, contenido duplicado o información no estructurada
Dependencia externa: APIs , límites de uso y disponibilidad del servicio
Buenas prácticas
Limitar número de documentos (load_max_docs)
Filtrar por relevancia
Limpiar contenido antes de embeddings
Usar metadata para contexto (fuente, fecha, autor)
Loaders empresariales avanzados
Los loaders empresariales avanzados permiten integrar sistemas especializados que forman parte del stack tecnológico de una empresa. A diferencia de los loaders SaaS más generales (como Notion o Slack), estos se centran en herramientas específicas de negocio, como CRM, analítica, diseño o procesamiento de datos.
Loader
Descripción
Airbyte<Name>Loader
Conectores basados en Airbyte para integrar múltiples fuentes (Salesforce, HubSpot, Stripe, Zendesk, etc.).
AirtableLoader
Carga datos desde tablas de Airtable, convirtiendo cada registro en un Document.
FigmaFileLoader
Extrae información desde archivos de diseño en Figma, incluyendo estructuras y contenido textual.
DatadogLogsLoader
Carga logs desde Datadog, transformando eventos y registros en documentos analizables.
Para utilizar Airbyte<Name>Loader, se necesita instalar el paquete airbyte-cdk que es el Connector Development Kit (CDK) de Airbyte. Una librería de Python diseñada para construir conectores (sources) de datos de forma estandarizada.
airbyte-cdk es una herramienta de bajo nivel para crear conectores de datos robustos y escalables. Dentro de un sistema RAG, su papel no es directo, sino que actúa como capa intermedia que permite integrar fuentes externas complejas de forma estandarizada.
Si estás construyendo sistemas avanzados o integraciones personalizadas, es una pieza clave. Si estás consumiendo datos con loaders ya existentes, probablemente ni siquiera necesites interactuar con él directamente.
Cliente Juan Pérez trabaja en Hotel Sol. Su email es [email protected].
Consideraciones importantes
Dependencia de APIs: considera tener límites de uso, latencia y cambios en endpoints
Calidad del dato: estos sistemas contienen datos incompletos, campos técnicos y estructuras complejas, por lo que requieren transformación antes de embeddings.
Seguridad: datos sensibles (clientes, pagos, logs) o credenciales de acceso. Es imprescindible gestionar permisos correctamente
Buenas prácticas
Seleccionar solo campos relevantes
Transformar datos en lenguaje natural
Añadir metadata útil (fecha, tipo, origen)
Limitar volumen de datos
Loaders de almacenamiento y cloud
Los loaders de almacenamiento y cloud permiten cargar documentos desde sistemas de almacenamiento remoto, como servicios en la nube o buckets de archivos. En lugar de acceder a archivos locales, estos loaders trabajan con datos alojados en infraestructuras externas.
Loader
Descripción
S3FileLoader
Carga un archivo específico desde un bucket de Amazon S3.
S3DirectoryLoader
Carga múltiples archivos desde un bucket o carpeta en S3.
CloudBlobLoader
Permite acceder a blobs desde distintas fuentes cloud (S3, URLs, etc.).
OBSFileLoader
Carga archivos desde Huawei Object Storage (OBS).
Ejemplo básico (S3)
from langchain_community.document_loaders import S3FileLoaderloader = S3FileLoader(bucket="mi-bucket",key="ruta/archivo.pdf")documents = loader.load()
Consideraciones importantes
Autenticación: Necesitas credenciales configuradas como AWS credentials, roles IAM, tokens, etc.
Tipos de archivos: Estos loaders no procesan directamente el contenido solo lo recuperan, luego necesitarás un loader según el tipo de archivo objetivo (PDF loader, text loader, etc.)
Latencia: acceso remoto + transferencias de archivos que pueden ser más lento que en entornos locales.
Buenas prácticas
Limitar el número de archivos
Filtrar por tipo (PDF, TXT…)
Combinar con otros loaders
Aplicar limpieza posterior
Loaders de comunicación y chats
Los loaders de comunicación y chats permiten incorporar conversaciones reales dentro de un sistema RAG. Estas fuentes incluyen mensajes de plataformas como WhatsApp, Telegram, Discord o Facebook, donde el conocimiento no está en documentos formales, sino en interacciones entre personas.
Loader
Descripción
WhatsAppChatLoader
Carga conversaciones exportadas de WhatsApp en formato de texto.
TelegramChatLoader
Procesa chats exportados de Telegram (normalmente en JSON o texto).
DiscordChatLoader
Carga historiales de chat de Discord desde exports.
FacebookChatLoader
Extrae conversaciones de Facebook Messenger desde archivos exportados.
Ejemplo básico (WhatsApp)
El loader WhatsAppChatLoader no accede a la app ni a la API de WhatsApp. Trabaja sobre exportaciones de chats generadas manualmente.
from langchain_community.document_loaders import WhatsAppChatLoaderloader = WhatsAppChatLoader("data/chat_whatsapp.txt")documents = loader.load()
Ejemplo archivo exportado:
[10/01/2024, 10:30] Juan: ¿Tenemos disponibilidad este fin de semana?[10/01/2024, 10:32] Hotel: Sí, tenemos habitaciones libres.[10/01/2024, 10:33] Juan: Perfecto, ¿precio?
Resultado:
Document( page_content="Juan pregunta por disponibilidad. El hotel responde que hay habitaciones disponibles.", metadata={"source": "whatsapp", "date": "2024-01-10"})
Preprocesamiento (El texto raw no es óptimo).
clean_docs = []for doc in documents: text = doc.page_content# limpieza básica text =" ".join(text.split()) doc.page_content = text clean_docs.append(doc)
Necesidad de preprocesamiento: Aquí la limpieza es especialmente importante:
unir mensajes relacionados
eliminar ruido
resumir conversaciones
estructurar el contexto
Buenas prácticas
agrupar mensajes por conversación
filtrar mensajes irrelevantes
añadir metadata (usuario, fecha)
convertir a lenguaje más estructurado
Aquí tienes la sección completa, coherente con el resto del bloque:
Loaders utilitarios
Los loaders utilitarios no están diseñados para una fuente de datos específica, sino para optimizar y gestionar el proceso de carga. Actúan como herramientas auxiliares que permiten trabajar con múltiples documentos, combinar fuentes o mejorar el rendimiento del sistema. No cargan datos por sí mismos, sino que orquestan otros loaders.
Estos loaders permiten:
cargar grandes volúmenes de archivos
combinar múltiples fuentes en un solo flujo
mejorar el rendimiento mediante paralelización
Loader
Descripción
DirectoryLoader
Carga todos los archivos de un directorio, aplicando loaders automáticamente según el tipo de archivo.
MergedDataLoader
Combina múltiples loaders en uno solo, unificando diferentes fuentes de datos.
ConcurrentLoader
Permite cargar documentos en paralelo para mejorar el rendimiento.
Ejemplo carga masiva con DirectoryLoader:
from langchain_community.document_loaders import DirectoryLoaderloader = DirectoryLoader(path="./data",glob="**/*.pdf")documents = loader.load()