AI System Design • material de estudo

Entenda o sistema.
Não decore as caixas.

A PredictX é um estudo de caso fictício de uma plataforma de prediction market com software transacional, streaming, modelos probabilísticos, LLM, experimentação e feedback loops. O objetivo é entender por que cada decisão existe.

1MDAU hipotéticos
25k/strades no pico
100k/seventos no backbone
<250msAI prediction p95
01 / O caso

Um mercado já prevê. Então por que adicionar ML?

Em um prediction market, o preço pode ser interpretado como probabilidade implícita. A hipótese da PredictX é que sinais externos + comportamento do mercado + ML podem produzir uma segunda estimativa útil. Isso precisa ser provado, não assumido.

Exemplo

Will humans land on Mars before 2030?

Market 31%   AI ?

Hipótese

Market Price é um sinal e um baseline. Não é automaticamente ground truth.

Fontes de informação

O mundo vira dado

  • Trades, volume, liquidez e volatilidade
  • Notícias e documentos
  • Social signals e velocidade de informação
  • APIs externas e dados on-chain
  • Comportamento histórico e resolução de mercados
02 / Requisitos

As decisões começam aqui.

Sem requisitos e escala, escolher Kafka, Redis ou um Transformer vira preferência pessoal. Aqui cada tecnologia deve responder a um problema concreto.

Funcionais
  • Autenticar usuários
  • Criar, consultar e resolver mercados
  • Comprar e vender YES / NO
  • Consultar saldo, posições e histórico
  • Atualizar mercados em tempo real
  • Gerar AI probability
  • Explicar mudanças com evidências
  • Detectar anomalias e manipulação
Não funcionais
  • Trading 99,99% disponível
  • Trade API p95 < 150 ms
  • AI inference p95 < 250 ms
  • Consistência forte em dinheiro/posições
  • Consistência eventual em IA/analytics
  • Idempotência e durabilidade
  • Escalabilidade horizontal
  • Auditabilidade e observabilidade
03 / System Design

Arquitetura em camadas, com caminhos separados.

Clique em qualquer componente. O painel inferior explica sua responsabilidade, por que ele foi escolhido e o principal trade-off.

PredictX — visão completaclique nas caixas • role horizontalmente em telas menores
Como ler o desenho:

O caminho de trading é crítico e não depende do LLM. Kafka distribui eventos para processamento assíncrono. O Online Feature Store alimenta inferência de baixa latência; o Offline Store alimenta treinamento histórico. O caminho de Retrieval/RAG é separado: documentos viram chunks, embeddings e evidências recuperadas antes de chegar ao LLM. Se esse caminho falhar, trading e AI Probability continuam disponíveis. Model Registry controla o ciclo de vida e feedback/observabilidade fecham o loop.

04 / Decisões

Problema → escolha → motivo → trade-off.

System Design não é uma lista de tecnologias. Uma boa decisão explica o que estamos protegendo e qual custo aceitamos.

05 / Fluxos

O mesmo sistema possui caminhos diferentes.

Use os botões para acompanhar uma requisição de trade, uma inferência online, um treinamento offline e o feedback que retorna ao sistema.

CLIENT ↓ POST /trades + Idempotency-Key API GATEWAY ↓ auth + rate limit TRADING SERVICE ↓ transaction POSTGRESQL ← balance / order / position / outbox ↓ commit OUTBOX PUBLISHER → KAFKA ↓ Market updates • Risk pipeline • Analytics • Feature pipeline ↓ WEBSOCKET → CLIENTS
Market event / request ↓ ONLINE FEATURE STORE ← features atuais, baixa latência ↓ MODEL GATEWAY ├─ Champion ├─ Shadow / Challenger └─ Fallback ↓ Ensemble + Calibration + Guardrails ↓ AI Probability ↓ API / WebSocket LLM + RAG gera explicação fora do critical path.
News / Documents / External Content ↓ DOCUMENT PROCESSOR ↓ clean + chunk + metadata EMBEDDING MODEL ↓ vectors POSTGRESQL + PGVECTOR ↓ Query → embedding ↓ HYBRID SEARCH ├─ Vector similarity (semantic) └─ Lexical / keyword search (exact terms) ↓ RERANKER ↓ Top-K evidence LLM + RAG ↓ Explanation + sources IMPORTANTE: este fluxo não bloqueia Trading nem AI Probability.
Kafka / Historical Events ↓ Data Lake / Warehouse ↓ POINT-IN-TIME JOIN ↓ Training Dataset ↓ XGBoost • Transformer • Time-Series ↓ Offline Evaluation ↓ MODEL REGISTRY ↓ Candidate → Shadow → Canary → Champion
AI Prediction ↓ User sees prediction ↓ User behavior / trades ↓ Market state changes ↓ Kafka ↓ New features + labels + evaluation data ↓ Drift / Calibration / Performance ↓ Candidate training RISCO: o modelo pode influenciar os próprios dados futuros.
06 / ML

Não existe obrigação de usar o modelo mais sofisticado.

O modelo deve corresponder ao tipo de dado, à restrição de latência e ao valor incremental que entrega.

XGBoost

Structured signals

Volume, liquidez, volatilidade, concentração, time-to-resolution. Excelente baseline para dados tabulares, rápido e barato para serving.

Transformer

Unstructured signals

Notícias, documentos, classificação, event extraction e embeddings. Mais expressivo para texto, porém potencialmente mais caro.

Time-Series

Temporal behavior

Dinâmica temporal de preços, volatilidade e sinais históricos. O valor depende da estrutura temporal do problema.

Ensemble:

Combinar modelos pode melhorar robustez. Média simples é um baseline; pesos aprendidos e stacking são alternativas. Divergência entre modelos pode virar uma feature de uncertainty.

07 / Probabilidade

Accuracy não responde se 70% significa 70%.

Quando o produto mostra probabilidades, qualidade não é apenas acertar YES/NO. A confiança declarada precisa fazer sentido.

Calibration

Entre muitos eventos previstos em 70%, aproximadamente 70% deveriam ocorrer. Um modelo pode rankear bem e ainda ser overconfident.

Brier Score

Para evento binário: (prediction − outcome)². Penaliza previsões probabilísticas ruins. Menor é melhor.

Log Loss

Também avalia probabilidades e pune fortemente previsões extremamente confiantes que estavam erradas.

INCIDENTE 01

Uma whale move o mercado de 31% para 46%.

Um trade de US$ 2 milhões pode representar informação genuína, manipulação ou apenas um participante assumindo risco. O sistema precisa reagir sem tratar “trade grande” como sinônimo de fraude.

Decisão: Kafka → Flink → features de risco (trade_size, price_impact, velocity, account_age, concentration, wallet_relationships) → Anomaly Detection → Risk Score. Casos de alto impacto podem ir para Human-in-the-Loop. Isolation Forest é uma opção unsupervised; graph features ajudam a detectar relações entre contas.
08 / Retrieval & Vector Search

RAG não começa no LLM. Começa na recuperação.

Se temos milhares ou milhões de notícias, não enviamos todo o corpus ao modelo. Primeiro recuperamos um pequeno conjunto de evidências relevantes e só então geramos a explicação.

01

Chunking + Metadata

Documentos são limpos e divididos em trechos menores. Cada chunk preserva metadata como source, published_at, market_id, category e URL de origem.

02

Embeddings

Um embedding model transforma texto em vetor. Conteúdos semanticamente próximos tendem a ocupar regiões próximas do espaço vetorial.

03

Vector Store

Os vetores são persistidos com seus metadados. Na PredictX começamos com PostgreSQL + pgvector para reduzir complexidade operacional.

Document "Space program completes a major test..." ↓ Chunk + Metadata { source, published_at, market_id, category } ↓ Embedding Model ↓ [0.183, -0.421, 0.029, ...] ↓ PostgreSQL + pgvector
Busca híbrida

Semântica + termos exatos.

Vector Search entende significado; lexical search encontra nomes, siglas, datas e palavras específicas. Para notícias e eventos, os dois sinais são úteis.

Vector Search

Encontra documentos semanticamente próximos mesmo quando a query e o texto não usam as mesmas palavras. Normalmente usa cosine similarity, dot product ou distância equivalente.

Lexical Search

É forte quando “NASA”, “Artemis III”, “2028” ou “Starship” precisam aparecer explicitamente. BM25 é um algoritmo clássico para esse tipo de ranking textual.

User / System Query ↓ ┌──────┴──────┐ ↓ ↓ Vector Search Lexical Search semantic exact terms ↓ ↓ └──────┬──────┘ ↓ Candidate Set ↓ Reranker ↓ Top-K Evidence ↓ LLM ↓ Explanation + citations
Por que pgvector primeiro?

A PredictX já utiliza PostgreSQL. pgvector permite começar com similarity search e metadata filtering sem introduzir imediatamente outro banco. Se o corpus, QPS, filtros ou necessidades de indexação crescerem muito, podemos avaliar um mecanismo especializado. A decisão é evolutiva, não dogmática.

Critical path

Trading + Probability

Trading, Market Service e a previsão probabilística principal continuam funcionando mesmo se o retrieval estiver indisponível.

Graceful degradation

Explanation temporariamente indisponível

Se pgvector, reranker ou LLM falharem, podemos ocultar a explicação ou mostrar uma versão anterior. Não derrubamos a operação financeira por causa de uma feature explicativa.

09 / Production ML

v18 é mais preciso. Ainda assim pode não vencer.

Compare qualidade, calibração, latência de cauda e custo. Produção otimiza um sistema inteiro, não uma única métrica.

Métricav17 Championv18 ChallengerLeitura
Brier Score.184.171v18 melhor
Calibration Error.061.043v18 melhor
p9532 ms71 msv17 mais rápido
p9961 ms287 msv18 pior na cauda
Custo / 1MUS$40US$190v18 ~4,75× mais caro
Shadow

Observar sem afetar

O candidato recebe tráfego real, gera prediction e logs, mas o usuário continua recebendo o Champion.

Canary

Risco controlado

Uma pequena porcentagem real já recebe o novo modelo. Aumentamos o tráfego se os guardrails permanecerem saudáveis.

Rollback

Voltar rápido

Se p99, erros, custo ou qualidade violarem limites, o Model Gateway volta para uma versão segura.

10 / Experimentação

A/B testa. Bandit aprende enquanto aloca.

Não são substitutos perfeitos. A/B favorece comparação controlada; bandits tentam maximizar reward acumulado enquanto exploram alternativas.

Multi-Armed Bandit

Início A 33% | B 33% | C 34% Depois A 10% | B 20% | C 70% Exploration → aprender Exploitation → aproveitar

ε-greedy é simples; UCB adiciona bônus por incerteza; Thompson Sampling usa distribuições probabilísticas para balancear exploração e exploração do melhor conhecido.

Contextual Bandit

context = { category, liquidity, volatility, news_velocity, time_to_resolution, uncertainty } choose_model(context)

A pergunta muda de “qual modelo é melhor?” para “qual modelo é melhor neste contexto?”.

INCIDENTE 02

A IA prevê 73%. Os usuários acreditam. O mercado muda.

Market Price é uma feature. A previsão altera o comportamento, o comportamento altera o preço e o preço entra novamente no modelo. Agora o sistema pode estar medindo parte do efeito que ele mesmo causou.

Feedback Loop: output do modelo altera o ambiente que produz seus próximos inputs. Isso exige pensar em causal inference, counterfactuals e experimentação. Só observamos o resultado da ação tomada; o resultado da alternativa é o counterfactual. IPS e Doubly Robust são técnicas usadas em off-policy evaluation para estimar políticas alternativas a partir de dados históricos.
11 / Drift & observability

Drift é um alerta. Não um botão de retrain.

Um pipeline pode estar 100% “verde” tecnicamente e ainda produzir features semanticamente erradas. Production ML observa software, dados e modelo.

Data Drift

P(X) mudou. Ex.: trade médio passou de US$120 para US$810. Isso não prova degradação.

Concept Drift

P(Y|X) mudou. Uma feature que antes era preditiva deixou de representar a mesma relação com o target.

Prediction Drift

A distribuição dos outputs mudou. Pode ser mudança real, pipeline quebrado ou comportamento diferente.

Fluxo seguro:

Detectar → investigar → medir impacto → identificar causa → treinar Candidate → avaliar → Shadow → Canary → promover. Continuous Training não implica Continuous Deployment.

12 / Conceitos essenciais

O que costuma aparecer escondido nas caixas.

Abra os tópicos para revisar problemas que não aparecem claramente no diagrama, mas quebram sistemas reais.

13 / Checkpoint

Você entendeu as decisões?

O objetivo não é decorar nomes. Cada pergunta testa se você consegue escolher uma solução a partir do problema.

14 / Glossário

Referência rápida.

Use como revisão antes de entrevistas de System Design ou Production ML.

A ideia para levar

O modelo é uma parte do sistema. O sistema não é o modelo.

Dados alimentam modelos. Modelos geram decisões. Decisões alteram usuários e o mundo. O mundo produz novos dados. Projetar AI Systems é projetar esse ciclo inteiro — incluindo software, dados, infraestrutura, risco, custo e comportamento.

DATA → FEATURES → MODEL → PREDICTION → DECISION → USER → WORLD → DATA