← Voltar a RAG — Arquitetura de Ingestion e Retrieval

🔮 Teoria Futura

RAG — Arquitetura de Ingestion e Retrieval

Apresentação

9. Futuro e Teoria — O Que Ainda Não Está Implementado

Este documento descreve as peças teóricas e planeadas do retrieval que sustentam a visão completa do sistema.


5.1 Reranker

Problema

O Chroma devolve por similaridade cosseno. Chunks semanticamente relevantes podem ficar em posições 6–10 e serem excluídos pelo top_k.

Solução Teórica

  1. Retrieve com top_k=20 ou 50
  2. Rerank com cross-encoder (ex.: Cohere rerank-api, cross-encoder/ms-marco-MiniLM-L-6-v2)
  3. Tomar top 5–10 para synthesis

Impacto

  • Melhora precisão (menos chunks irrelevantes no contexto)
  • Aumenta latência (chamada extra)
  • Custo adicional se API (Cohere)

Estado

Planeado em 11-IMPLEMENTATION-PHASES (Fase 2). Não implementado.


5.2 Hybrid Search (BM25 + Vector)

Problema

Vector search sozinho pode falhar em:

  • Keywords exatas (nomes, IDs)
  • Termos raros com embedding ruim
  • Queries muito curtas

Solução Teórica

  1. BM25 sobre texto bruto (chunks) → scores lexical
  2. Vector sobre embeddings → scores semânticos
  3. Fusion: Reciprocal Rank Fusion ou weighted sum

Implementação

  • BM25: Whoosh, Elasticsearch, ou rank_bm25
  • Vector: Chroma (já existe)
  • Índice invertido em paralelo ao vector store

Estado

Mencionado em 01-ARCHITECTURE ("O Que Falta"). Não implementado.


5.3 Bloco de Validação

Problema

Respostas podem ter:

  • Citações fracas (não cobrem claims)
  • Alucinação (conteúdo não sustentado no contexto)
  • Conflito entre fontes (docs vs SQL)

Solução Teórica

Gate entre pipeline e resposta final:

VerificaçãoDescrição
Cobertura de citaçõesAs afirmações na resposta têm citação?
Qualidade do retrievalScore médio dos chunks > limiar?
GroundednessNLI/entailment: resposta implica contexto?
Conflito entre fontesDocs e SQL contradizem-se?

Comportamento em falha

  • Escalar: retry com estratégia mais pesada
  • Esclarecer: pedir esclarecimento
  • Declínio seguro: mensagem controlada

Estado

Planeado em 01-ARCHITECTURE (Bloco 4). Não implementado.


5.4 Confidence Score Explícito

Problema

Hoje confiança é heurística (ex.: 0.85 se há chunks). Não é composta nem calibrada.

Solução Teórica

Score composto:

{
  "retrieval_confidence": 0.82,
  "citation_coverage": 0.75,
  "groundedness": 0.9,
  "answer_consistency": 0.85,
  "final_confidence": 0.81
}

Decisão:

  • = 0.8 → accept

  • 0.4–0.8 → retry melhorado
  • < 0.4 → escalate / clarify

Estado

Roadmap v2 em 01-ARCHITECTURE. Não implementado.


5.5 Query Rewriter

Problema

Query do utilizador pode ser ambígua, incompleta ou mal formulada para retrieval.

Solução Teórica

Entre Analyzer e Router:

  • Normalizar: typos, abreviações
  • Expandir: "policy despesas" → "expense policy reimbursement rules NovaOps"
  • Desambiguar: contexto da conversa

Estado

Roadmap v2. Não implementado.


5.6 Cost & Latency Budget no Router

Problema

Router escolhe só por complexidade e tipo. Não considera orçamento de latência ou custo.

Solução Teórica

{
  "latency_budget_ms": 1500,
  "cost_budget": "low"
}
  • Query complexa + low latency → enriched_rag light (menos sub-queries)
  • Query complexa + high budget → multi_backend

Estado

Roadmap v2. Não implementado.


5.7 Retry Inteligente (antes de escalar)

Problema

Falha → escalate imediato pode ser custoso e desnecessário.

Solução Teórica

  1. Query rewrite e retry
  2. Aumentar top_k
  3. Hybrid (BM25 + vector) se ainda só vector
  4. Só escalar para estratégia mais pesada se retry falhar

Estado

Planeado em 06-FALLBACK-STRATEGY. Lógica parcial; retry automático não implementado.


5.8 Semantic Chunking por Documento

Problema

Chunking fixo (600 chars) ignora estrutura do documento (headers, secções).

Solução Teórica

  • chunk_plan.json por documento ou tipo
  • Quebrar por ##, parágrafos, lista de items
  • Manter overlap em zonas críticas

Estado

Dados NovaOps têm chunk_plan.json e document_manifest.json. Ingestion planeia isso. Retrieval atual não usa.


5.9 Metadata Filters no Retrieval

Problema

Query sobre "expenses" poderia filtrar docs com related_entities que incluam team_finance ou pol_expense.

Solução Teórica

  • document_manifest.json com document_type, related_entities
  • Chroma where filter na query
  • Reduz ruído quando muitos docs

Estado

13-DATA-GUIDE menciona. Não implementado no retriever.


5.10 Feedback Loop

Problema

Sistema não aprende com feedback do utilizador (thumbs, reformulações, cliques).

Solução Teórica

Resposta Final → Feedback do Utilizador → Armazém de Avaliação
    → Router tuning / Retrieval tuning

Permite melhoria contínua com dados reais.

Estado

Roadmap v2. Não implementado.


5.11 Matriz Resumo

ComponenteTeoriaEstado
RerankerCross-encoder pós-retrieval
Hybrid searchBM25 + vector fusion
ValidaçãoCitation, groundedness, conflict
Confidence scoreComposto, thresholds
Query rewriterNormalize, expand, disambiguate
Latency/cost budgetNo router
Retry inteligenteRewrite, top_k, hybridParcial
Semantic chunkingPor doc/type
Metadata filtersdocument_type, related_entities
Freshness filtersversion, valid_toParcial (SQL)
Feedback loopLearning

Zona de prática

Sem perguntas. Clica em Editar para adicionar.