Um desenho autoral de memória relacional da fundadora da Kuaapy: separar assuntos dentro de uma conversa, reconectá-los entre conversas e recuperar uma área de relações ativadas.

Uma conversa pode conter muitas conversas. Estamos discutindo memória, passamos pelo Dreamer — o componente de consolidação da memória —, voltamos à arquitetura de um runtime e, algumas horas depois, retomamos o Dreamer por outro caminho. A divisão em sessões registra quando cada mensagem entrou. Ela não explica, sozinha, quais trechos desenvolvem o mesmo assunto nem o que mudou entre eles.
O problema aparece quando o agente precisa continuar o trabalho. Recuperar um parágrafo que contém a palavra certa pode ajudar, mas ainda falta reconstruir o contexto: qual Dreamer era aquele, com que finalidade foi proposto, quais decisões dependiam dele e o que foi corrigido depois.
O desenho apresentado aqui parte dessa dificuldade. Sua unidade de recuperação é uma área de relações ativadas. Uma região do grafo reúne conceitos, trechos e vínculos que, em conjunto, sustentam uma resposta. A ideia de pensar em área organiza a arquitetura; não significa que um mapa desenhado na tela reproduza o cérebro humano.
Este artigo documenta o mecanismo concebido na pesquisa da Kuaapy, com esclarecimentos de sua autora e referências para situá-lo. Os documentos incluem propostas, formalizações e exemplos de código. Eles ajudam a explicar o desenho, mas não equivalem a uma validação independente de todo o sistema.
O caminho da memória até a resposta
A camada de memória trabalha fora do modelo principal. Quando é acionada, recupera uma área pertinente à pergunta e prepara o conteúdo que será apresentado ao modelo. Esse conteúdo entra sempre antes da mensagem do usuário, antes de o Transformer processar a entrada para responder.
A posição é fixa; a frequência de acionamento é configurável. Uma camada separada de interceptação recebe a mensagem e pode acionar a memória conforme a política adotada. Não é necessário fazer uma nova recuperação em toda mensagem. A interceptação pertence à arquitetura que envolve a memória e não será detalhada neste artigo.
Mensagem recebida
↓
Camada de interceptação → acionamento conforme a política configurada
↓ quando a memória é acionada
Seleção de uma área → reconstrução do contexto de memória
↓
Entrada do modelo: [contexto de memória] [mensagem do usuário]
↓
Processamento pelo Transformer → respostaPara entender o conjunto, vale separar três operações: formar as relações a partir das conversas, recuperar uma área para a resposta e consolidar a memória durante o sono. Cada operação tem um papel e um momento próprios.
Uma conversa, vários contextos
A formação da memória começa pela separação dos assuntos. Na divisão descrita pela autora, o Ministral trabalha no idioma da conversa: uma conversa em português pode ser segmentada em contextos em português. O recorte precisa preservar a questão desenvolvida e reconhecer quando uma frase depende de um trecho anterior.
Pense em uma sessão que mistura consolidação de memória, treinamento de modelos e publicação de um artigo. O Dreamer pode aparecer no primeiro assunto como componente da arquitetura e no terceiro como tema de uma explicação. Esses trechos estão ligados, embora tenham funções diferentes na conversa.
Um trecho pode participar de mais de um contexto. Uma decisão sobre treinamento pode alterar a viabilidade do componente de consolidação; separar os assuntos não deve apagar essa dependência.
O desenho adota o inglês como idioma canônico da representação textual guardada na memória. A intenção é traduzir e normalizar o conteúdo antes da etapa de reconhecimento e ligação de entidades, preservando seu sentido. Essa escolha interna não exige que a pessoa converse em inglês.
Os componentes indicados pela autora são:
• Ministral 3 3B Instruct: separação da conversa em contextos ou assuntos. O checkpoint é mistralai/Ministral-3-3B-Instruct-2512 [1], escolhido a partir de testes locais relatados pela autora.
• BERT-NER: reconhecimento de entidades nomeadas, com dslim/bert-large-NER [2]. Esse checkpoint foi ajustado sobre o CoNLL-2003 em inglês e reconhece pessoas, organizações, locais e uma categoria de outras entidades.
• BERT multilíngue (mBERT): representações contextuais no processamento das menções, com google-bert/bert-base-multilingual-uncased [3]. A variante indicada é bidirecional, foi pré-treinada em 102 idiomas e não distingue maiúsculas de minúsculas.
Na explicação da autora, a etapa com mBERT também participa da normalização para inglês e da reconstrução de texto coerente. O mecanismo de tradução e de saída associado a esse componente ainda precisa ser explicitado nesta documentação: o checkpoint base fornece representações e predição de tokens mascarados, não uma interface pronta de tradução ou de geração autoregressiva de conversa. Aqui estão separados o papel pretendido no pipeline e a capacidade documentada do modelo base. BERT [4], documentação original do BERT multilíngue [5].
Reconhecer uma menção e decidir a qual entidade ela pertence são operações diferentes. “Dreamer” pode nomear este componente, outro projeto ou uma metáfora. A ligação entre contextos precisa considerar os trechos e os candidatos, além do rótulo. O NER inglês não se torna automaticamente multilíngue por trabalhar ao lado do mBERT, nem sua lista de categorias garante cobertura de todo conceito técnico.
O trabalho pesado está nas ligações
O grafo não deve guardar apenas que duas palavras apareceram perto uma da outra. Ele precisa representar relações que mantenham o significado do material: um componente executa uma função, uma decisão depende de uma restrição, uma correção altera uma proposta anterior.
Um exemplo didático, sem representar uma execução medida:
Trecho da conversa A ──descreve──────────> Dreamer
Trecho da conversa B ──corrige função───> Dreamer
Dreamer ───────────────atua sobre───────> Consolidação
Consolidação ─────────preserva─────────> Histórico de relações
Correção ─────────────limita───────────> Proposta anteriorA área relevante para uma pergunta sobre a função do Dreamer pode atravessar os dois trechos e suas relações. Selecionar somente o nome do componente deixaria de fora a correção. Selecionar somente a frase mais recente poderia perder o que ela estava corrigindo.
As setas do exemplo representam o sentido das relações. Isso não determina, sozinho, a direção da recuperação: os trechos apontam para Dreamer, mas uma consulta iniciada em Dreamer precisa poder chegar aos trechos. A regra de travessia deve explicitar como entradas, saídas ou relações inversas participam desse acesso. Essa decisão ainda não está fechada na documentação apresentada.
Também é necessário distinguir relevância de verdade. Uma afirmação conflitante pode ser recuperada justamente porque explica uma divergência; estar na área ativada não significa que o sistema deva adotá-la como correta.
Esse é um dos motivos para a reconstrução das ligações ser uma parte exigente do desenho. A cada entrada, o sistema precisa distinguir conhecimento novo, reafirmação, mudança e conflito. Uma transação estruturalmente válida ainda pode gravar uma relação semanticamente errada.
Os materiais fornecidos descrevem um fluxo de extração de sujeito, predicado e objeto, validação de esquema e persistência em SQLite. Essa separação é útil: a saída do modelo deve cumprir um contrato antes de ser gravada. Entretanto, validar tipos e campos não comprova que o predicado foi interpretado corretamente. A fidelidade ao trecho de origem continua sendo uma verificação própria.
Para tornar essa fidelidade examinável, uma ligação precisa ser acompanhada de sua origem: qual trecho a sustenta, em que contexto e sob qual versão da interpretação. A proveniência é o que permite voltar da abstração ao material que lhe deu sentido.
Pensar em área
Embeddings podem ajudar a identificar candidatos, e arrays numéricos podem representar a ativação. A unidade de recuperação proposta, porém, é uma região de relações: sua organização precisa permanecer visível no cálculo.
O mecanismo descrito pela autora trabalha com áreas do grafo: conjuntos relacionados de nós e arestas que recebem ativação a partir dos focos da pergunta. O interesse está na organização e na convergência dessa ativação dentro da região.
Imagine uma pergunta com três focos: Dreamer, preservação de histórico e correção de relações. Uma região pode receber sinais dos três focos porque contém a discussão sobre consolidação. Outra pode receber muita ativação de apenas um termo genérico, presente em grande parte dos documentos. O objetivo é distinguir a região que articula a questão daquela que apenas possui muitas conexões.
Uma área não precisa ser um círculo num mapa de embeddings. A visualização pode ajudar a inspecionar a topologia, mas distância entre pontos na tela não define, por si só, relevância. Importam os caminhos, os tipos de relação, as fontes e a contribuição dos diferentes focos da consulta.
Também é necessário distinguir a área escolhida de seu representante. Um centro de convergência pode servir como referência para a região; a resposta ainda depende das relações ao redor dele. Reduzir tudo ao nó de maior pico descartaria parte da estrutura que o mecanismo procura preservar.
Do pulso à região recuperada
Na proposta, os termos da consulta são ligados a pontos de entrada do grafo. Esses pontos recebem um pulso de ativação, que atravessa as conexões existentes. A regra local mais simples apresentada nos documentos é:
ΔAᵤ→ᵥ = Aᵤ wᵤᵥ γEssa notação identifica a contribuição transmitida pela aresta de u para v: Aᵤ é a ativação de origem, wᵤᵥ o peso da conexão e γ o fator de decaimento. As contribuições que chegam por caminhos diferentes se somam. A ativação é um estado transitório da consulta, distinto dos pesos persistentes das relações.
A expressão descreve uma passagem pela aresta, sem atribuir todo o estado do destino a uma única origem. O operador completo ainda precisa definir a atualização entre passos, o tratamento de revisitas e ciclos, a normalização, o limite de expansão e o critério de parada.
Uma coisa é medir quanto um nó foi ativado ao longo do tempo; outra é avaliar um conjunto de relações. O pico instantâneo, o acúmulo temporal em um vértice e a medida regional são objetos diferentes. Uma formalização histórica explora o acúmulo temporal da intensidade combinada de ondas em um vértice:
C(v) = ∫₀ᵀ |Σᵢ αᵢ ωᵢ(v,t)|² dtNessa expressão, as ondas ωᵢ são ponderadas por αᵢ, e o resultado depende da janela T. Ela mede intensidade acumulada no tempo em um vértice; não define, sozinha, a medida de uma região.
Há ainda uma diferença entre ativação forte e convergência de focos distintos. Como exemplo algébrico, três unidades vindas de um único foco e uma unidade de cada um de três focos produzem o mesmo total. Um escore que observe apenas essa soma não distingue os casos. Se o total for igual em todos os pontos e instantes observados, integrar esse total também não recupera a origem das contribuições.
A soma estabelece o campo de ativação. Distinguir a concentração causada por um único foco da convergência entre focos requer um critério adicional, ainda não explicitado nesta documentação. Conservar informação sobre a origem das contribuições é uma possibilidade a investigar, não uma regra de implementação definida aqui.
Para chegar à área, é necessário declarar quais nós e arestas compõem a região candidata, como suas contribuições são agregadas e quais penalidades ou normalizações são aplicadas. Uma soma bruta favorece regiões grandes; um pico pode favorecer um hub. Descontar conexões genéricas também exige cuidado para não penalizar conceitos que são centrais por razões legítimas.
O desenho procura selecionar uma região em que caminhos pertinentes se encontrem com pouco ruído. A fórmula de seleção precisa tornar esse objetivo verificável. A imagem do mapa de calor ajuda a compreender a intenção; o contrato matemático estabelece exatamente o que está sendo calculado.
Decaimento, ondas e estabilidade
O vocabulário de energia descreve a dinâmica de ativação. Ele não exige tratar os nós como corpos físicos reais.
A autora também propõe uma intuição de repulsão, descrita como gravidade invertida, para discutir concentração e dispersão. Essa intuição precisa ser separada de uma equação já fechada: deslocar posições em uma visualização, redistribuir ativação e alterar pesos de relações são operações distintas.
Mesmo na propagação linear simples, multiplicar cada passagem por um número menor que um não garante, isoladamente, que o conjunto decaia. Muitos caminhos podem somar contribuições, e ciclos podem realimentá-las. A estabilidade depende do operador completo, de seus pesos e das regras de atualização.
Os documentos também exploram uma formulação de onda. Nessa variante, a convenção do Laplaciano importa: para o Laplaciano positivo semidefinido L=D-W de um grafo não dirigido com pesos não negativos, em que D reúne as somas dos pesos incidentes, a forma usual de onda em vértices usa ψ̈ = −c²Lψ. Amortecimento e estabilidade numérica exigem definições adicionais; não decorrem apenas da analogia. Friedman e Tillich, equações de onda em grafos [6].
O texto inicial relata um ensaio de estabilização com dez mil nós. Esse registro é preservado como relato da autora; esta revisão documental não reproduziu o ensaio nem recebeu seu protocolo completo. Para transformá-lo em resultado comparável, seria necessário identificar topologia, parâmetros, condições iniciais, critério de convergência e comportamento em repetições.
Planificar para calcular
O grafo persistente e sua representação de trabalho têm funções diferentes. SQLite é proposto nos documentos como armazenamento de nós e relações. Uma estrutura linear em memória pode servir ao cálculo de propagação.
A expressão “ponteiros infinitos”, presente nos documentos de origem, comunica a intenção de não impor um pequeno número fixo de ligações por nó. Em uma execução materializada, existe um número finito de arestas. Ciclos permitem percursos repetidos, mas não tornam infinito o conjunto de conexões armazenadas.
A planificação troca referências dispersas por identificadores e posições em arrays. No formato CSR, também chamado CRS, as conexões são agrupadas por linha; índices delimitam os intervalos e apontam os destinos. O armazenamento fica proporcional aos vértices e às entradas efetivamente representadas, em vez de reservar uma matriz densa para todos os pares. Isso favorece certas operações esparsas, sem tornar toda travessia constante. Netlib, Compressed Row Storage [7].
Essa transformação precisa preservar a semântica das arestas. Se duas referências ligam os mesmos nós, mas têm fontes ou tipos diferentes, somá-las em uma única célula perde informação. Uma matriz numérica pode apoiar o cálculo enquanto identificadores e metadados mantêm as relações distinguíveis. O formato canônico de uma matriz CSR não preserva automaticamente arestas paralelas independentes. Documentação de CSR no SciPy [8].
Há também um problema de atualização. Os documentos exploram uma base CSR e um delta de novas relações, com reconstruções periódicas. Consultas precisam saber qual versão estão lendo. Trocar um ponteiro para a nova estrutura não basta se outra consulta ainda depende do bloco antigo, e a memória de trabalho precisa continuar consistente com o armazenamento persistente.
Essas questões fazem parte da implementação do grafo. Elas não determinam o significado de pensar em área, mas determinam se a máquina executa o cálculo pretendido com segurança e fidelidade.
Consolidar sem apagar a mudança
Recuperar atende a uma pergunta. Consolidar modifica a organização da memória para perguntas futuras.
No desenho, o Dreamer é o papel de consolidação: examinar o material acumulado, identificar reforços, criar relações e registrar mudanças ou conflitos. A escolha do Ministral para separar contextos não estabelece, por si só, que ele seja também o modelo que exerce esse papel.
Uma nova afirmação pode confirmar a anterior, substituir uma decisão ou contradizê-la sem que haja resolução. São situações que merecem registros diferentes. O objetivo é preservar a possibilidade de reconstruir como o conhecimento mudou, sem converter toda divergência em uma verdade única escolhida pelo consolidador.
A memória é versionada em snapshots. A cada ciclo de sono, o processamento do material acumulado produz um novo snapshot do estado da memória. O snapshot anterior continua disponível: se a nova consolidação introduzir ligações incorretas ou outro erro, o sistema pode fazer rollback para uma versão anterior.
O Dreamer realiza o trabalho semântico de consolidação; o snapshot registra o estado resultante desse ciclo. Assim, uma decisão de reorganização pode ser examinada e revertida. Em vez de sobrescrever a única cópia da memória, o desenho mantém estados aos quais é possível retornar.
Snapshot anterior → ciclo de sono e consolidação → novo snapshot
Snapshot anterior ←──────── rollback ──────────── novo snapshot com erroA sequência de snapshots fornece uma ordem de versões. Ela não informa automaticamente a data de um acontecimento ou o tempo de validade de uma afirmação; essas informações temporais precisam ser representadas quando a pergunta depender delas. Na implementação, o rollback também precisa manter coerência entre o estado persistido, as relações e a representação de trabalho em cache.
No desenho, o Dreamer é descrito como um componente especializado por fine-tuning. Essa descrição é distinta da escolha do Ministral para separar contextos e não estabelece que sejam o mesmo modelo. A confiabilidade precisa ser examinada na tarefa: preservar identidade, distinguir conflito de evolução, manter fontes e permitir desfazer uma mutação incorreta. Especialização não garante que todas as decisões de escrita sejam corretas.
Reconstruir texto sem inventar relações
Depois de selecionar a área, o sistema precisa transformar nós, arestas e fontes em contexto utilizável pelo agente. Essa reconstrução após a recuperação é uma operação distinta da tradução e normalização linguística feitas na formação da memória. Ela produz o conteúdo que, quando injetado, antecede a mensagem do usuário na entrada do modelo.
O risco é produzir uma narrativa mais definida que o grafo. “Relaciona-se a” não autoriza escrever “causa”; duas afirmações conflitantes não autorizam escolher silenciosamente uma delas; uma correção sem data não deve ganhar uma cronologia inventada.
A reconstrução deve manter a distinção entre conteúdo recuperado e inferência acrescentada. Referências aos trechos permitem inspecionar o caminho. Preservar o grafo é necessário, mas o grafo também precisa guardar referências suficientes para permitir esse retorno à origem.
Os documentos históricos exploram distribuições diferentes de modelos para extração, arbitragem e síntese. As funções são separadas aqui sem atribuir um gerador ou uma divisão de hardware que não tenham sido confirmados para o desenho atual.
Memória externa e custo de contexto
A memória externa permite recuperar uma área relevante sem exigir que toda a conversa seja reapresentada ao modelo. O conteúdo selecionado ocupa parte da janela de contexto; sua quantidade e os critérios de seleção precisam ser ajustados matematicamente e dependem também do treinamento do componente de consolidação.
Isso permite estabelecer um orçamento para o contexto recuperado. Não demonstra custo total fixo: localizar a região depende da topologia visitada; atualizar o grafo custa trabalho; reconstruir e processar o contexto também custa.
Também não elimina a janela de contexto do modelo. Na inferência autoregressiva usual de Transformers com cache, o texto apresentado continua produzindo chaves e valores durante a geração. A distinção é entre usar esse estado temporário e depender de manter um KV cache de todo o histórico entre sessões. O mecanismo de atenção continua operando sobre a entrada fornecida. Attention Is All You Need [9], funcionamento do KV cache [10].
Uma conversa extensa pode admitir uma região pequena para uma pergunta específica. Isso não significa que dezenas de nós preservem, sem perdas, qualquer detalhe de um milhão de tokens. Há perguntas que exigem mais fontes, e há informação que pode ter sido perdida na própria extração.
Trabalhos relacionados e diferenças de mecanismo
Há pesquisa pública sobre recuperação por relações e evolução de memória. Ela ajuda a localizar perguntas comparáveis, sem estabelecer equivalência entre arquiteturas.
O HippoRAG combina grafo de conhecimento, modelos de linguagem e Personalized PageRank. É uma referência para recuperação associativa e perguntas que exigem múltiplos saltos. PPR, entretanto, tem uma dinâmica própria; não define automaticamente a integral por área nem a consolidação descritas aqui. HippoRAG [11].
O GraphRAG explora entidades e resumos de comunidades para responder perguntas sobre coleções de documentos. A organização em comunidades é um ponto de comparação para regiões relacionadas, mas não constitui, por si só, o mecanismo de pulso ou a história de mutações deste desenho. GraphRAG [12].
O Zep/Graphiti trata integração de informação e relações históricas em um grafo temporal. O A-MEM explora notas conectadas e atualização de representações de memórias anteriores. São referências para temporalidade e evolução, com contratos diferentes dos que precisam ser especificados na proposta da Kuaapy. Zep [13], A-MEM [14].
A contribuição que este artigo procura tornar examinável é a combinação autoral: contextos que atravessam sessões, ligação de menções, recuperação de áreas por ativação, representação planificada e consolidação com preservação histórica. A existência de parentescos não decide se essa combinação funciona melhor; essa é uma questão experimental.
Como avaliar o conjunto
Um teste adequado precisa observar o caminho completo: conversa, separação de contextos, normalização linguística, extração, ligação, mutação, recuperação e reconstrução. Uma resposta final correta pode ocultar uma relação errada, assim como um grafo bem formado pode produzir uma resposta ruim.
O LongMemEval oferece tarefas de extração, raciocínio entre sessões, temporalidade, atualização de conhecimento e abstenção. É uma referência útil para parte da avaliação de memória conversacional. LongMemEval [15].
Para este desenho, propomos examinar também:
• Separação de contextos: assuntos misturados, dependências entre trechos e participação de um trecho em mais de um assunto.
• Identidade e ligações: homônimos, aliases, menções em idiomas diferentes e relações sustentadas pela fonte.
• Recuperação por área: cobertura dos caminhos necessários, contribuição de focos distintos, direção de travessia, ruído de hubs e preservação das fontes.
• História: reconstrução de versões anteriores, conflito preservado e distinção entre correção e substituição.
• Reconstrução textual: afirmações apoiadas pelo subgrafo e capacidade de indicar insuficiência de informação.
• Custo: tempo de cada etapa, nós e arestas visitados, memória, tokens de contexto e comportamento sob concorrência.
As comparações devem usar perguntas e histórias equivalentes, separar calibração de avaliação e incluir alternativas simples, como recuperação lexical, vetorial e híbrida. Onde houver variabilidade, repetições e dispersão importam. Esses ensaios são uma proposta de avaliação, não resultados apresentados neste artigo.
O valor pretendido está na continuidade: retomar um assunto junto das relações que o explicam e das mudanças que sofreu. O agente não precisa reler tudo para cada pergunta. Precisa conseguir encontrar a área pertinente, preservar seu significado e reconhecer quando aquela área ainda não contém uma resposta suficiente.
Fontes e leituras
- [1] mistralai/Ministral-3-3B-Instruct-2512
- [2] dslim/bert-large-NER
- [3] google-bert/bert-base-multilingual-uncased
- [4] BERT
- [5] documentação original do BERT multilíngue
- [6] Friedman e Tillich, equações de onda em grafos
- [7] Netlib, Compressed Row Storage
- [8] Documentação de CSR no SciPy
- [9] Attention Is All You Need
- [10] funcionamento do KV cache
- [11] HippoRAG
- [12] GraphRAG
- [13] Zep
- [14] A-MEM
- [15] LongMemEval