Pressione Esc para fechar

Ingestion - Parsing

← Voltar para o Dia 4: RAG: finalmente

Ingestion Parsing

O que é

Ingestion Parsing, ou parsing durante a ingestão, é o processo de interpretar e transformar os dados brutos de uma fonte em uma estrutura que o sistema consiga compreender e processar.

Quando um arquivo entra em um pipeline RAG, ele não necessariamente está disponível como texto estruturado.

Um PDF, por exemplo, pode conter:

Texto
Títulos
Parágrafos
Tabelas
Listas
Imagens
Cabeçalhos
Rodapés

O parser precisa identificar esses elementos e transformar o conteúdo em uma representação estruturada.

Por exemplo:

PDF
 ↓
Parsing
 ↓
Título
Parágrafos
Tabela
Metadados

Isso é diferente de simplesmente extrair todos os caracteres do arquivo. O parsing busca entender como o conteúdo está organizado.


Como funciona

Imagine um documento como uma página visual:

POLÍTICA DE FÉRIAS

1. Solicitação

Os funcionários devem solicitar férias
com antecedência mínima de 30 dias.

Prazo | Responsável
30 dias | Funcionário

Para uma pessoa, é relativamente fácil perceber que:

"POLÍTICA DE FÉRIAS" → título

"1. Solicitação" → seção

"Os funcionários..." → parágrafo

"Prazo | Responsável" → tabela

Para um sistema, essas informações precisam ser identificadas e estruturadas.

O parsing faz justamente essa interpretação:

Documento
   ↓
Parser
   ↓
Estrutura identificada
   ├── Título
   ├── Seção
   ├── Parágrafo
   └── Tabela

Depois disso, o conteúdo pode passar por etapas como cleaning e chunking:

Documento
   ↓
Parsing
   ↓
Estruturação
   ↓
Cleaning
   ↓
Chunking
   ↓
Embedding
   ↓
Vector Database

O parsing pode variar bastante dependendo do formato da fonte.

Para um arquivo de texto simples, o processo pode ser relativamente fácil.

Para um PDF complexo, pode ser necessário identificar:

  • Texto
  • Títulos
  • Parágrafos
  • Tabelas
  • Listas
  • Colunas
  • Cabeçalhos
  • Rodapés
  • Imagens
  • Metadados

Em documentos digitalizados, pode ser necessário utilizar OCR, que transforma texto presente em imagens em texto que o sistema consegue processar.


Um exemplo

Imagine que recebemos um PDF com uma política de reembolso:

POLÍTICA DE REEMBOLSO

1. Despesas elegíveis

São elegíveis despesas relacionadas
a viagens corporativas.

Categoria       Limite
Hospedagem      R$ 500
Alimentação     R$ 150

Um parser pode transformar essa informação em uma estrutura semelhante a:

Documento
├── Título
│   └── Política de Reembolso
│
├── Seção
│   └── Despesas elegíveis
│
├── Parágrafo
│   └── São elegíveis despesas relacionadas
│       a viagens corporativas.
│
└── Tabela
    ├── Hospedagem → R$ 500
    └── Alimentação → R$ 150

Essa estrutura é muito mais útil para o restante do pipeline.

Imagine que simplesmente extraíssemos os caracteres do PDF:

POLÍTICA DE REEMBOLSO
1. Despesas elegíveis
São elegíveis despesas relacionadas...
Hospedagem R$ 500 Alimentação R$ 150

Nesse processo, a relação entre as colunas da tabela pode ser perdida.

O parser, quando capaz de reconhecer a estrutura, pode preservar essa relação:

Hospedagem → limite: R$ 500
Alimentação → limite: R$ 150

Isso é especialmente importante para RAG porque o sistema posteriormente poderá recuperar essas informações de maneira mais confiável.

Depois do parsing:

Parsing
   ↓
Conteúdo estruturado
   ↓
Cleaning
   ↓
Chunking
   ↓
Embedding
   ↓
Vector Database

Se um usuário perguntar:

"Qual é o limite para hospedagem?"

a informação relevante poderá ser recuperada preservando a associação entre hospedagem e R$ 500.


Por que é importante

O parsing é importante porque dados mal interpretados na entrada podem comprometer todas as etapas posteriores do RAG.

Se uma tabela for transformada incorretamente em texto, por exemplo, o embedding será gerado sobre uma representação que pode ter perdido relações importantes.

O mesmo pode acontecer com:

  • Títulos separados de seus conteúdos.
  • Colunas de PDF misturadas.
  • Listas desorganizadas.
  • Cabeçalhos incorporados ao texto.
  • Notas de rodapé confundidas com o conteúdo principal.
  • Metadados perdidos.
  • Texto de imagens não identificado.

Por isso, parsing é especialmente importante quando trabalhamos com documentos complexos.

Também é importante diferenciar Parsing de Cleaning.

Parsing procura entender e estruturar o conteúdo.

Cleaning procura remover ruídos e normalizar o conteúdo.

Por exemplo:

PDF
 ↓
Parsing
 ↓
Identifica:
título, parágrafos, tabela
 ↓
Cleaning
 ↓
Remove:
rodapés, caracteres inválidos, repetições
 ↓
Chunking

Podemos relacionar os conceitos que estamos estudando no pipeline de ingestion:

Fonte de dados
      ↓
Ingestion
      ↓
Parsing
      ↓
Cleaning
      ↓
Chunking
      ↓
Embedding
      ↓
Vector Database

Essa sequência ajuda a entender uma distinção importante:

Ingestion é o processo mais amplo de trazer os dados para o pipeline.

Parsing interpreta e estrutura os dados.

Cleaning remove ruídos e normaliza o conteúdo.

Chunking divide o conteúdo em unidades adequadas para recuperação.

Embedding transforma essas unidades em representações vetoriais.

A ideia central é: Ingestion Parsing é a etapa que interpreta os dados recebidos e transforma sua estrutura original em uma representação que o pipeline de RAG consiga processar, preservando relações importantes entre os elementos do conteúdo.

link de compartilhamento