← Voltar a RAG — Arquitetura de Ingestion e Retrieval

🧩 Módulos

RAG — Arquitetura de Ingestion e Retrieval

Apresentação

9. Estrutura de Módulos Recomendada


Árvore de Diretórios

app/
  ingestion/
    models.py              # DocumentRecord, StructuredRecord, GraphRecord
    registry.py            # Asset registry
    dependency_tracker.py  # Dependências entre assets
    change_detection.py    # Orquestrador de deteção
    normalizer.py          # Normalização para modelo canónico
    orchestrator.py        # Orquestra loaders → pipelines
    validators.py          # Validação de schema, refs

    loaders/
      yaml_loader.py
      json_loader.py
      csv_loader.py
      markdown_loader.py
      pdf_loader.py
      sql_loader.py
      graph_loader.py

    pipelines/
      document_pipeline.py
      sql_pipeline.py
      graph_pipeline.py

    diff/
      file_diff.py
      chunk_diff.py
      sql_diff.py
      graph_diff.py

    versioning/
      document_versioning.py
      sql_versioning.py
      graph_versioning.py

    metadata/
      asset_registry.py
      lineage_store.py
      manifests.py

    events/
      ingestion_events.py
      reindex_triggers.py

Responsabilidades por Módulo

Núcleo

MóduloResponsabilidade
models.pyDefinições Pydantic/dataclasses dos Records
registry.pyCRUD do asset registry
dependency_tracker.pyGrafo de dependências, topological sort
change_detection.pyComparar source vs registry, decidir new/updated/deleted
normalizer.pyConverter saída bruta dos loaders em Records
orchestrator.pyCoordenar: load → detect → normalize → pipeline
validators.pySchema validation, referential integrity

Loaders

Cada loader: recebe path/connection, devolve estrutura raw com source_id, source_type, raw_content, metadata.

Pipelines

Cada pipeline: recebe Records do tipo apropriado, aplica transformações, escreve para backend, atualiza registry.

Diff

MóduloResponsabilidade
file_diff.pyHash, checksum, conteúdo
chunk_diff.pyComparar chunks entre versões
sql_diff.pyRow-level diff, schema diff
graph_diff.pyDiff de nós e edges

Versioning

Lógica específica de versionamento por tipo de asset.

Metadata

MóduloResponsabilidade
asset_registry.pyPersistência do registry
lineage_store.pySource → asset → derived
manifests.pyManifestos para retrieval (chunk sets, etc.)

Events

MóduloResponsabilidade
ingestion_events.pyEmitir eventos (logs, métricas)
reindex_triggers.pyFila de reindex pendentes

Fluxo no Orchestrator

# Pseudocódigo
def run_ingestion(sources: list[SourceConfig]):
    for source in sources:
        raw = loader.load(source)
        changes = change_detection.detect(raw, registry)
        for change in changes:
            record = normalizer.normalize(change)
            pipeline = select_pipeline(record.type)
            pipeline.process(record)
            registry.update(record)
            events.emit(change)

Zona de prática

Sem perguntas. Clica em Editar para adicionar.