🚀 Memory Graph: Knowledge Graph em TypeScript para Memórias de Agentes
Fala, galera! 👋
Quero compartilhar com vocês um projeto que estou desenvolvendo e que já está em testes nos meus agentes: o Memory Graph. Ele é um knowledge graph em TypeScript, pensado para armazenar e buscar memórias de agentes, inspirado na forma como a memória humana funciona – e também no incrível projeto Graphiti.
🌱 A ideia por trás do Memory Graph
O grande desafio de criar agentes mais inteligentes é permitir que eles lembrem de forma contextual e façam conexões naturais entre informações.
Na memória humana, nós:
- Vivenciamos eventos → inputs da nossa experiência.
- Extraímos fatos → informações relevantes que ficam registradas.
- Relacionamos conceitos → formamos conexões mentais entre experiências.
- Resgatamos lembranças → buscamos fatos e entidades conectadas quando precisamos.
O Memory Graph funciona exatamente assim, só que em código. ⚡
🧠 Como o Memory Graph trabalha
O processo gira em torno de Episódios, Fatos, Entidades e Relações:
-
Inputs (Episódios):
Cada interação entre o humano e a IA gera um episódio – basicamente uma mensagem ou conjunto de mensagens. -
Extração de Fatos:
Desses episódios, são extraídos fatos (informações relevantes).- Exemplo:
"João pediu um orçamento para um site"→ fato sobre João e "orçamento".
- Exemplo:
-
Criação de Nodes e Edges:
- Nodes (Entidades): representam conceitos ou objetos do mundo (ex: "João", "site").
- Edges (Relacionamentos): representam fatos que conectam entidades.
-
Busca por Similaridade:
Quando o agente precisa lembrar de algo, ele busca pelas edges usando similaridade de cosseno.- Isso permite encontrar fatos relevantes, mesmo que a consulta não seja idêntica ao que foi salvo.
-
Retorno final:
O Memory Graph traz:- As entidades relacionadas
- Os fatos mais relevantes
- As últimas 5 mensagens do histórico, para contexto imediato
Resultado: uma memória rica, contextual e natural, que o agente pode usar para pensar e responder melhor.
🔗 Exemplo prático
Imagine que um agente tenha o seguinte histórico:
- "João pediu um orçamento para um site."
- "Maria perguntou sobre marketing digital."
- "João quer saber quando o orçamento estará pronto."
Quando buscamos por "informações sobre João", o Memory Graph retorna:
-
Entidade: João
-
Fatos:
- "João pediu um orçamento para um site."
- "João quer saber quando o orçamento estará pronto."
-
Últimas 5 mensagens para contexto.
Isso faz com que o agente possa responder de forma inteligente e natural, como se estivesse realmente lembrando de uma conversa.