1
resposta

[Bug] Problemas com o DirectoryLoader

Não sei se houve alguma atualização na classe DirectoryLoader, pois ele não está carregando apenas 3 arquivos pdfs, depois de uma pesquisada, eu vi que tinha a opção de importar a classe PyPDFLoader no atributo loader_cls, assim evitando o UnstructedFileLoader que é setado como default. Daí então desmembrou tudo de uma vez transformando em uma array de 59 páginas ao invés de 3 arquivos.

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader
pdfs = DirectoryLoader("documents", glob="*.pdf", loader_cls=PyPDFLoader)
pdfs = pdfs.load()
len(pdfs)
1 resposta

Ei, Thiago! Tudo bem?

O comportamento que você está observando, onde o resultado é uma array de 59 páginas ao invés de 3 arquivos, pode estar relacionado ao modo como o PyPDFLoader processa os PDFs. Ele tende a carregar cada página como um documento separado, o que explica o número maior de documentos.

Se você deseja manter os PDFs como documentos únicos, teste concatenar as páginas de cada PDF após o carregamento. Veja este exemplo:

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader

# Carregar os PDFs
pdfs = DirectoryLoader("documents", glob="*.pdf", loader_cls=PyPDFLoader)
documents = pdfs.load()

# Agrupar páginas de cada PDF em um único documento
from collections import defaultdict

pdf_documents = defaultdict(list)
for doc in documents:
    pdf_documents[doc.metadata['source']].append(doc)

# Concatenar as páginas de cada PDF
combined_documents = []
for source, pages in pdf_documents.items():
    combined_content = "\n".join(page.page_content for page in pages)
    combined_documents.append({
        "content": combined_content,
        "metadata": {"source": source}
    })

# Agora você tem uma lista de documentos combinados
print(len(combined_documents))  # Deve retornar o número de arquivos PDF originais

Adapte o código conforme o seu projeto, se necessário. Com esse código, dá para ter um norte de como agrupar as páginas por arquivo PDF original e as concatena em um único documento. Isso deve ajudar a manter a estrutura que você esperava.

Sobre mudanças na classe, aparentemente não possui nenhum aviso na documentação, deixo o link abaixo para te auxiliar nos estudos:

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!