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!