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

在项目的examples/目录下,提供了一个完整的用法演示文件usage.py。你可以直接运行它来观察DiffMem的完整工作流程。
在终端中执行以下命令:

python examples/usage.py

这个脚本会演示如何初始化记忆库、提交新的记忆,并根据新的对话内容检索上下文,展示了DiffMem从信息输入到输出的整个链路。

cenário do aplicativo

  1. 个人AI助理
    可以为个人AI助理提供长期记忆能力。助理能够记住用户的偏好、过去的对话、重要的日期和事件。由于记忆会随时间演变,助理可以准确地回忆起“上周我们讨论过什么”或者“我女儿的年龄现在是多少”,因为它只关注信息的最新状态,同时保留了历史轨迹。
  2. 需要持续学习的AI系统
    在客户服务、技术支持等领域,AI智能体需要不断学习新的产品知识和业务流程。DiffMem可以记录这些知识的演变过程。当一个操作指南更新时,系统会保存新版本,同时通过Git历史记录下变更,确保AI总能提供最准确的信息,并且可以追溯任何知识点的历史版本。
  3. colaboração de inteligência múltipla
    在多智能体系统中,不同的智能体可以共享同一个DiffMem记忆库。通过Git的分支和合并请求(Merge Request)机制,智能体之间可以协同更新共享知识,并解决可能出现的“记忆冲突”,最终形成一致的、版本化的团队记忆。
  4. 可解释性与调试
    对于开发者而言,AI的行为有时像一个“黑箱”。DiffMem将记忆以人类可读的文本和Git提交历史的形式存储,极大地增强了AI记忆的可解释性。开发者可以像审查代码一样,通过git logresponder cantandogit diff来查看AI“学到了什么”以及“知识是如何变化的”,这对于调试AI的行为和决策过程非常有帮助。

QA

  1. DiffMem与传统的向量数据库有何不同?
    向量数据库主要用于高维数据的相似性搜索,它将信息(如文本)转换为向量并存储,然后通过计算向量间的距离来查找相似内容。 DiffMem则采用了完全不同的思路,它不依赖向量嵌入,而是将记忆作为版本化的文本文档来管理。 它的核心优势是处理随时间演变的信息,能够清晰地追踪一个事实的变化(例如,一个人的年龄从9岁变为10岁),而向量数据库在处理这类“事实更新”时可能会保留过时和有噪声的信息。
  2. 为什么选择Git作为后端技术?
    选择Git是因为它为版本化文档管理提供了成熟且强大的解决方案。 Git的优点与AI记忆的需求非常契合:它天然支持追踪变化(diff)、记录历史(log)、回溯到任意时间点(checkout)以及分支管理(branch)。 此外,Git是分布式的,数据存储在简单的文件中,这使得记忆库具有很高的可移植性和持久性,并且不依赖任何专有格式。
  3. DiffMem是否适合生产环境?
    目前,DiffMem是一个概念验证(PoC)项目,其作者明确表示它尚未经过生产环境的强化。 它存在一些局限性,例如需要手动进行Git的远程同步(push/pull)、错误处理机制比较基础、没有为多用户并发访问设计锁定机制等。 因此,直接用于大规模商业应用前还需要进一步的开发和测试。
  4. 运行DiffMem需要哪些主要软件依赖?
    DiffMem是一个轻量级项目,主要依赖项包括GitPython库(用于在Python中操作Git仓库)、rank-bm25库(用于实现高效的文本检索算法)和sentence-transformers(用于支持语义相关的搜索功能)。
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.

Novos lançamentos

voltar ao topo

pt_BRPortuguês do Brasil