Partekatu honen bidez:


Proveedor de memoria Neo4j

El proveedor de memoria Neo4j proporciona a los agentes de Agent Framework memoria persistente respaldada por un gráfico de conocimiento. A diferencia de los proveedores RAG que recuperan de bases de conocimiento estáticas, el proveedor de memoria almacena y recupera interacciones del agente, extrayendo automáticamente entidades y creando un grafo de conocimiento a lo largo del tiempo.

El proveedor administra tres tipos de memoria:

  • Memoria a corto plazo: historial de conversaciones y contexto reciente
  • Memoria a largo plazo: Entidades, preferencias y hechos extraídos de interacciones
  • Memoria de razonamiento: seguimientos de razonamiento anteriores y patrones de uso de herramientas

¿Por qué usar Neo4j para la memoria del agente?

  • Persistencia del gráfico de conocimiento: los recuerdos se almacenan como entidades conectadas, no registros planos, por lo que el agente puede razonar sobre las relaciones entre las cosas que recuerda.
  • Extracción automática de entidades: las conversaciones se analizan en entidades estructuradas y relaciones sin diseño de esquema manual.
  • Recuperación entre sesiones: las preferencias, los hechos y los rastros de razonamiento se conservan automáticamente entre sesiones y se muestran automáticamente a través de proveedores de contexto.

Nota:

Neo4j ofrece dos integraciones independientes para Agent Framework. Este proveedor (neo4j-agent-memory) es para memoria persistente : almacenamiento y recuperación de interacciones del agente, extracción de entidades y creación de un gráfico de conocimiento a lo largo del tiempo. Para el uso de GraphRAG desde un grafo del conocimiento existente mediante búsqueda vectorial, de texto completo o híbrida, consulte el Proveedor de Contextos de GraphRAG Neo4j.

Este proveedor aún no está disponible para C#. Consulte la pestaña Python para ver ejemplos de uso.

Prerrequisitos

  • Una instancia de Neo4j (autogestionado o Neo4j AuraDB)
  • Un proyecto de Azure AI Foundry con un modelo de chat implementado
  • Una clave de API de OpenAI o una implementación de Azure OpenAI (para incrustaciones y extracción de entidades)
  • Conjunto de variables de entorno: NEO4J_URI, NEO4J_PASSWORD, FOUNDRY_PROJECT_ENDPOINT, , FOUNDRY_MODEL, OPENAI_API_KEY
  • Credenciales de la CLI de Azure configuradas (az login)
  • Python 3.10 o posterior

Instalación

pip install neo4j-agent-memory[microsoft-agent]

Uso

import os
from pydantic import SecretStr
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
from neo4j_agent_memory import MemoryClient, MemorySettings
from neo4j_agent_memory.integrations.microsoft_agent import (
    Neo4jMicrosoftMemory,
    create_memory_tools,
)

# Pass Neo4j and embedding configuration directly via constructor arguments.
# MemorySettings also supports loading from environment variables or .env files
# using the NAM_ prefix (e.g. NAM_NEO4J__URI, NAM_EMBEDDING__MODEL).
settings = MemorySettings(
    neo4j={
        "uri": os.environ["NEO4J_URI"],
        "username": os.environ.get("NEO4J_USERNAME", "neo4j"),
        "password": SecretStr(os.environ["NEO4J_PASSWORD"]),
    },
    embedding={
        "provider": "openai",
        "model": "text-embedding-3-small",
    },
)

memory_client = MemoryClient(settings)

async with memory_client:
    memory = Neo4jMicrosoftMemory.from_memory_client(
        memory_client=memory_client,
        session_id="user-123",
    )
    tools = create_memory_tools(memory)

    async with AzureCliCredential() as credential, Agent(
            client=FoundryChatClient(
            credential=credential,
            project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
            model=os.environ["FOUNDRY_MODEL"],
        ),
        instructions="You are a helpful assistant with persistent memory.",
        tools=tools,
        context_providers=[memory.context_provider],
    ) as agent:
        session = agent.create_session()
        response = await agent.run("Remember that I prefer window seats on flights.", session=session)

Características clave

  • Bidireccional: recupera automáticamente el contexto pertinente antes de la invocación y guarda nuevos recuerdos después de las respuestas.
  • Extracción de entidades: crea un grafo de conocimiento a partir de conversaciones mediante una canalización de extracción en varias fases
  • Aprendizaje de preferencias: infiere y almacena preferencias de usuario a través de sesiones
  • Herramientas de memoria: los agentes pueden buscar explícitamente en la memoria, recordar preferencias y hallar conexiones de entidad

Recursos

Pasos siguientes