Puedes seguir el artículo y descargar el código en este notebook subido en GitHub.
SimpleDirectoryReader es la manera más sencilla de cargar datos de archivos locales en LlamaIndex. Para casos de uso en producción la documentación recomienda utilizar uno de los Readers disponibles en LlamaHub, pero SimpleDirectoryReader es una buena manera de empezar.
Este módulo soporta diferentes tipos de archivos, aunque los tratará todos como texto, así: .csv (comma-separated values), .docx – Microsoft Word, .epub – EPUB ebook format, .hwp – Hangul Word Processor, .ipynb – Jupyter Notebook, .jpeg, .jpg – JPEG image, .mbox – MBOX email archive, .md – Markdown, .mp3, .mp4 – audio and video, .pdf – Portable Document Format, .png – Portable Network Graphics, .ppt, .pptm, .pptx – Microsoft PowerPoint
El uso más directo es pasarle un input_dir y este cargará todos los archivos soportados del directorio:
from llama_index.core import SimpleDirectoryReader
reader = SimpleDirectoryReader(input_dir="data/")
documents = reader.load_data()
documents
Los Documents también se pueden procesar en paralelo, si hay muchos archivos en el directorio:
documents = reader.load_data(num_workers=4)
Puedes usar otras maneras de cargar los datos, por ejemplo, leyendo la información de subdirectorios, iterando cada archivo, o restringiendo la carga de alguno de los archivos, etc. Todos los casos de uso los tienes en la documentación oficial.
Hay una opción de extender la funcionalidad de SimpleDirectoryReader especificando una función para que cuando lea cada archivo también extraiga la metadata y la añada a cada objeto Documento resultante utilizando el parámetro file_metadata.
def get_meta(file_path):
return {"category": "paper", "file_path": file_path}
reader = SimpleDirectoryReader(input_dir="data/", file_metadata=get_meta)
documents = reader.load_data()
documents
Lee estos artículos relacionados con la extracción de metadatos de los documentos:
Metadata, ¿cómo se personaliza un objeto Document en LlamaIndex?
AVANZADO. Extracción de Metadata para una mejor indexación y comprensión de un objeto Document en LlamaIndex
CREDITS: https://docs.llamaindex.ai/en/stable/module_guides/loading/simpledirectoryreader