3 pontos por baeba 3 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp

Visão geral resumida

  • Objetivo

    • Um framework de memória que ajuda agentes de IA a extrair automaticamente informações necessárias de conversas e documentos, armazená-las no longo prazo e recuperá-las depois
  • Projeto central

    • O Memory value, que contém o texto original completo, é preservado como está, enquanto a recuperação usa Primary abstraction e Cue anchors
  • Principais diferenciais

    • Em vez do RAG comum, que incorpora diretamente todo o texto original, a estrutura busca reduzir perda de informação e ambiguidades na recuperação
  • Principais recursos

    • Suporte a extração automática de memórias, remoção de duplicatas, mesclagem e atualização, busca semântica, busca por palavras-chave e busca em múltiplas etapas baseada em LLM
  • Público-alvo

    • IA conversacional de longo prazo, sistemas multiagente, serviços personalizados e gestão de conhecimento baseada em documentos
  • Estado atual

    • Projeto open source em Python sob licença MIT, com benchmarks e recursos experimentais, mas ainda próximo de uma fase inicial de divulgação

Introdução

Resolviendo a complexidade da gestão de memória de agentes

  • No desenvolvimento tradicional de agentes de IA, o desenvolvedor precisa lidar diretamente com os seguintes problemas

    • decidir quais informações devem ser armazenadas como memória
    • determinar quando as informações armazenadas devem ser atualizadas ou removidas
    • recuperar memórias relacionadas à pergunta do usuário
    • gerenciar memórias duplicadas ou conflitantes
  • O objetivo do Memora é tratar esse ciclo de vida da memória dentro do próprio framework

  • Assim, o desenvolvedor pode se concentrar mais nas funções de trabalho do agente e na geração de respostas do que na lógica de baixo nível de armazenamento e recuperação

Limites das arquiteturas de memória existentes

  • Sistemas RAG comuns

    • dividem documentos ou conversas em partes de tamanho fixo
    • geram embeddings de cada trecho e os armazenam em um banco de dados vetorial
    • recuperam os trechos semanticamente mais próximos da pergunta
  • Embora esse método seja simples de implementar, ele pode gerar os seguintes problemas

    • contextos longos são divididos em vários trechos
    • informações com formulações semelhantes ficam armazenadas de forma duplicada
    • uma simples similaridade semântica pode não corresponder à intenção real da pergunta
    • ao armazenar apenas resumos comprimidos, detalhes podem se perder
  • Bases de conhecimento em formato de grafo são vantajosas para representar relações, mas trazem o peso de manter continuamente esquemas e estruturas relacionais


Desenvolvimento

Separação entre texto original e estrutura de recuperação

  • Cada memória no Memora é composta por três elementos

Memory value

  • A informação completa realmente armazenada
  • Preserva o texto original e os detalhes sem compressão
  • Não é incluída diretamente no índice de busca
  • Serve para manter o contexto original sem perda de informação

Primary abstraction

  • Um resumo representativo que indica sobre o que aquela memória trata
  • É gerado um por memória
  • É usado como base para recuperação, atualização, mesclagem e remoção de duplicatas
  • Funciona como unidade padrão que representa a identidade da memória

Cue anchors

  • Múltiplas pistas semânticas que permitem acessar uma mesma memória
  • São formadas pela combinação de pessoas, objetos, eventos, atributos centrais e afins
  • Várias pistas podem ser ligadas a uma única memória
  • Isso forma uma estrutura muitos-para-muitos em que várias memórias podem compartilhar a mesma pista

Indexação seletiva do que será buscado

  • O Memora não indexa diretamente todo o texto original

  • Na recuperação real, ele usa apenas as seguintes informações

    • Primary abstraction
    • Cue anchors
  • Quando a busca termina, o Memory value original associado é retornado

  • Objetivos dessa estrutura

    • separar a representação usada para busca da informação realmente armazenada
    • manter o índice de recuperação conciso
    • preservar intactos os detalhes do texto original
    • reduzir ruídos semânticos que podem surgir de embeddings do texto bruto

Um meio-termo entre RAG e estrutura de grafo

  • Oferece pistas de recuperação mais estruturadas que um RAG comum

  • Não define todas as relações com um esquema rígido como em um banco de dados de grafo

  • A ideia é adicionar uma camada de abstração sobre as memórias para obter ao mesmo tempo flexibilidade e estrutura

  • Direção central

    • o texto original é armazenado em formato livre
    • representações estruturadas são usadas para busca e ligação
    • estrutura de armazenamento e estrutura de recuperação são gerenciadas de forma independente

Fluxo de processamento, da criação da memória à resposta

1. Coleta de memória

  • O agente processa uma conversa ou documento

  • O conteúdo é usado para extrair automaticamente as seguintes informações

    • fatos
    • eventos e experiências
    • procedimentos e formas de trabalho
  • Conversas longas são divididas em episódios por tema

  • As informações centrais são convertidas em itens de memória estruturados

2. Armazenamento inteligente

  • Usa o banco de dados vetorial ChromaDB como armazenamento padrão

  • Armazena memórias usando embeddings semânticos

  • Quando novas informações entram, elas são comparadas com memórias existentes

  • Para informações semelhantes ou duplicadas, executa as seguintes ações

    • remoção de duplicatas
    • mesclagem com memórias existentes
    • atualização de informações antigas
  • Opcionalmente, pode criar um Cue index para dar suporte à recuperação estruturada

3. Recuperação adaptativa

  • Oferece várias estratégias de busca conforme o tipo de pergunta e a configuração
Busca semântica
  • Calcula a similaridade vetorial entre a pergunta e as representações de memória
  • A implementação é simples e aplicável a perguntas gerais
  • Pode encontrar informações semanticamente parecidas mesmo com formas de expressão diferentes
Busca com prompt
  • O LLM executa o processo de recuperação em etapas
  • Com base nos primeiros resultados, ajusta repetidamente os termos e o escopo da busca
  • É adequada para perguntas complexas ou que exigem combinar várias memórias
  • Como envolve chamadas adicionais ao LLM, pode aumentar custo e tempo de resposta
Busca híbrida
  • Combina busca semântica vetorial com busca BM25 e por palavras-chave
  • Usa ao mesmo tempo similaridade semântica e correspondência exata de termos
  • É vantajosa para reduzir falhas na busca de nomes próprios, nomes de produtos, código, datas e afins
Busca GRPO
  • Usa uma política de recuperação treinada com aprendizado por reforço
  • Aprende o próprio método de selecionar as memórias necessárias para a pergunta
  • Busca substituir a recuperação iterativa baseada em LLM por um modelo local ajustado finamente
  • Atualmente é classificada como funcionalidade experimental

4. Geração de resposta

  • As memórias recuperadas são organizadas em um formato definido
  • Esse conteúdo é inserido no prompt do LLM
  • O LLM gera a resposta usando em conjunto a pergunta e as memórias recuperadas
  • A ideia é induzir respostas fundamentadas nas memórias armazenadas

Recursos de gestão para manter a qualidade da memória

  • Diferentemente de um repositório plano que apenas continua acumulando memórias, o sistema gerencia o estado das memórias existentes

  • Principais funções de gestão

    • remoção de memórias duplicadas
    • mesclagem de memórias semelhantes
    • atualização de fatos alterados
    • reorganização da estrutura de memória
  • Usa Primary abstraction como base para atualização e consolidação das memórias

  • O objetivo é reduzir o acúmulo ilimitado de duplicações ao longo do tempo

Suporte a vários tipos de memória

  • É possível representar diferentes tipos de memória configurando de forma distinta o valor da memória e o método de abstração

Memória factual

  • Informações relativamente estáveis, como pessoas, locais, atributos e configurações
  • Ex.: local de trabalho de um usuário específico, ferramentas preferidas, stack tecnológica de um projeto

Memória episódica

  • Eventos ou conversas ocorridos em um momento específico
  • Ex.: decisões tomadas em uma reunião passada, processo usado para resolver um erro específico

Memória procedural

  • Métodos de trabalho ou procedimentos repetíveis
  • Ex.: procedimento de deploy de servidor, sequência de verificação de erros, regras de geração de documentos

Compartilhamento e isolamento de memória em múltiplos agentes

  • Vários agentes que operam no mesmo ambiente podem usar um espaço de memória compartilhado

  • Informações salvas por um agente podem ser reutilizadas por outro

  • Também é possível limitar o escopo da memória por agente ou por função

  • Efeitos esperados

    • redução de duplicação de conhecimento entre agentes
    • melhoria na passagem de trabalho entre agentes
    • manutenção da consistência de informações comuns de projeto
  • A estrutura oferece suporte a compartilhamento seletivo e proteção de privacidade por meio de controle de acesso e isolamento

Separação entre infraestrutura de armazenamento e estrutura de representação

  • O sistema foi projetado para que a forma de representação da memória não dependa fortemente de um armazenamento específico

  • A estrutura do projeto inclui integração com os seguintes bancos de dados

    • ChromaDB
    • Redis
  • Pode ser aplicado em ambientes de armazenamento locais ou remotos

  • Mesmo trocando o backend de armazenamento, a estrutura de abstração e pistas da memória pode ser mantida


Forma básica de uso

  • Requer Python 3.10 ou superior
  • Clone o repositório no GitHub e instale o pacote
  • Crie um MemoraClient e defina um identificador de usuário ou de agente
  • Use add() para adicionar conversas ou documentos à memória
  • Use query() para realizar busca semântica
  • Use advance_query() para realizar buscas avançadas nos modos Prompted ou GRPO

Estrutura de integração com agentes

  • Ao receber uma mensagem do usuário, primeiro recupera memórias relacionadas

  • Gera a resposta usando os resultados da busca e a pergunta do usuário

  • A resposta gerada e a mensagem do usuário são organizadas em um único registro de conversa

  • Essa conversa é então armazenada novamente no Memora

  • Processo repetitivo

    • receber a pergunta
    • recuperar memórias relevantes
    • gerar resposta
    • armazenar a conversa
    • reutilizar nas perguntas seguintes

Avaliação de desempenho de memória de longo prazo

Benchmark LoCoMo

  • Avalia a capacidade de recuperar memórias em conversas de longa duração

  • Principais tipos de avaliação

    • perguntas de etapa única
    • perguntas em múltiplas etapas que combinam várias informações
    • perguntas sobre relações temporais
    • perguntas abertas
  • É possível testar combinações de busca semântica, Prompted e Cue index

Benchmark LongMemEval

  • Avalia a capacidade de um sistema de memória de longo prazo de lidar com vários tipos de pergunta
  • Permite aplicar configurações de memória episódica e busca semântica
  • Serve para verificar retenção de informação e desempenho de recuperação em ambientes reais de conversação de longo prazo

Aprendizado de política de recuperação com base em GRPO

  • Recurso experimental para aprender o procedimento de busca como uma política de aprendizado por reforço

  • Etapas do processo

    • gerar caminhos de busca com a política atual
    • avaliar fundamentação, duplicação e custo dos resultados de busca
    • calcular vantagem relativa de grupo
    • treinar a política de recuperação com o método GRPO
  • São apresentados como exemplos modelos da linha Qwen 3B ou 7B com ajuste fino via LoRA

  • O treinamento requer GPU

  • Objetivos

    • reduzir o custo de chamar um LLM externo a cada busca
    • construir estratégias de recuperação otimizadas para dados e tarefas específicos
  • Limitações

    • são necessários dados de treinamento e critérios de avaliação
    • soma-se a complexidade de treinamento e operação do modelo
    • para uso geral, é mais complexo do que a busca semântica

Principais vantagens

  • Permite preservar detalhes do texto original sem compressão
  • A separação entre representação para busca e informação real torna a estrutura de memória mais clara
  • É possível tratar remoção de duplicatas e atualização de memória de forma sistemática
  • É possível escolher entre busca semântica, por palavras-chave, via LLM e com aprendizado por reforço
  • Memórias factuais, episódicas e procedurais podem ser gerenciadas em um único framework
  • Vários agentes podem compartilhar as mesmas memórias
  • Busca integração com sistemas de agentes existentes com mudanças relativamente pequenas
  • Pode suportar tanto estruturas de armazenamento locais quanto remotas

Limitações estruturais e pontos de atenção

  • A qualidade de Primary abstraction e Cue anchors afeta diretamente o desempenho da recuperação
  • Se a abstração gerada automaticamente for imprecisa, a memória pode não ser recuperada mesmo com o texto original correto
  • Uma estrutura que não indexa diretamente o texto original pode ser desfavorável para recuperar frases específicas ou informações raras
  • No processo de remoção de duplicatas e mesclagem, eventos diferentes podem acabar integrados incorretamente em uma única memória
  • A busca com prompt pode aumentar custo e latência por exigir várias chamadas ao LLM
  • A abordagem GRPO requer GPU, dados de treinamento e estrutura de avaliação, elevando a complexidade operacional
  • Em memórias compartilhadas entre múltiplos agentes, permissões de acesso e isolamento de informação precisam ser projetados com clareza
  • Ao armazenar dados pessoais ou conversas sensíveis, são necessárias políticas separadas de criptografia, exclusão e retenção
  • O repositório público não tem releases e possui poucos indicadores de participação e uso, então ainda é difícil afirmar que sua estabilidade em operação de grande escala foi suficientemente validada

Conclusão

Uma abordagem de memória de longo prazo com camada de acesso estruturada

  • O Memora propõe sair do modelo de simplesmente vetorizar todo o texto original e sugere a seguinte estrutura

    • os detalhes são preservados em Memory value
    • o significado representativo é expresso por Primary abstraction
    • diferentes caminhos de recuperação são organizados por Cue anchors
  • Seu valor central está no equilíbrio entre preservação de informação e eficiência de recuperação

  • Em vez de simples busca documental, o potencial de uso parece maior nos seguintes cenários

    • agentes personalizados que interagem com usuários por longos períodos
    • sistemas que acumulam continuamente muitos documentos técnicos e de trabalho
    • ambientes em que agentes de diferentes funções compartilham conhecimento
    • projetos que precisam reutilizar decisões passadas e procedimentos de trabalho

Validação necessária antes da adoção

  • Na aplicação real, os seguintes fatores devem ser verificados primeiro

    • qualidade da abstração e da geração de cues em documentos em coreano
    • precisão de recuperação em comparação com RAG tradicional
    • taxa de erro no processo de mesclagem de memórias
    • crescimento de dados e velocidade de busca em operação de longo prazo
    • custo de APIs de LLM e de embeddings
    • forma de armazenamento de dados pessoais e controle de acesso
  • Em uma fase inicial, é adequado realizar um pequeno PoC com parte dos documentos principais e comparar o desempenho com RAG comum e com busca híbrida

Ainda não há comentários.

Ainda não há comentários.