Pular para conteúdo

Filosofia de Design

O arandu é projetado em torno de duas bases: princípios de engenharia de software que o tornam confiável e extensível, e modelos de ciência cognitiva que informam sua arquitetura. Esta página cobre ambos - as decisões de engenharia e os paralelos com neurociência que as inspiraram.


Princípios de Engenharia

Injeção de Dependência Baseada em Protocol

O SDK usa typing.Protocol do Python para todas as dependências externas (LLM, embeddings). Sem herança necessária - apenas implemente as assinaturas dos métodos:

@runtime_checkable
class LLMProvider(Protocol):
    async def complete(
        self,
        messages: list[dict],
        temperature: float = 0,
        response_format: dict | None = None,
        max_tokens: int | None = None,
    ) -> LLMResult: ...

Por quê: Vendor lock-in mata adoção. Ao usar tipagem estrutural (duck typing), qualquer LLM provider funciona sem herdar de uma classe base. O provider OpenAI está incluído por conveniência, mas você pode trocar por Anthropic, modelos locais ou endpoints customizados sem nenhuma mudança no SDK.

Conteudo Gerado em Ingles

Todo conteudo gerado por LLM -- perfis de entidade, summaries, resumos de cluster, meta-observations e diretivas procedurais -- e produzido em ingles, independente da lingua da conversa do usuario.

Por que: Consistencia no retrieval. Quando perfis e summaries estao numa lingua unica, a comparacao semantica via embeddings e mais precisa (sem mistura de idiomas no mesmo embedding space). Alem disso, LLMs tendem a produzir output mais consistente e preciso em ingles.

Fatos permanecem na lingua original: Os fatos (fact_text) sao extraidos na lingua em que o usuario escreveu. Se a conversa e em portugues, os fatos ficam em portugues. Apenas o conteudo sintetizado (perfis, summaries, padroes) e normalizado para ingles.

Fail-Safe por Padrao

Todo estagio do pipeline tem comportamento de fallback:

Estágio Falha Fallback
Extraction Timeout/erro do LLM Retorna extração vazia; evento ainda é registrado
Entity Resolution Fallback LLM falha Cria nova entidade (prefere duplicatas a dados perdidos)
Reconciliation Erro do LLM Default para ADD
Reranking Reranker falha Mantém ranking original
Background jobs Qualquer job falha Outros jobs continuam independentemente

Por quê: Em um agente de IA em produção, a memória é um sistema de suporte - nunca deve crashar o fluxo principal. Uma resposta degradada (faltando algum contexto) é sempre melhor que um erro.

Composição Sobre Herança

O SDK não tem classes base abstratas, nem hierarquias profundas de classes. É construído com módulos pequenos e focados compostos em pipelines:

  • write/extract.pywrite/entity_resolution.pywrite/reconcile.pywrite/upsert.py
  • read/retrieval_agent.pyread/retrieval.pyread/reranker.py

Por quê: Cada módulo tem uma única responsabilidade com inputs e outputs claros. Você pode entender, testar e substituir qualquer módulo independentemente. Segue a filosofia Unix: faça uma coisa bem feita.

Segurança Transacional com Savepoints

Operações de escrita usam savepoints do banco de dados (session.begin_nested()) para que uma falha em um fato não aborte o batch inteiro:

async with session.begin_nested():
    # Se isso falhar, apenas este savepoint faz rollback
    session.add(new_fact)
    await session.flush()

Por quê: Em um pipeline que processa múltiplos fatos por mensagem, transações atômicas tudo-ou-nada são frágeis demais. Savepoints dão atomicidade por fato mantendo a transação externa viva.


Paralelos com Neurociência

A arquitetura do arandu se inspira em modelos estabelecidos de neurociência cognitiva. Cada paralelo abaixo mapeia um componente do sistema para seu correspondente biológico.

Codificação: O Write Pipeline

Sistema: Message → Alias Lookup → Pré-retrieval → Extração Informada → Resolve → Upsert

Cérebro: Input sensorial → Resposta de orientação → Ativação de esquemas → Codificação orientada por esquema → Associação → Armazenamento

Quando você vivencia algo, seu cérebro não grava um vídeo bruto. Ele codifica uma representação seletiva - extraindo características salientes, vinculando-as ao conhecimento existente, e armazenando o resultado de forma que possa ser recuperado depois. O write pipeline faz o mesmo:

  • Alias lookup + Pré-retrieval é a resposta de orientação: antes de codificar informação nova, o cérebro primeiro verifica "eu já sei algo sobre isso?" -- ativando esquemas existentes que vão guiar a codificação. Da mesma forma, o pipeline carrega perfis e fatos existentes antes de chamar o LLM.
  • Extração informada é a codificação orientada por esquema: o cérebro humano não codifica informação no vácuo -- novos estímulos são processados no contexto de esquemas mentais existentes (Bartlett, 1932). O LLM recebe contexto existente e decide na fonte o que é genuinamente novo (NEW) vs. o que atualiza conhecimento existente (UPDATE). Isso reduz drasticamente a redundância.
  • Entity resolution é a associação: vincular novas menções a traços de memória existentes
  • Upsert é o armazenamento: comprometer o traço processado na memória de longo prazo

Da extração cega para a extração informada

Na versão anterior, o pipeline usava extração cega (sem contexto) seguida de reconciliação separada. Isso espelhava um modelo onde codificação e reconsolidação são processos separados. A extração informada unifica esses dois processos, assim como a neurociência moderna reconhece que codificação e reconsolidação compartilham circuitos hipocampais -- a codificação de nova informação é inerentemente influenciada por memórias existentes.

Memória Associativa: Entity Resolution

Sistema: Resolução em 3 fases (exact → fuzzy → LLM)

Cérebro: Pattern completion em circuitos hipocampais-neocorticais

O cérebro não armazena memórias como registros isolados - armazena como padrões de ativação em redes neurais. Quando você encontra uma pista parcial ("Carol"), seu cérebro completa o padrão para recuperar a representação completa ("Carolina, minha colega do trabalho").

A entity resolution espelha esse processo:

  • Exact match = recuperação direta (associações fortes e bem estabelecidas)
  • Fuzzy match = pattern completion (pista parcial ativa o padrão existente mais similar)
  • LLM fallback = recall deliberado (esforço consciente para desambiguar quando a recuperação automática falha)

O fuzzy threshold (0.85) e a faixa de fallback LLM (0.50-0.85) modelam o gradiente de confiança do cérebro: matches fortes são automáticos, matches ambíguos requerem deliberação.

Reconsolidação: Reconciliação de Fatos

Sistema: Decisões ADD / UPDATE / NOOP / DELETE

Cérebro: Reconsolidação de memória (Nader, Schiller, & LeDoux, 2000)

Quando uma memória é recuperada, ela entra em um estado lábil onde pode ser modificada. Isso é a reconsolidação - o mecanismo do cérebro para atualizar memórias com nova informação preservando o traço original.

O estágio de reconciliação modela esse processo:

  • NOOP = recuperação sem modificação (memória confirmada, last_confirmed_at atualizado)
  • UPDATE = reconsolidação (memória antiga substituída, nova versão criada com link de proveniência via supersedes_fact_id)
  • ADD = nova codificação (sem memória existente para reconsolidar)
  • DELETE = esquecimento ativo (retração explícita, modelado definindo invalidated_at)

O sistema de versionamento de fatos (valid_from, valid_to, supersedes_fact_id) preserva o histórico completo - assim como o cérebro retém traços de memórias originais mesmo após a reconsolidação.

Spreading Activation: Graph Retrieval

Sistema: Traversal BFS 2-hop com fator de decay

Cérebro: Spreading activation em redes semânticas (Collins & Loftus, 1975)

No modelo de Collins e Loftus, quando um conceito é ativado (ex: "caminhão de bombeiros"), a ativação se espalha ao longo de links associativos para conceitos relacionados ("vermelho", "caminhão", "emergência"), com a força diminuindo conforme a distância aumenta.

O graph retrieval implementa isso diretamente:

  • Entidades semente da query ativam os nós iniciais
  • Hop 1 ativa vizinhos diretos (sem pruning - todas as conexões disparam)
  • Hop 2 ativa conexões de segundo grau (com pruning por min_edge_strength)
  • Fator de decay (0.50 por hop) modela a atenuação da ativação ao longo da distância
  • Edge strength modela a força associativa entre conceitos (reforçada por co-menção repetida)

O query_bonus (1.5x) para entidades cujos nomes aparecem na query modela priming top-down - quando você menciona explicitamente uma entidade, suas conexões são mais fortemente ativadas.

Sleep-Time Compute: Processamento em Background

Sistema: Clustering, consolidation, importance scoring, summary refresh

Cérebro: Consolidação de memória durante o sono (Diekelmann & Born, 2010)

Durante o sono, o cérebro realiza manutenção crítica:

  1. Replay hipocampal - Experiências recentes são reexecutadas em forma comprimida, transferindo-as do armazenamento de curto prazo (hipocampal) para longo prazo (neocortical)
  2. Homeostase sináptica - Sinapses fortemente ativadas são mantidas enquanto fracamente ativadas são podadas (Tononi & Cirelli)
  3. Detecção de padrões - O neocórtex detecta regularidades estatísticas entre episódios
  4. Extração de essência - Memórias episódicas detalhadas são comprimidas em conhecimento semântico

Os background jobs mapeiam para esses processos:

Processo cerebral Job do sistema Mecanismo
Replay hipocampal Consolidation Revisa eventos recentes, detecta padrões e contradições
Homeostase sináptica Importance scoring Pontua entidades por densidade + recência + frequência de retrieval + conectividade
Detecção de padrões Community detection Encontra grupos de entidades relacionadas via análise de grafos
Extração de essência Summary refresh + Memify Gera resumos comprimidos a partir de fatos detalhados

Curva de Esquecimento: Vitalidade e Recência

Sistema: Decay de recência, scoring de vitalidade, pruning baseado em importância

Cérebro: Curva de esquecimento de Ebbinghaus (1885)

Hermann Ebbinghaus demonstrou que a retenção de memória decai exponencialmente ao longo do tempo, mas cada recuperação (prática) reseta a curva e desacelera o decay futuro. Este é o efeito de espaçamento - o achado mais robusto na pesquisa sobre memória.

O arandu modela isso com:

  • Decay de recência - Decay exponencial com half-life configurável (recency_half_life_days). Fatos recentes pontuam mais alto. Isso modela a curva básica de esquecimento.
  • Reforço por retrieval - Cada decisão NOOP (fato confirmado durante write) atualiza last_confirmed_at, efetivamente "praticando" o fato e resetando sua curva de decay.
  • Scoring de vitalidade - Combina recência, recência de confirmação (last_confirmed_at) e importância para determinar quão "vivo" um fato está. Fatos de baixa vitalidade são candidatos a consolidation ou pruning.

Atenção Seletiva: Reranking

Sistema: LLM reranker em candidatos de retrieval

Cérebro: Atenção seletiva (Broadbent, 1958; Treisman, 1964)

O cérebro não processa todo input sensorial igualmente - a atenção seletiva filtra e prioriza informações com base nos objetivos atuais. O efeito cocktail party demonstra isso: você consegue focar em uma conversa em um ambiente barulhento filtrando sinais irrelevantes.

O reranker age como o filtro de atenção:

  • Sinais brutos de retrieval (semantic, keyword, graph) produzem um conjunto amplo de candidatos - como o input sensorial completo
  • O reranker avalia cada candidato contra a intenção da query - como a seleção atencional
  • Apenas os fatos mais relevantes passam para o contexto - como o sinal atendido

É por isso que o reranker usa um LLM (não apenas heurísticas de scoring): a atenção é direcionada a objetivos e requer compreender o significado tanto da query quanto dos candidatos.

Working Memory: Orçamento de Contexto

Sistema: Orçamento de tokens com tiers hot/warm/cold

Cérebro: Working memory (Baddeley & Hitch, 1974; Cowan, 2001)

A working memory tem um limite de capacidade estrito -- Cowan estima que 4 mais ou menos 1 itens podem ser mantidos no foco de atencao simultaneamente. O orcamento de contexto modela essa restricao:

  • Orcamento de tokens = limite de capacidade (voce nao pode enviar contexto infinito para um LLM)
  • Known facts = foco de atencao (fatos mais relevantes, ordenados por score)
  • Observed patterns = conhecimento de alto nivel (padroes, tendencias, insights)
  • Relevant conversations = contexto episodico de suporte (eventos recentes)

Essa abordagem garante que o LLM receba um contexto focado e priorizado, em vez de um despejo ruidoso de tudo que o sistema sabe.


Tabela Resumo

Componente do Sistema Modelo de Neurociencia Referencia
Write Pipeline Codificacao orientada por esquema Bartlett (1932)
Extracao Informada Resposta de orientacao + codificacao contextual --
Perfis de Entidade Esquemas mentais / representacoes consolidadas --
Entity Resolution Memória associativa / Pattern completion --
Reconciliation Reconsolidação Nader, Schiller, & LeDoux (2000)
Graph Retrieval Spreading activation Collins & Loftus (1975)
Decay de Recência Curva de esquecimento Ebbinghaus (1885)
Background Jobs Consolidação durante o sono Diekelmann & Born (2010)
Importance Scoring Homeostase sináptica Tononi & Cirelli (SHY)
Summary Refresh Formação de memória de essência --
Reranking Atenção seletiva Broadbent (1958)
Orçamento de Contexto Capacidade da working memory Baddeley & Hitch (1974); Cowan (2001)
Vitalidade/Reforço Efeito de espaçamento Ebbinghaus (1885)

Estes são analogias, não afirmações

Os paralelos acima são inspirações arquiteturais, não afirmações científicas. O arandu é um sistema de engenharia, não um modelo cognitivo. O cérebro é vastamente mais complexo - esses paralelos destacam as intuições de design, não os mecanismos biológicos.