← Voltar a RAG — Arquitetura de Ingestion e Retrieval
🧩 Módulos
RAG — Arquitetura de Ingestion e RetrievalApresentaçã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ódulo | Responsabilidade |
|---|---|
models.py | Definições Pydantic/dataclasses dos Records |
registry.py | CRUD do asset registry |
dependency_tracker.py | Grafo de dependências, topological sort |
change_detection.py | Comparar source vs registry, decidir new/updated/deleted |
normalizer.py | Converter saída bruta dos loaders em Records |
orchestrator.py | Coordenar: load → detect → normalize → pipeline |
validators.py | Schema 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ódulo | Responsabilidade |
|---|---|
file_diff.py | Hash, checksum, conteúdo |
chunk_diff.py | Comparar chunks entre versões |
sql_diff.py | Row-level diff, schema diff |
graph_diff.py | Diff de nós e edges |
Versioning
Lógica específica de versionamento por tipo de asset.
Metadata
| Módulo | Responsabilidade |
|---|---|
asset_registry.py | Persistência do registry |
lineage_store.py | Source → asset → derived |
manifests.py | Manifestos para retrieval (chunk sets, etc.) |
Events
| Módulo | Responsabilidade |
|---|---|
ingestion_events.py | Emitir eventos (logs, métricas) |
reindex_triggers.py | Fila 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.