Document AI

Document Processing Pipeline

Pipeline de processamento de documentos com detecção automática de tabelas de preço, chunking estratégico e geração automática de catálogos para RAG.

100%
Auto-detect Tables
0
Broken Price Chunks
<5min
Index Update
Multi
Tenant Isolated

O Problema

Clínicas enviam tabelas de preço em formatos diversos (PDF, Excel, Word). Chunking tradicional quebra tabelas no meio, destruindo a relação entre procedimento e preço:

❌ Chunk quebrado no meio da tabela:
"...Limpeza dental R$ 150,00
Clareamento R$ 800,00
Extração simples R$..."
--- FIM DO CHUNK ---
"...250,00
Canal R$ 600,00..."

A Solução

Detecção Automática de Tabelas (Docling)

Análise estrutural do documento para identificar tabelas de preço vs texto corrido (FAQ, políticas):

  • Heurísticas de layout (colunas, bordas, alinhamento)
  • Detecção de padrões monetários (R$, $, €)
  • Headers típicos ("Procedimento", "Valor", "Preço")

Chunking Estratégico

Estratégias diferentes para tipos de conteúdo diferentes:

📊 Tabelas de Preço TableRow Strategy: Cada linha da tabela vira um chunk atômico. Nunca quebra no meio de um preço.

TableRow Strategy: Cada linha da tabela vira um chunk atômico. Nunca quebra no meio de um preço.

📝 FAQ / Políticas Semantic Chunking: Chunks por parágrafo ou seção semântica, com overlap para contexto.

Semantic Chunking: Chunks por parágrafo ou seção semântica, com overlap para contexto.

Catálogo Automático

Extração estruturada gera catálogo JSON pronto para busca:

{
  "catalog_id": "clinica_demo_pricing",
  "items": [
    {
      "name": "Limpeza Dental",
      "aliases": ["profilaxia", "limpeza"],
      "payments": [
        { "method": "pix", "value": 150.00 },
        { "method": "cartao", "value": 165.00 }
      ],
      "metadata": { "category": "preventivo" }
    }
  ],
  "match": { "min_score": 0.82 }
}

🏗️ Pipeline de Processamento

┌─────────────────────────────────────────────────────────────┐
│                    DOCUMENTO UPLOAD                         │
│                   (PDF, Excel, Word)                        │
└─────────────────────────┬───────────────────────────────────┘
                          ▼
┌─────────────────────────────────────────────────────────────┐
│  1. HASH CHECK                                              │
│     - Verifica duplicados via SHA-256                       │
│     - Skip se já processado                                 │
└─────────────────────────┬───────────────────────────────────┘
                          ▼
┌─────────────────────────────────────────────────────────────┐
│  2. DOCLING ANALYSIS                                        │
│     - Detecta tipo de conteúdo (tabela vs texto)            │
│     - Extrai estrutura do documento                         │
└─────────────────────────┬───────────────────────────────────┘
                          ▼
          ┌───────────────┴───────────────┐
          ▼                               ▼
┌─────────────────────┐       ┌─────────────────────────────┐
│  PRICING TABLE      │       │     TEXT CONTENT            │
│  - TableRow chunks  │       │     - Semantic chunks       │
│  - Catalog extract  │       │     - Overlap for context   │
└─────────┬───────────┘       └─────────────┬───────────────┘
          │                                 │
          └───────────────┬─────────────────┘
                          ▼
┌─────────────────────────────────────────────────────────────┐
│  3. EMBEDDING GENERATION                                    │
│     - OpenAI text-embedding-3-large (3072d)                 │
│     - Batch processing para eficiência                      │
└─────────────────────────┬───────────────────────────────────┘
                          ▼
┌─────────────────────────────────────────────────────────────┐
│  4. STORAGE (Memory Engine)                                 │
│     - Chunks → pgvector                                     │
│     - Catalog → pricing_catalogs table                      │
│     - HNSW index update (async via Celery)                  │
└─────────────────────────────────────────────────────────────┘

HNSW Index Auto-Update

Índices HNSW são atualizados automaticamente via Celery workers, garantindo que novos documentos estejam disponíveis para busca em minutos:

  • Trigger: Upload de documento ou schedule periódico
  • Rebuild: Incremental quando possível, full rebuild se necessário
  • Zero-downtime: Novo índice é criado em paralelo, swap atômico

Stack Técnica

DoclingCeleryRedis QueuepgvectorHNSWOpenAI EmbeddingsFastAPI