Zprostředkovatel paměti Neo4j

Zprostředkovatel paměti Neo4j poskytuje agentům Agent Framework trvalou paměť podporovanou grafem znalostí. Na rozdíl od poskytovatelů RAG, kteří načítají ze statických znalostních bází, poskytovatel paměti ukládá a odvolává interakce agentů, automaticky extrahuje entity a vytváří graf znalostí v průběhu času.

Poskytovatel spravuje tři typy paměti:

  • Krátkodobá paměť: Historie konverzací a nedávný kontext
  • Dlouhodobá paměť: Entity, předvolby a fakta extrahované z interakcí
  • Paměť uvažování: Stopy uvažování a vzory použití nástrojů z minulosti

Proč používat Neo4j pro paměť agenta?

  • Trvalost znalostních grafů: Vzpomínky se ukládají jako propojené entity, ne ploché záznamy, takže agent může mít důvod k vztahům mezi věcmi, které si pamatuje.
  • Automatická extrakce entit: Konverzace se analyzují do strukturovaných entit a relací bez ručního návrhu schématu.
  • Připomenutí napříč relacemi: Předvolby, fakta a stopy uvažování se uchovávají napříč relacemi a automaticky se zobrazí prostřednictvím zprostředkovatelů kontextu.

Poznámka:

Neo4j nabízí dvě samostatné integrace pro Agent Framework. Tento poskytovatel (neo4j-agent-memory) je určený pro trvalou paměť – ukládání a odvolávání interakcí agentů, extrahování entit a vytváření znalostního grafu v průběhu času. Pro použití GrafRAG z existujícího znalostního grafu pomocí vektorového, fulltextového nebo hybridního vyhledávání viz Neo4j GraphRAG Context Provider.

Tento poskytovatel ještě není pro jazyk C# k dispozici. Podívejte se na kartu Python pro příklady použití.

Předpoklady

  • Instance Neo4j (v místním prostředí nebo Neo4j AuraDB)
  • Projekt Azure AI Foundry s nasazeným modelem chatu
  • Klíč rozhraní API OpenAI nebo nasazení Azure OpenAI (pro vkládání a extrakci entit)
  • Proměnné prostředí nastavena: NEO4J_URI, NEO4J_PASSWORD, FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL, OPENAI_API_KEY
  • Nakonfigurované přihlašovací údaje Azure CLI (az login)
  • Python 3.10 nebo novější

Instalace

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

Využití

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)

Klíčové funkce

  • Obousměrný: Automaticky načte relevantní kontext před vyvoláním a uloží nové vzpomínky po odpovědích.
  • Extrakce entit: Vytvoří graf znalostí z konverzací pomocí kanálu extrakce s více fázemi.
  • Učení předvoleb: Odvozování a ukládání uživatelských předvoleb napříč relacemi
  • Nástroje pro paměť: Agenti můžou explicitně prohledávat paměť, pamatovat si předvolby a vyhledávat připojení entit.

Zdroje

Další kroky