Neo4j メモリ プロバイダーは、Agent Framework エージェントにナレッジ グラフによってサポートされる永続的なメモリを提供します。 静的ナレッジ ベースから取得する RAG プロバイダーとは異なり、メモリ プロバイダーはエージェントの対話を格納して呼び戻し、エンティティを自動的に抽出し、時間の経過と同時にナレッジ グラフを構築します。
プロバイダーは、次の 3 種類のメモリを管理します。
- 短期メモリ: 会話履歴と最近のコンテキスト
- 長期的なメモリ: 相互作用から抽出されたエンティティ、基本設定、ファクト
- 推論メモリ: 過去の推論トレースとツールの使用パターン
エージェント メモリに Neo4j を使用する理由
- ナレッジ グラフの永続性: メモリはフラット レコードではなく、接続されたエンティティとして格納されるため、エージェントは記憶しているものの間の関係を推論できます。
- エンティティの自動抽出: 会話は、スキーマを手動で設計することなく、構造化されたエンティティとリレーションシップに解析されます。
- セッション間の呼び戻し: ユーザー設定、ファクト、推論トレースはセッション間で保持され、コンテキスト プロバイダーを介して自動的に表示されます。
注
Neo4j は、Agent Framework 用に 2 つの個別の統合を提供します。 このプロバイダー (neo4j-agent-memory) は 、永続的なメモリ (エージェントの対話の格納と呼び戻し、エンティティの抽出、時間の経過に伴うナレッジ グラフの構築) 用です。 ベクター、フルテキスト、またはハイブリッド検索を使用した既存のナレッジ グラフからの GraphRAG については、 Neo4j GraphRAG コンテキスト プロバイダーを参照してください。
このプロバイダーは C# ではまだ使用できません。 使用例については、「Python」タブを参照してください。
前提条件
- Neo4j インスタンス (セルフホステッドまたは Neo4j AuraDB)
- デプロイされたチャット モデルを使用した Azure AI Foundry プロジェクト
- OpenAI API キーまたは Azure OpenAI デプロイ (埋め込みとエンティティ抽出用)
- 環境変数セット:
NEO4J_URI、NEO4J_PASSWORD、FOUNDRY_PROJECT_ENDPOINT、FOUNDRY_MODEL、OPENAI_API_KEY - 構成された Azure CLI 資格情報 (
az login) - Python 3.10 以降
Installation
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)
主要な機能
- 双方向: 呼び出し前に関連するコンテキストを自動的に取得し、応答後に新しいメモリを保存する
- エンティティ抽出: マルチステージ抽出パイプラインを使用して会話からナレッジ グラフを構築する
- ユーザー設定の学習: セッション間でユーザー設定を推論して格納する
- メモリ ツール: エージェントは、メモリを明示的に検索し、基本設定を記憶し、エンティティ接続を見つけることができます