Modernização do pipeline de processamento de documentos legados e redução de custos
Redução da manutenção através da integração da lógica de conversão Markdown
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.
- Remova as bibliotecas espalhadas por formato e unifique a interface de chamada com a função
convert() do MarkItDown.
- Segmente o método de processamento de acordo com a complexidade do documento. Escolha um parser leve para textos simples e o MarkItDown para documentos complexos com muitas tabelas.
- Isole todas as dependências em contêineres Docker (Python 3.11 ou superior) e faça o deploy com FastAPI.
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).
Economia de 30% nos custos de API com pré-processamento de Markdown
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.
- Use o módulo
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.
- Utilize o
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.
- Use o hash MD5 para bloquear preventivamente o embedding duplicado do mesmo relatório.
Aproveitar a eficiência de tokens reduz significativamente os custos mensais de API corporativa.
Gerenciamento da qualidade de dados com testes de snapshot
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.
- Instale o plugin
pytest-regressions e salve o Markdown bem convertido como um arquivo golden master.
- Faça com que o script de teste compare o resultado da conversão com o golden master toda vez. Envie um alerta imediatamente se ocorrer uma diferença (diff).
- Use um modelo de sentence transformer para medir a similaridade de cosseno entre o original e a versão convertida. Configure para registrar um log apenas quando a taxa de preservação de formato for inferior a 0,9.
Esse sistema automatizado elimina o trabalho de verificação manual que consumia 5 horas por semana.
Aumento da velocidade de processamento em lote com processamento paralelo
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:
- Se o servidor tiver 16 GB de RAM, limite os workers a 20-25. Aumentar excessivamente causará apenas erros de memória.
- Divida os arquivos em lotes de 50 a 100 unidades e chame o garbage collection manualmente a cada lote para evitar vazamentos de memória.
- Separe PDFs de grande porte, acima de 10 MB, em uma fila dedicada para que sejam tratados por workers de alto desempenho.
Essa abordagem ajuda a manter a atualização dos dados enquanto utiliza os recursos do sistema de forma eficiente.