Saltar para o conteúdo principal
Damascode

Perspectivas de engenharia

Dados enterprise prontos para IA: governação, qualidade, linhagem, RAG e acesso seguro

Porque a pesquisa vectorial falha sem ownership, classificação e autorização no retrieval.

25 de junho de 2026 · 27 min de leitura

A geração aumentada por recuperação e agentes empresariais falham silenciosamente quando os dados estão duplicados, obsoletos, mal classificados ou legalmente frágeis. A governação de dados prontos para IA liga metadados de catálogo, regras de qualidade, controlo de acesso, linhagem e retenção aos embeddings e documentos que os seus modelos consomem. Organizações europeias enfrentam RGPD, reguladores sectoriais e auditorias de clientes que perguntam não só o que o modelo disse, mas que registos informaram a resposta. Este guia define princípios de dados prontos para IA, arquitectura de pipeline RAG, integração de catálogo, listas de verificação de qualidade e modelos operacionais para proprietários de dados e equipas de plataforma. Liga a arquitectura agentica de IA empresarial e segurança de IA empresarial. A Damascode, Digital Agency, Lda assiste no desenho de plataformas de dados através de consultoria de TI e implementação via desenvolvimento de software nearshore.

Índice

  • O que significa dados prontos para IA
  • Governação vs capacitação
  • Domínios de dados e classificação
  • Arquitectura de dados RAG de referência
  • Catálogo, linhagem e propriedade
  • Estratégias de ingestão e chunking
  • Controlo de acesso para vectores
  • Dimensões de qualidade e SLAs
  • PII, categorias especiais e base legal
  • Actualidade, versionamento e eliminação
  • Conjuntos de avaliação e perguntas douradas
  • Modelo operacional e RACI
  • Exemplos de implementação
  • Lista de verificação de migração
  • FAQ
  • Referências

O que significa dados prontos para IA

Dados prontos para IA são descobríveis, classificados, permitidos para um propósito declarado, tecnicamente adequados para embedding e recuperação, e removíveis quando a retenção expira ou titulares exercem direitos de apagamento. Não é «despejar tudo numa base de dados vectorial».

PilarPergunta respondida
LegalPodemos usar isto para assistência IA?
SegurançaQuem pode recuperar que chunks?
QualidadeOs factos estão actuais e consistentes?
OperaçõesQuão rápido index e deletes propagam?
EconomiaQuanto custam armazenamento e re-embedding? (FinOps)

Sem pilares, o RAG torna-se cópia sombra de dados de produção com controlos mais fracos que os sistemas de origem.

Governação vs capacitação

Equipas de governação por vezes receiam bloquear inovação. Enquadre a governação como guardrails que aceleram entrega:

  • Conjuntos de dados aprovados encurtam revisão legal por funcionalidade.
  • Chunking e metadados standard melhoram precisão de recuperação.
  • Hooks automatizados de eliminação reduzem risco de incidente RGPD.

Platform engineering entrega pipelines de ingestão self-service na plataforma interna de programadores; stewards de dados possuem definições e políticas de acesso.

Domínios de dados e classificação

Mapeie domínios antes de tooling:

DomínioExemplosClassificação típica
Marketing públicoWebsite, brochurasPúblico
Ops internasRunbooks, ADRs de arquitecturaInterno
ClienteTickets, contratosConfidencial
RH / saúdeAvaliações, notas médicasRestrito / categoria especial

A classificação conduz: requisitos de encriptação, se dados podem entrar em APIs de modelos partilhados, visibilidade de chunks em índices multi-inquilino e verbosidade de logging.

text
 +----------------+     +------------------+     +----------------+
 | Source systems | --> | Ingestion zone   | --> | Curated corpus |
 | (CRM, wiki,    |     | (ETL, PII scan)  |     | (per domain)   |
 |  data lake)    |     +------------------+     +-------+--------+
 +----------------+                                      |
                                                         v
                                                +--------+---------+
                                                | Vector index +   |
                                                | metadata store   |
                                                +--------+---------+
                                                         |
                                                         v
                                                +--------+---------+
                                                | RAG / Agent apps |
                                                +------------------+

Arquitectura de dados RAG de referência

Componentes lógicos:

  1. Camada de conectores: sync incremental de fontes (API, CDC, object storage).
  2. Normalização: HTML para texto, OCR, detecção de idioma.
  3. Enriquecimento: título, URL de origem, proprietário, classificação, valid_from/to.
  4. Chunking: divisões conscientes de estrutura (headings, tabelas).
  5. Job de embedding: batch ou streaming com versão de modelo registada.
  6. Índice: vector DB mais keyword (pesquisa híbrida recomendada).
  7. API de serving: query com contexto de utilizador para filtro ACL.

Comparação de recuperação híbrida:

ModoForçaFraqueza
Só vectorMatch semânticoFalha SKUs, IDs exactos
Só keywordTokens exactosLacuna de sinónimos
Híbrido + rerankMelhor default empresarialMaior latência/custo

Catálogo, linhagem e propriedade

Integre com catálogos como OpenMetadata, DataHub ou soluções cloud-native. Metadados mínimos por dataset de IA:

  • dataset_id, nome de negócio, descrição
  • e-mails de data owner e steward
  • base legal (RGPD Art. 6) e referência DPIA se necessário
  • ID de política de retenção
  • casos de uso permitidos (support_bot, engineering_copilot)
  • versão do modelo de embedding
  • IDs de sistemas de origem upstream

A linhagem deve mostrar: tabela ou ficheiro de origem -> job de transformação -> chunk ID -> vector ID. Quando um cliente elimina perfil, a linhagem encontra todos os chunks derivados.

Exemplo de registo de linhagem (YAML):

yaml
lineage:
  chunk_id: chk_8f2a91
  source:
    system: confluence
    page_id: "4429182"
    version: 17
  transforms:
    - job: normalize_html_v3
      at: "2026-10-01T08:00:00Z"
    - job: embed_text-embedding-3-large
      at: "2026-10-01T08:05:00Z"
  vector_ids: [vec_9912, vec_9913]
  classification: internal
  owner: platform-docs@example.com

Estratégias de ingestão e chunking

Chunking fraco causa respostas erradas com mais frequência do que modelos fracos.

Tipo de conteúdoEstratégia de chunk
PolíticasDividir em H2, manter prefixo de título do artigo
Docs APIUm endpoint por chunk com method + path
TicketsResumo de thread + chunk de último estado
TabelasGrupos de linhas com linha de cabeçalho repetida

Ilustração Python para chunking consciente de estrutura:

python
from dataclasses import dataclass

@dataclass
class Chunk:
    text: str
    metadata: dict

def chunk_markdown_sections(md: str, max_chars: int = 1200) -> list[Chunk]:
    sections = md.split("\n## ")
    out: list[Chunk] = []
    for i, sec in enumerate(sections):
        body = sec if i == 0 else "## " + sec
        while len(body) > max_chars:
            out.append(Chunk(body[:max_chars], {"part": "split"}))
            body = body[max_chars:]
        out.append(Chunk(body, {"part": "whole"}))
    return out

Guarde source_version em cada chunk para a recuperação preferir versão mais recente em conflitos.

Controlo de acesso para vectores

Vectores não são fronteiras mágicas de segurança. Implemente filtro no momento da query:

typescript
type QueryContext = { userId: string; groups: string[]; clearance: string };

export function buildMetadataFilter(ctx: QueryContext): Record<string, unknown> {
  return {
    $and: [
      { classification: { $lte: ctx.clearance } },
      { allowed_groups: { $in: ctx.groups } },
      { valid_to: { $gte: new Date().toISOString() } },
    ],
  };
}

Sincronize membros de grupos do identity provider em schedule; falhe fechado se sync estiver obsoleto além do SLA.

Para SaaS multi-inquilino, isolamento físico ou lógico de índice por inquilino previne fugas de nearest neighbor aproximado cross-tenant.

Dimensões de qualidade e SLAs

Defina qualidade mensurável para corpora de IA:

DimensãoMétricaSLA de exemplo
ActualidadeLag origem para índice< 4 horas wiki interna
Completude% docs ingeridos vs catálogo> 99% conjunto aprovado
PrecisãoEval humana em golden set> 85% atribuição correcta
ConsistênciaTaxa de chunks duplicados< 2%
SegurançaOcorrências PII no índice0 achados críticos

Automatize scans: regex e NER para IBAN, e-mail, termos de saúde em domínios errados.

PII, categorias especiais e base legal

RGPD e leis similares exigem clareza:

  • Limitação de finalidade: não reutilize transcrições de suporte para embeddings de marketing sem base.
  • Minimização: redija nomes onde não necessários para respostas.
  • Apagamento: propague deletes ao vector store dentro de prazo documentado.
  • Dados de categoria especial: negar por defeito em copilotos gerais salvo via legal explícita.

Documente decisões no registo de IA. Envolva DPO cedo ao ligar fontes RH ou saúde.

Actualidade, versionamento e eliminação

Versionamento: quando página Confluence actualiza, marque chunks antigos superseded antes do job de embed novo completar; camada de serving exclui superseded salvo modo histórico explícito.

API de eliminação:

python
def delete_subject_data(subject_id: str, index_client) -> int:
    chunk_ids = index_client.find_chunks(metadata={"subject_id": subject_id})
    index_client.delete_vectors([c.vector_id for c in chunk_ids])
    index_client.delete_metadata(chunk_ids)
    return len(chunk_ids)

Teste apagamento trimestralmente com titulares sintéticos.

Conjuntos de avaliação e perguntas douradas

Construa um conjunto golden Q&A por domínio com:

  • texto da pergunta
  • fragmentos de resposta esperados
  • IDs de documentos de origem obrigatórios
  • testes negativos (pergunta deve recusar)

Execute eval em cada mudança de modelo de embedding ou refactor major de ingestão. Acompanhe precision@k e precisão de citação.

Tipo evalDetecta
Só recuperaçãoChunk errado seleccionado
End-to-endAlucinação do modelo apesar de boa recuperação
RecusaResponder em excesso a partir de docs restritos

Ligue falhas de eval a stewards, não apenas a prompt engineers.

Modelo operacional e RACI

ActividadeData ownerPlataformaSegurançaLegal
Aprovar nova fonteACCI
Construir conectorIRCI
ClassificaçãoAICC
Incidente de fugaIRAC

R = responsible, A = accountable, C = consulted, I = informed.

Revisão trimestral de corpus: remover projectos obsoletos, refrescar classificações, validar que proprietários ainda estão empregados.

Exemplos de implementação

Fragmento DAG estilo Airflow (conceptual)

python
def ingest_wiki_domain(domain: str, **context):
    docs = fetch_wiki(domain)
    normalized = [normalize(d) for d in docs]
    chunks = flatten(chunk_doc(d) for d in normalized)
    embed_and_upsert(chunks, model="text-embedding-3-large")

Teste dbt para alinhamento de catálogo

sql
-- fail if orphaned chunks exist without catalog entry
select c.chunk_id
from ai_chunks c
left join catalog.datasets d on c.dataset_id = d.id
where d.id is null;

HCL para tags de módulo Terraform (ilustração)

hcl
resource "aws_s3_bucket" "ai_corpus" {
  bucket = "corp-ai-corpus-prod"
  tags = {
    DataClassification = "internal"
    DataOwner          = "platform-docs"
    RetentionDays      = "365"
    AIUseCase          = "engineering_copilot"
  }
}

Etiquete objectos cloud e colecções de índice consistentemente para chargeback FinOps.

Contratos com fornecedores de modelos e SaaS

A governação de dados prontos para IA estende-se a contratos com fornecedores:

  • Especificar tipos de dados permitidos (sem categoria especial sem adenda).
  • Definir retenção e eliminação em logs de fornecedor.
  • Clarificar proibição de uso para treino ou opt-out.
  • Exigir prazos de notificação de violação compatíveis com RGPD Artigo 33.

Mantenha registo mapeando cada corpus a DPAs de fornecedor. Bloqueie jobs de ingestão se estado DPA expirado.

Corpora multilingues e multimodais

Empresas europeias servem vários idiomas. Implicações de governação:

AspectoPrática
Tags de idiomaGuardar lang em chunks para recuperação filtrada
TraduçãoDocumentar se traduções são geradas por máquina
Qualidade OCRScore de confiança; excluir scans de saúde baixa confiança
Áudio/vídeoTranscrições precisam consentimento de orador e regras de retenção

Use conjuntos golden eval por idioma; não assuma que métricas só em inglês preveem qualidade de suporte em francês.

Resolução de conflitos quando fontes discordam

Sistemas RAG quebram confiança quando wiki e CRM discordam. Implemente regras de precedência em metadados:

python
SOURCE_PRECEDENCE = {"crm": 100, "policy_pdf": 90, "wiki": 50, "chat_log": 10}

def rank_chunks(chunks: list[dict]) -> list[dict]:
    return sorted(
        chunks,
        key=lambda c: (SOURCE_PRECEDENCE.get(c["source_type"], 0), c["updated_at"]),
        reverse=True,
    )

Mostre citações na UI para utilizadores julgarem conflitos. Agentes não devem fundir silenciosamente valores financeiros contraditórios.

Observabilidade para pipelines de dados

Monitorize ingestão como qualquer serviço crítico:

MétricaLimiar de alerta (exemplo)
ingest_lag_seconds> SLA para domínio
embed_failures_rate> 1% em 15m
acl_filter_empty_resultspico vs baseline
delete_job_backlog> 1000 titulares pendentes

Dashboards pertencem à stack de observabilidade de plataforma; alertas ligados a rotação on-call de data owner para contexto de negócio.

Trabalhar com parceiros de entrega externos

Ao alargar equipas via desenvolvimento nearshore ou outsourcing, forneça:

  • Lista de datasets aprovados e fontes proibidas
  • Regras de tratamento de classificação na Definition of Done
  • Requisito de correr golden eval antes de merge

Parceiros não devem criar índices sombra em contas cloud pessoais. Todos os jobs de embed correm em infra controlada pelo inquilino com o mesmo modelo ACL que produção.

Lista de verificação de migração

Descoberta

  • Inventariar fontes propostas para RAG
  • Classificar cada fonte; negar restritos até revisão
  • Mapear base legal e retenção

Construção

  • Entradas de catálogo e jobs de linhagem
  • Scan PII no caminho de ingestão
  • Filtros ACL testados com utilizadores de amostra
  • Recuperação híbrida configurada

Operação

  • Suite golden eval em CI
  • Fluxos de eliminação e supersede testados
  • Monitorização de lag e taxas de erro
  • Runbook para documento envenenado (artigo de segurança)

Escala

Questões sobre desenho de corpus: contact ou sobre nós.

FAQ

Podemos usar réplicas de BD de produção directamente?
Evite réplicas brutas salvo se row-level security replicar perfeitamente em filtros. Prefira exportações curadas com minimização.

Um índice grande ou muitos?
Muitos índices ou namespaces por domínio/classificação simplificam ACL e raio de explosão.

Com que frequência re-embed tudo?
Apenas quando modelo de embedding muda ou estratégia de chunking muda materialmente; caso contrário actualizações incrementais.

O RGPD bloqueia APIs cloud de embedding?
Depende de DPA, região e conteúdo. Algumas equipas embed on-prem ou usam regiões UE com texto pseudonimizado.

Quem é dono de respostas erradas?
Produto gere UX; data owner gere qualidade de corpus; plataforma gere SLOs de pipeline. Documente em RACI.

Como interage a governação com agentes?
Agentes multiplicam chamadas de recuperação; corpora obsoletos ou demasiado amplos aumentam risco de injecção. Alinhe com arquitectura agentica.

Qual corpus realista para MVP?
Docs de engenharia internos ou macros de suporte aprovados: alto valor, classificação gerível, proprietários claros.

Como tratamos aquisições?
Congele ingest de sistemas adquiridos até classificação e estado DPA confirmados. Corra namespace de índice paralelo durante integração.

Clientes devem opt-in a treino IA nos seus tickets?
Default não para treino em conteúdo de cliente; linguagem contratual deve coincidir com controlos técnicos (sem fine-tune em background em dados de inquilino).

Quem paga re-embedding após mudança de modelo?
Atribua centro de custo à equipa que pediu upgrade de modelo; FinOps acompanha custo de job (guia FinOps).

Agenda de workshop de stewards (meio dia)

Use esta agenda ao arrancar dados prontos para IA num domínio:

  1. Inventariar fontes e classificar (90 minutos).
  2. Definir base legal e retenção (60 minutos).
  3. Esboçar chunking e RACI de proprietário (60 minutos).
  4. Acordar perguntas golden para eval (45 minutos).
  5. Atribuir acções para MVP de conector (15 minutos).

Facilitadores: data steward, engenheiro de plataforma, liaison de segurança. Output: charter de dataset assinado no catálogo.

Máquina de estados do ciclo de vida de documentos

Modele documentos de corpus explicitamente:

text
  DRAFT --> APPROVED --> INDEXED --> ACTIVE
                |                      |
                v                      v
            REJECTED              SUPERSEDED --> ARCHIVED --> DELETED

Transições disparadas por aprovação de steward, sucesso de ingestão, nova versão de fonte, job de retenção ou pedido de apagamento. Agentes devem recuperar apenas ACTIVE salvo modo histórico activado para UI de auditoria interna.

Automatize transições em motor de workflow; tracking manual em folha de cálculo falha acima de dez fontes.

Referência de esquema de metadados

Campos mínimos de metadados de chunk:

CampoTipoObrigatórioNotas
chunk_idstringsimIdentificador estável
dataset_idstringsimChave estrangeira catálogo
source_typeenumsimwiki, crm, pdf, etc.
source_versionstringsimID versão fornecedor
classificationenumsimpublic/internal/confidential
allowed_groupsstring[]simGrupos IAM
lawful_basisstringsimReferência RGPD Art. 6
valid_fromdatetimesimISO-8601
valid_todatetimenãonull se aberto
embedding_modelstringsimID modelo versionado
languagestringsimTag BCP 47

Valide esquema no pipeline de ingestão; rejeite chunks sem campos obrigatórios em vez de default permissivo.

Template de reporting para administração

Resumo trimestral de uma página para executivos:

  • Contagem de datasets de IA aprovados e proprietários
  • Lag médio de ingestão vs SLA
  • Tendência de score golden eval
  • Achados abertos de revisões segurança/privacidade
  • Expansões de corpus planeadas e estimativa de custo

Ligue métricas a resultados de negócio: deflexão de suporte, sucesso self-serve de engenheiros, não só contagens de embedding.

Lista de verificação de endurecimento de conectores

Antes de ligar novo sistema de origem:

  • Conta de serviço usa scopes de leitura de menor privilégio
  • Credenciais em vault, rotação em schedule
  • Caminho de rede documentado (VPC peering, private link)
  • Limites de taxa respeitam quotas API de origem
  • Sync incremental usa change tokens ou CDC, não scrape completo horário
  • Tratamento de erros dead-letters para fila ops com redacção de payload

Conectores falhados não devem indexar parcialmente chunks corruptos; use batches transaccionais por documento onde vector store suporta upsert idempotente.

Tratamento de dados de amostra para não-produção

Programadores pedem testes RAG realistas sem copiar produção. Plataforma fornece packs de corpus sintético: tickets gerados, nomes de clientes fictícios e casos extremos etiquetados incluindo fixtures de injecção indirecta para formação de segurança. Refresque packs trimestralmente; nunca refresque copiando prod sem sign-off de pipeline de anonimização.

Índices de staging devem usar namespaces e credenciais separados de produção. Jobs eval CI leem apenas packs sintéticos salvo aprovação break-glass explícita para subconjuntos mascarados.

Quando product managers pedem «copiar prod para demos melhores», redireccione para packs sintéticos mais conjunto golden curado manualmente aprovado por stewards. O ganho incremental de qualidade raramente justifica risco de privacidade e segurança de cópias bulk prod em ambientes inferiores.

Planeamento de capacidade de índice

Tamanho de índice vectorial conduz custo e latência de query. Estime:

  • Tamanho médio de chunk em tokens e dimensão de embedding.
  • Número de documentos e crescimento esperado para três anos.
  • Contagem de réplicas para alta disponibilidade.

Ilustração hipotética: Um milhão de vectores a 1536 dimensões com metadados pode ocupar da ordem de dezenas de gigabytes incluindo índices (depende de fornecedor; meça em prova de conceito). Planeie re-sharding antes de p95 de query degradar. FinOps deve ver crescimento de índice junto a custos de jobs de embed no mesmo dashboard.

Agende certificação anual de corpus: stewards re-atestam classificação, base legal e estado de emprego de proprietário para cada dataset de produção. Datasets decertificados movem para arquivo só leitura até remediados ou eliminados.

Registe resultados de certificação no log de auditoria do catálogo para pedidos de regulador e revisões internas de qualidade.

Atribua sponsor executivo aos três corpora face ao cliente principais para existirem caminhos de escalada claros quando stewards e produto discordam de scope.

Referências

A planear um projeto em Portugal?

Indique stack, prazos e equipa. Respondemos em dias úteis.