Log in to leave a comment
No posts yet
Se você está perdendo 5 horas por semana fazendo hora extra para enfiar centenas de arquivos PDF, PPT e Excel em um sistema RAG, a causa do problema é a fragmentação das bibliotecas de parsing. A estrutura existente que mistura PyPDF2 ou openpyxl apenas aumenta a complexidade do código. Ao adotar o MarkItDown da Microsoft, você pode eliminar lógicas complexas de ramificação.
Ao refatorar o pipeline, utilize o padrão processor factory.
convert() do MarkItDown.Essa estrutura permite que o mecanismo de parsing seja escalado de forma independente. Manter a estrutura das tabelas reduz em 34% os erros de preservação de tabelas quando o LLM lê o documento (com base no anúncio da Microsoft de 2024).
O custo de tokens de embedding é diretamente proporcional ao comprimento do arquivo Markdown. O resultado gerado pelo MarkItDown contém metadados ou ruídos que não precisam ser enviados ao LLM. Filtrar isso pode reduzir os custos de API em 30%.
Construa uma lógica de filtragem eficiente.
re do Python para reduzir quebras de linha consecutivas (\n{3,}) para apenas duas, e remova avisos de direitos autorais repetitivos ou tags HTML com expressões regulares.MarkdownHeaderTextSplitter para fazer o chunking por unidades de cabeçalho. Gerenciar separadamente child chunks para busca e parent chunks para contexto melhora a precisão da recuperação.Aproveitar a eficiência de tokens reduz significativamente os custos mensais de API corporativa.
Quando a versão da biblioteca muda, o resultado do parsing também se altera sutilmente. Pare com essa prática de engenheiros abrirem arquivos manualmente para verificar. A adoção de testes de snapshot permite detectar quedas de qualidade imediatamente.
Crie um ambiente de testes unitários para evitar regressões.
pytest-regressions e salve o Markdown bem convertido como um arquivo golden master.Esse sistema automatizado elimina o trabalho de verificação manual que consumia 5 horas por semana.
Processar milhares de documentos sequencialmente é um desperdício de recursos do sistema. Ao usar concurrent.futures.ProcessPoolExecutor para paralelizar o processamento em lote, é possível concluir em poucas horas tarefas que levavam dias.
Implemente a arquitetura de paralelização da seguinte forma:
Essa abordagem ajuda a manter a atualização dos dados enquanto utiliza os recursos do sistema de forma eficiente.