Acesso no exterior: www.kdjingpai.com
Ctrl + D Marcar este site como favorito

O DiffMem é um backend de memória leve projetado para inteligências de IA e sistemas de conversação. De forma inovadora, ele usa o Git como o núcleo do armazenamento de memória, salvando memórias de IA como arquivos Markdown legíveis por humanos. O histórico de commits do Git é usado para rastrear a evolução das memórias ao longo do tempo, enquanto o sistema emprega um índice BM25 na memória para recuperação rápida e interpretável de informações. Esse projeto é atualmente uma Prova de Conceito (PoC) para explorar como um sistema de controle de versão pode ser usado para criar uma base de memória eficiente e dimensionável para aplicativos de IA. O DiffMem trata a memória como uma base de conhecimento versionada: o "estado atual" do conhecimento é armazenado em arquivos editáveis, enquanto as alterações históricas são armazenadas em gráficos de confirmação do Git. Esse design permite que as inteligências consultem em um nível compacto e atualizado de conhecimento e, ao mesmo tempo, sejam capazes de se aprofundar na evolução das memórias quando necessário.

Lista de funções

  • Armazenamento de memória orientado por GitUse os recursos de controle de versão do Git para gerenciar e acompanhar a evolução das memórias de IA, com cada atualização de memória correspondendo a um commit do Git.
  • Formato legível por humanosMemórias: as memórias são armazenadas como arquivos Markdown simples para que os desenvolvedores possam ler, editar e gerenciar diretamente.
  • Foco no estado atualPor padrão, apenas o "estado atual" dos documentos de conhecimento é indexado e pesquisado, o que reduz o escopo das consultas e melhora a eficiência da recuperação e a economia de tokens no contexto de modelos de linguagem grandes (LLMs).
  • Rastreamento de evolução diferencial: através degit diffe outros comandos, o corpo inteligente pode consultar com eficiência informações específicas ao longo do tempo sem precisar carregar um histórico completo.
  • Pesquisa rápida de textoUm índice BM25 na memória é incorporado para fornecer respostas rápidas em milissegundos para pesquisas de palavras-chave.
  • componente modularO sistema consiste em vários módulos principais, incluindo o responsável pela análise dos diálogos e pelo envio de atualizações写入智能体responsável por integrar o contexto de consulta do上下文管理器bem como os responsáveis pela realização da pesquisa搜索智能体.
  • Leve e fácil de integrarDependências de projeto reduzidas, sem necessidade de implantar um servidor separado, e pode ser integrado diretamente a projetos existentes como um módulo Python.

Usando a Ajuda

O DiffMem foi projetado para que possa ser importado como um módulo Python simples, sem necessidade de implantação complexa no servidor. Veja abaixo um procedimento detalhado de instalação e uso.

Preparação e instalação do ambiente

  1. Clonagem da base de código
    Primeiro, ele precisa ser clonado do GitHubDiffMemo repositório de código-fonte em seu computador local. Abra um terminal ou uma ferramenta de linha de comando e digite o seguinte comando:

    git clone https://github.com/Growth-Kinetics/DiffMem.git
    

    Após a execução, o download da base de código será feito em um arquivo no diretório atual chamadoDiffMemna pasta do

  2. Vá para o diretório do projeto
    fazer uso decdna pasta do projeto:

    cd DiffMem
    
  3. Instalação de dependências
    O DiffMem depende de várias bibliotecas Python para ser executado, e essas dependências estão documentadas no arquivorequirements.txtno arquivo. Você pode usar opippara instalá-los:

    pip install -r requirements.txt
    ```    这个命令会自动下载并安装`gitpython`、`rank-bm25`和`sentence-transformers`等必要的库。
    
  4. Configuração da chave da API
    O DiffMem requer o uso de LLMs (Large Language Models) para trabalhar em conjunto, por exemplo, para analisar o conteúdo das conversas. O projeto usa o OpenRouter para gerenciar as chamadas de LLM. Você precisa definir sua chave de API em uma variável de ambiente.
    Para sistemas Linux ou macOS, use o comandoexportComando:

    export OPENROUTER_API_KEY='你的密钥'
    

    Para sistemas Windows, use osetComando:

    set OPENROUTER_API_KEY='你的密钥'
    

    favor incluir你的密钥Substitua-o por sua própria chave de API válida.

Operação da função principal

A principal funcionalidade do DiffMem é fornecida por meio da funçãoDiffMemoryé exposta ao usuário. Você pode inicializar essa classe e, em seguida, chamar seus métodos para ler, gravar e consultar a memória.

  1. Inicialização do banco de memória
    Primeiro, você precisa importar o arquivoDiffMemorye a inicializa com um caminho local. Esse caminho servirá como o repositório Git onde a memória será armazenada.

    from src.diffmem import DiffMemory
    # 初始化记忆库,指定仓库路径、用户名和API密钥
    # 如果路径不存在,系统会自动创建一个新的Git仓库
    memory = DiffMemory(
    repo_path="/path/to/your/memory_repo",
    user_name="alex",
    api_key="你的OpenRouter密钥"
    )
    

    No código acima, o/path/to/your/memory_repoSubstitua-o pelo caminho para a pasta onde você deseja armazenar suas memórias.

  2. Processamento e envio de memórias
    Você pode passar uma parte do diálogo ou do conteúdo da sessão para oprocess_and_commit_sessionas inteligências de gravação do DiffMem analisarão automaticamente o texto para extrair ou atualizar as informações da entidade e, em seguida, salvarão essas alterações como um único commit do Git.

    # 假设你有一段新的对话内容
    conversation_text = "今天和妈妈一起喝了咖啡,她提到下周要去旅行。"
    session_id = "session-12345" # 为这次会话指定一个唯一的ID
    # 处理并提交这次会话的记忆
    memory.process_and_commit_session(conversation_text, session_id)
    print("记忆已成功处理并提交。")
    

    Após a execução, o conhecimento relevante é atualizado no arquivo Markdown e um novo registro de commit do Git é gerado, e a mensagem de commit conterá o ID da sessão.

  3. Obter contexto
    Quando chegar a hora de interagir com a IA, você poderá usar a funçãoget_contextpara obter informações relevantes sobre o histórico do diálogo atual. Esse método suporta diferentes parâmetros de "profundidade" para controlar o nível de detalhes retornados.

    • depth="basic"Acesso a blocos de informações essenciais.
    • depth="wide"Pesquisa semântica: Realize pesquisas semânticas para retornar informações relevantes de forma mais ampla.
    • depth="deep"Arquivo de consulta: retorna o conteúdo completo do arquivo associado à consulta.
    • depth="temporal"Git: Retorna informações temporais que contêm o histórico do Git.
    # 假设当前的对话是关于“妈妈的旅行计划”
    current_conversation = "妈妈的旅行计划定了吗?"
    # 获取深度上下文
    context = memory.get_context(current_conversation, depth="deep")
    # 将获取到的上下文信息打印出来
    print("获取到的相关上下文:")
    print(context)
    

    Esse contexto pode ser inserido no LLM para gerar respostas mais precisas e contextualizadas.

  4. Execução direta de pesquisas
    Você também pode usar apenas osearchpara recuperar informações do banco de memória.

    query = "关于妈妈的信息"
    search_results = memory.search(query)
    print(f"关于 '{query}' 的搜索结果:")
    for result in search_results:
    print(f"- {result}")
    

Exemplo de código a ser executado

No projetoexamples/Um arquivo de demonstração de uso completo é fornecido no diretóriousage.py. Você pode executá-lo diretamente para observar o fluxo de trabalho completo do DiffMem.
Execute o seguinte comando no terminal:

python examples/usage.py

Esse script demonstrará como inicializar o banco de memória, confirmar novas memórias e recuperar o contexto com base no novo conteúdo do diálogo, mostrando toda a cadeia do DiffMem, desde a entrada até a saída da mensagem.

cenário do aplicativo

  1. Assistente pessoal de IA
    Os recursos de memória de longo prazo podem ser fornecidos aos assistentes pessoais de IA. Os assistentes podem lembrar as preferências do usuário, conversas anteriores, datas e eventos importantes. À medida que as memórias evoluem ao longo do tempo, o assistente pode lembrar com precisão "o que conversamos na semana passada" ou "qual é a idade da minha filha agora" porque ele se concentra apenas no estado mais recente das informações, mantendo um registro histórico.
  2. Sistemas de IA que exigem aprendizado contínuo
    Em áreas como atendimento ao cliente e suporte técnico, as inteligências de IA precisam aprender constantemente novos conhecimentos sobre produtos e processos de negócios. Quando um guia operacional é atualizado, o sistema salva a nova versão e também registra as alterações por meio do histórico do Git, garantindo que a IA sempre forneça as informações mais precisas e possa rastrear a versão histórica de qualquer ponto de conhecimento.
  3. colaboração de inteligência múltipla
    Em um sistema com várias inteligências, diferentes inteligências podem compartilhar a mesma memória DiffMem. Por meio dos mecanismos de ramificação e solicitação de mesclagem do Git, as inteligências podem colaborar para atualizar o conhecimento compartilhado e resolver possíveis "conflitos de memória" para formar uma memória de equipe consistente e com versão.
  4. Interpretabilidade e depuração
    Às vezes, a IA pode se comportar como uma "caixa preta" para os desenvolvedores, e o DiffMem aprimora muito a interpretabilidade das memórias de IA, armazenando-as como texto legível por humanos e histórico de commits do Git. Os desenvolvedores podem revisar o código como se ele fossegit logresponder cantandogit diffVer o que a IA "aprendeu" e "como o conhecimento mudou" é muito útil para depurar o comportamento e o processo de tomada de decisão da IA.

QA

  1. Qual é a diferença entre o DiffMem e os bancos de dados vetoriais tradicionais?
    Os bancos de dados vetoriais são usados principalmente para a pesquisa de similaridade de dados de alta dimensão, em que as informações (por exemplo, texto) são convertidas em vetores e armazenadas e, em seguida, o conteúdo similar é encontrado calculando-se as distâncias entre os vetores. O DiffMem, por outro lado, adota uma ideia completamente diferente, que não se baseia em vetores incorporados, mas gerencia memórias como documentos de texto com versões. Sua principal vantagem é que ele lida com informações ao longo do tempo, rastreando claramente as alterações em um fato (por exemplo, a idade de uma pessoa que muda de 9 para 10 anos), enquanto os bancos de dados vetoriais podem reter informações desatualizadas e com ruído ao lidar com esses tipos de "atualizações factuais".
  2. Por que escolher o Git como sua tecnologia de back-end?
    O Git foi escolhido porque oferece uma solução madura e avançada para o gerenciamento de documentos com controle de versão. Os benefícios do Git se encaixam bem nas necessidades da memória de IA: ele suporta naturalmente o rastreamento de alterações (diff), histórico de registros (log), de volta a qualquer ponto no tempo (checkout) e gerenciamento de filiais (branch). Além disso, o Git é distribuído e os dados são armazenados em arquivos simples, o que torna o repositório altamente portátil e persistente, e não depende de nenhum formato proprietário.
  3. O DiffMem é adequado para ambientes de produção?
    Atualmente, o DiffMem é um projeto de prova de conceito (PoC), e seus autores deixaram claro que ele ainda não foi reforçado para ambientes de produção. Ele tem algumas limitações, como a necessidade de executar manualmente a sincronização remota do Git (push/pull), o mecanismo de tratamento de erros é relativamente básico e não há mecanismo de bloqueio projetado para acesso simultâneo de vários usuários. Portanto, é necessário mais desenvolvimento e testes antes do uso direto em aplicativos comerciais de larga escala.
  4. Quais são as principais dependências de software necessárias para executar o DiffMem?
    O DiffMem é um projeto leve com as principais dependências, incluindoGitPython(para manipular repositórios Git em Python),rank-bm25(para implementar algoritmos eficientes de recuperação de texto) e a bibliotecasentence-transformers(usado para dar suporte a funções de pesquisa semanticamente relacionadas).
0Marcado
0Recomendado

Recomendado

Não consegue encontrar ferramentas de IA? Tente aqui!

Basta digitar a palavra-chave Acessibilidade Bing SearchA seção Ferramentas de IA deste site é uma maneira rápida e fácil de encontrar todas as ferramentas de IA deste site.

Ferramentas de IA mais recentes

voltar ao topo

pt_BRPortuguês do Brasil