다음을 통해 공유


Neo4j 메모리 공급자

Neo4j 메모리 공급자는 에이전트 프레임워크 에이전트에 기술 자료 그래프로 지원되는 영구 메모리를 제공합니다. 정적 기술 자료에서 검색하는 RAG 공급자와 달리 메모리 공급자는 에이전트 상호 작용을 저장하고 회수하여 엔터티를 자동으로 추출하고 시간이 지남에 따라 기술 그래프를 작성합니다.

공급자는 세 가지 유형의 메모리를 관리합니다.

  • 단기 메모리: 대화 기록 및 최근 컨텍스트
  • 장기 메모리: 상호 작용에서 추출된 엔터티, 기본 설정 및 팩트
  • 추론 메모리: 과거 추론 추적 및 도구 사용 패턴

에이전트 메모리에 Neo4j를 사용하는 이유는 무엇인가요?

  • 지식 그래프 지속성: 기억은 플랫 레코드가 아닌 연결된 엔터티로 저장되므로 에이전트는 기억되는 항목 간의 관계를 추론할 수 있습니다.
  • 자동 엔터티 추출: 대화는 수동 스키마 디자인 없이 구조화된 엔터티 및 관계로 구문 분석됩니다.
  • 세션 간 기억: 기본 설정, 사실 및 추론 흔적은 문맥 제공자를 통해 세션 전반에서 유지되고 자동으로 나타납니다.

메모

Neo4j는 에이전트 프레임워크에 대해 두 개의 별도 통합을 제공합니다. 이 공급자(neo4j-agent-memory)는 에이전트 상호 작용을 저장 및 회수하고, 엔터티를 추출하고, 시간이 지남에 따라 지식 그래프를 빌드하는 영구 메모리 를 위한 것입니다. 기존 지식 그래프에서 GraphRAG를 벡터, 전체 텍스트 또는 하이브리드 검색으로 사용하려면 Neo4j GraphRAG Context Provider를 참조하세요.

이 공급자는 아직 C#에 사용할 수 없습니다. 사용 예제는 Python 탭을 참조하세요.

사전 요구 사항

  • Neo4j 인스턴스(자체 호스팅 또는 Neo4j AuraDB)
  • 배포된 채팅 모델을 사용하는 Azure AI Foundry 프로젝트
  • OpenAI API 키 또는 Azure OpenAI 배포(임베딩 및 엔터티 추출용)
  • 환경 변수 집합: NEO4J_URI, NEO4J_PASSWORD, FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODELOPENAI_API_KEY
  • 구성된 Azure CLI 자격 증명(az login)
  • Python 3.10 이상

설치

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

사용법

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)

주요 기능

  • 양방향: 호출 전에 관련 컨텍스트를 자동으로 검색하고 응답 후 새 추억을 저장합니다.
  • 엔터티 추출: 다단계 추출 파이프라인을 사용하여 대화에서 지식 그래프를 구축합니다.
  • 기본 설정 학습: 세션 간에 사용자 기본 설정을 유추하고 저장합니다.
  • 메모리 도구: 에이전트는 명시적으로 메모리를 검색하고, 기본 설정을 기억하고, 엔터티 연결을 찾을 수 있습니다.

리소스

다음 단계