← Voltar a RAG — Arquitetura de Ingestion e Retrieval

📐 Teoria vs Implementação

RAG — Arquitetura de Ingestion e Retrieval

Apresentação

11. Teoria vs Implementação — O Que Está Planeado

Este documento mapeia o que está desenhado na arquitetura de ingestion vs o que está implementado hoje. Útil para artigos e planeamento.


1. Estado Geral

A documentação em ingestion/ descreve uma arquitetura completa pensada para produção. A implementação atual em ingest-rag/ é parcial — foca-se em:

  • Documentos Markdown → Chroma (via script ingest_docs.py)
  • Sem change detection, sem versioning, sem modelo canónico
  • Sem SQL pipeline, sem graph pipeline
  • Sem registry, dependency tracking, observability

2. Por Bloco

Bloco A — Data Sources

FonteTeoriaImplementação
Markdown✅ Loader, chunkingingest_docs.py
PDF✅ Loader planeado
YAML, JSON, CSV✅ Loaders planeados
SQL tables✅ SqlTableLoader❌ (dados vêm de adaptive-rag/seed)
Graph✅ GraphLoader❌ (Neo4j seed externo)
APIs✅ Futuro

Bloco B — Source Connectors

LoaderTeoriaImplementação
MarkdownLoaderInterface definidaImplícito em ingest_docs.py
OutrosMódulos em loaders/

Bloco C — Change Detection

FuncionalidadeTeoriaImplementação
Hash/checksum
New/updated/deleted❌ (sempre full reindex)
Schema diff (SQL)
Graph diff

Bloco D — Canonical Normalization

RecordTeoriaImplementação
DocumentRecord✅ Schema completo❌ (chunks vão direto para Chroma)
StructuredRecord
GraphRecord

Bloco E — Pipelines

PipelineTeoriaImplementação
DocumentVersioning, chunk diff, reindex parcialChunking + embed + upsert total
SQLValidate, upsert, SCD2❌ (seed externo)
GraphNode/edge diff, versioning❌ (seed externo)

Bloco F — Metadata e Observability

FuncionalidadeTeoriaImplementação
Asset registry✅ Schema completo
Lineage store
Dependency tracker
Métricas por run
Logs estruturados
Alertas
Reindex triggers

3. Cenários — Estado

CenárioTeoriaImplementação
MD alteradoDiff, version, reindex parcialFull reindex manual
PDF novoFingerprint, version
YAML em cascataDependency-driven
Nova linha SQLWatermark, upsertSeed único
Update SQLSCD2
Relação graph mudaEdge versioning
Documento apagadoSoft delete
Chunking strategy mudaNova index_version
Embedding model mudaNova coleção

4. O Que Existe Hoje (ingest-rag)

  • Script scripts/ingest_docs.py:
    • .md de data/generated/docs
    • Chunking fixo (600/100)
    • Embedding com sentence-transformers
    • Upsert em Chroma (coleção "docs")
  • Dados: symlink ou copy de adaptive-rag/data/generated
  • Sem change detection: cada run reindexa tudo
  • Sem metadados version/freshness nos chunks

5. Prioridade para Implementação

OrdemComponenteImpactoDepende de
1Change detection (hash)Evitar reindex desnecessário
2DocumentRecord canónicoBase para diff e versioning
3Chunk diffReindex parcial1, 2
4Asset registry (mínimo)Saber o que está indexado
5Loaders PDF, YAMLMais fontes
6SQL pipelineDados estruturadosadaptive-rag
7Graph pipelineRelaçõesadaptive-rag
8Dependency trackerCascatas4
9ObservabilityProdução4

6. Resumo para Artigo

"A arquitetura de ingestion está completamente especificada em teoria: 6 blocos (Sources → Connectors → Change Detection → Canonical → Pipelines → Metadata), 3 tipos de Records (Document, Structured, Graph), versioning, dependency tracking, e ligação com retrieval via metadados de freshness. A implementação actual cobre apenas o path mais simples: documentos Markdown → chunking → Chroma, sem change detection nem versioning. O gap principal é o modelo canónico e a change detection, que permitiriam reindexação incremental e consistência com SQL/graph. A documentação serve como blueprint para evoluir a implementação de forma ordenada."

Zona de prática

Sem perguntas. Clica em Editar para adicionar.