단일 Neo4j 그래프를 통해 에이전트가 단기, 장기 및 추론 메모리를 공유할 수 있는 방법과 이것이 에이전트 구축에 미치는 영향
AI 에이전트를 구축했다면 패턴을 알 것입니다. 각 에이전트는 자체 메모리, 컨텍스트, 사일로를 갖습니다. 데모에서는 잘 작동합니다. 하지만 동일한 문제에 대해 협력하기 위해 두 명의 상담원이 필요한 순간에는 문제가 발생합니다.
금융 서비스에서는 이는 이론적인 문제가 아닙니다. KYC 분석 담당자가 고객이 제재 대상 법인과 연관되어 있음을 발견하면 신용 평가 담당자는 이에 대해 즉시 알아야 합니다. 수동 핸드오프 이후나 임시 메시지 버스를 통해서가 아니라 두 에이전트가 읽고 쓸 수 있는 구조화된 공유 메모리를 통해 말입니다.
오늘 저는 우리가 정확히 어떻게 구축했는지 살펴보고 싶습니다. 즉, 단일 Neo4j 인스턴스를 통해 KYC 대리인, 신용 대리인 및 오케스트레이터가 세 가지 메모리 유형(단기, 장기, 추론)을 모두 공유하는 다중 에이전트 금융 서비스 시스템을 살펴보겠습니다.neo4j-에이전트-메모리 and AWS 스트랜드.
아키텍처: 그래프 1개, 에이전트 3개
핵심 아이디어는 간단합니다. 각 에이전트에 자체 메모리 저장소를 제공하는 대신 단일 Neo4j Aura 데이터베이스 인스턴스에 연결된 하나의 메모리 도구 세트를 만들고 해당 도구를 모든 에이전트에 전달합니다.
Strands 통합의 context_graph_tools() 함수는 다음 네 가지 도구를 반환합니다.
- 검색_컨텍스트,
- get_entity_graph,
- add_memory 및
- get_user_preferences.
모든 에이전트는 동일한 도구 인스턴스를 수신하므로 모두 호환되는 데이터 모델을 사용하여 동일한 공유 그래프에서 읽고 씁니다.
from neo4j_agent_memory.integrations.strands import context_graph_tools
# One shared tool set for all agents
tools = context_graph_tools(
neo4j_uri=os.environ["NEO4J_URI"],
neo4j_password=os.environ["NEO4J_PASSWORD"],
embedding_provider="bedrock",
aws_region="us-east-1",
)
# Each agent gets the SAME tools
kyc_agent = Agent(model=MODEL, tools=tools, system_prompt=KYC_PROMPT)
credit_agent = Agent(model=MODEL, tools=tools, system_prompt=CREDIT_PROMPT)
orchestrator = Agent(model=MODEL, tools=tools, system_prompt=ORCH_PROMPT)
그게 다야. 이것이 바로 공유 메모리 계층입니다. 메시지 대기열, 게시/구독, 직렬화 형식이 없습니다. 각 에이전트는 그래프에 씁니다. 다른 모든 상담원은 다음 도구 호출 시 이를 읽을 수 있습니다.
규정 준수에 공유 메모리가 중요한 이유
공유 메모리가 없는 기존 다중 에이전트 시스템에서는 각 에이전트가 독립적으로 작동합니다. 규제 대상 산업에서는 세 가지 구체적인 문제가 나타납니다.
- 중복된 엔터티 추출.KYC 대리인과 신용 대리인은 모두 동일한 고객 데이터를 처리하여 동일한 개체를 독립적으로 추출할 수 있습니다. 이로 인해 계산이 낭비되고 추출이 다를 때 불일치가 발생합니다.
- 맹점.KYC 상담원은 고객에게 의심스러운 활동에 대한 플래그를 표시하지만 신용 상담원은 해당 플래그를 전혀 볼 수 없습니다. 검토를 위해 보류되어야 하는 대출을 승인합니다.
- 감사 추적이 없습니다.규제 기관에서는 "대리인이 이 신용 신청을 승인한 이유는 무엇입니까?"라고 묻습니다. 신용 대리인의 추론은 KYC 대리인의 조사 결과와 결코 연결되지 않았기 때문에 답변할 수 없습니다.
공유 그래프 메모리는 세 가지를 모두 해결합니다. 엔터티는 한 번 추출되고 중복이 제거됩니다. 모든 에이전트의 결과는 다른 모든 에이전트에게 즉시 표시됩니다. 그리고 추론 추적은 이를 알려주는 엔터티 및 메시지에 연결되어 완전한 출처 체인을 생성합니다.
작동 방식: KYC 쓰기, 신용 읽기
실제로 공유 메모리가 어떤 모습인지 보여주기 위해 시스템을 통해 구체적인 상호 작용을 추적해 보겠습니다.
1단계: KYC에서 신규 고객 처리
사용자가 KYC 상담사에게 고객 데이터를 제출합니다.
"취리히에 본사를 둔 Meridian Capital LLC의 CEO인 새로운 고객 John Mercer. 초기 예치금 240만 달러로 계좌가 개설되었습니다."
KYC 에이전트의 시스템 프롬프트는 모든 결과에 대해 메모리 도구를 사용하도록 지시합니다. 그것:
- 고객 데이터를 저장하기 위해 add_memory를 호출합니다. 이 도구는 John Mercer(:Person), Meridian Capital LLC(:Organization), Zurich(:Location)와 같은 항목을 자동으로 추출합니다.
- 관계를 생성합니다: WORKS_AT, LOCATED_IN.
- 높은 초기 입금액을 위험 지표로 표시하고 해당 결과를 저장합니다.
2단계: 신용 대리인이 KYC 조사 결과를 확인합니다.
신용 대리인이 나중에 다음을 받는 경우:
“John Mercer의 신용 신청을 평가하고 500만 달러의 신용 한도를 요청합니다.”
it:
- “John Mercer” 에 대한 search_context를 호출하고 높은 예금 플래그를 포함하여 KYC 상담원의 조사 결과를 즉시 찾습니다.
- Meridian Capital의 모든 연결(취리히 위치, CEO 관계, 그래프에 연결된 기타 엔터티)을 보려면 get_entity_graph를 호출합니다.
- 신용 신청 데이터뿐만 아니라 전체 그림을 바탕으로 신용 결정을 내립니다.
- add_memory를 호출하여 완전한 추론으로 결정을 기록하고 그래프에 추론 추적을 생성합니다.
주요 통찰력:신용 대리인은 KYC 대리인에게 결과를 요청할 필요가 전혀 없습니다. 공유 그래프를 통해 찾았습니다. 이것이 공유 메모리와 메시지 전달의 차이입니다. 지식은 항상 존재하며 언제든지 모든 에이전트가 쿼리할 수 있습니다.
출처 체인: 그래프를 통해 감사 가능성을 구현하는 방법
이것이 바로 그래프 아키텍처가 실제로 성과를 거두는 부분입니다. 준법감시인이 묻는 경우“이 신용대출 신청이 승인된 이유는 무엇입니까?”, 결정에서 공유 엔터티를 거쳐 원래 KYC 조사 결과로 돌아가는 단일 Cypher 쿼리로 응답할 수 있습니다.
// Trace a credit decision back to its source findings
MATCH (decision:Message)
WHERE decision.content CONTAINS 'credit decision'
MATCH (decision)-[:MENTIONS]->(entity:Entity)
MATCH (entity)<-[:MENTIONS]-(finding:Message)
WHERE finding.createdAt < decision.createdAt
RETURN decision.content AS decision,
entity.name AS shared_entity,
finding.content AS source_finding
ORDER BY finding.createdAt
벡터 전용 메모리 시스템에서는 신용 결정과 KYC 결과가 모두 임베딩으로 저장됩니다. 이들 사이의 연결을 찾으려면 유사성 검색을 수행하고 벡터가 임베딩 공간에서 충분히 가깝기를 바랍니다. 이것이 확률적 검색입니다. 작동할 수도 있고 작동하지 않을 수도 있습니다.
그래프를 이용하면,연결이 명시적이고 결정적입니다.. 신용 결정은 John Mercer를 직접 참조합니다. John Mercer는 KYC 조사 결과와 구체적으로 연관되어 있습니다. 횡단은그것을 찾기 위해. 조정할 유사성 임계값도 없고 순위를 다시 매길 결과도 없습니다. 필요한 출처 체인을 정확히 반환하는 그래프 순회만 하면 됩니다.
그래프는 이해를 처리합니다. 벡터는 유사성을 처리합니다.Neo4j는 누가 누구와 연결되어 있는지, 어떤 결정이 어떤 엔터티를 참조하는지 등 구조화된 관계를 저장합니다. 벡터 검색은 의미상 유사한 콘텐츠를 찾습니다. 이를 통해 에이전트는 정확한 그래프 순회와 퍼지 의미적 회상을 모두 제공합니다. Neo4j Agent Memory는 두 가지를 모두 제공합니다.
세 가지 메모리 유형
시스템의 모든 에이전트는 3개의 메모리 레이어를 읽고 씁니다. 모두 Neo4j에 노드와 관계로 저장됩니다.
— 대화 메시지 및 도구 호출 결과. 모든 에이전트의 상호작용은 세션당 [:NEXT] 체인으로 연결된 (:Message) 노드로 저장됩니다. 한 상담원이 고객과 대화하면 다른 모든 상담원이 말한 내용을 볼 수 있습니다.
— POLE+O 모델(사람, 조직, 위치, 이벤트, 개체), 사용자 기본 설정 및 엔터티 간의 입력된 관계를 사용하여 추출된 엔터티입니다. KYC 상담원이 'John Mercer'를 'Meridian Capital'에서 일하는 사람:Person who WORKS_AT로 추출하면 시스템의 모든 상담원이 해당 지식을 즉시 사용할 수 있습니다.
— 결정 추적, 도구 호출 순서 및 결과. (:ReasoningTrace) → [:HAS_STEP] → (:ReasoningStep) 체인으로 저장되며 각 결정을 알리는 엔터티 및 메시지에 대한 출처 링크가 포함되어 있습니다. 이것이 상담원의 행동을 설명하고 감사할 수 있게 만드는 것입니다.
추론 기억이 중요한 이유:대부분의 에이전트 메모리 시스템은 대화와 엔터티를 처리합니다. 그러나 구조화된 추론 추적이 없으면 규제 기관이 항상 묻는 질문에 답할 수 없습니다. 에이전트가 이러한 결정을 내린 이유는 무엇입니까? 결정을 알리는 엔터티 및 메시지에 대한 출처 링크를 포함하여 일류 그래프 노드로 저장된 추론 메모리는 AI 시스템을 블랙박스에서 감사 가능한 시스템으로 바꿔줍니다..
그래프 메모리가 제공하는 것
에이전트가 Neo4j 컨텍스트 그래프를 공유하면 플랫 메모리 저장소나 벡터 전용 시스템에서는 불가능한 기능을 얻을 수 있습니다.

- 에이전트 간 엔터티 연결.한 에이전트가 추출한 엔터티는 다른 모든 에이전트에 자동으로 표시됩니다. 통합 작업이나 동기화 작업이 없습니다. 그래프를 공유합니다.
- 그래프로 연결된 출처.모든 결정은 원래 결과를 참조하는 엔터티를 통해 추적됩니다. 단일 Cypher 쿼리는 전체 감사 추적을 재구성합니다.
- 결정적 검색.그래프 순회는 확률적 유사성 일치가 아닌 정확한 연결을 반환합니다. 규정 준수가 결정에 영향을 미친 내용을 알아야 할 경우 대답은 확실합니다.
- 쿼리 가능한 메모리.모든 것이 Neo4j에 저장되므로 전체 컨텍스트 그래프에 대한 분석, 보고, 패턴 감지 등 모든 에이전트의 전체 메모리에 대해 임의의 Cypher 쿼리를 실행할 수 있습니다.
- 일류 시민으로서의 추론 흔적.결정 추적은 로그 파일에 묻히지 않습니다. 이는 정보를 제공하는 항목 및 메시지와의 관계가 입력된 그래프 노드입니다.
- 강력한 보안 보장:데이터베이스 액세스 제어 메커니즘은 민감한 데이터를 보호하고 필요에 따라 사람에게 에스컬레이션 계층을 적용하여 작업을 수행하는 데 필요한 최소한의 권한만 상담사에게 제공할 수 있습니다.
직접 사용해 보세요
전체 예는 GitHub에서 확인할 수 있습니다.
git clone https://github.com/neo4j-labs/agent-memory.git
cd agent-memory/examples/aws-financial-services-advisor
pip install neo4j-agent-memory[aws,strands] python-dotenv
# Configure .env with Neo4j Aura + AWS credentials
python main.py
당신은Neo4j Aura 인스턴스(프리 티어 작동) 및 AWS 계정기반암 모델 액세스. 전체 설정에는 약 30분이 소요됩니다.
예제의 모든 파일에 대한 더 자세한 기술 연습을 보려면 다음을 참조하세요.단계별 튜토리얼Neo4j 에이전트 메모리 문서에 있습니다.
우리는 이제 막 시작했습니다. 당신이 뭔가를 구축한다면neo4j-에이전트-메모리, 우리는 그것을 보고 싶습니다 — 공유커뮤니티 포럼또는 GitHub에서 PR을 엽니다. 컨텍스트 그래프는 기여할 때마다 증가하며, 우리도 마찬가지입니다.
자원
- 선적 서류 비치
- AWS Strands 메모리 통합 안내서
- AWS 스트랜드 / AWS 에이전트 코어 Neo4j 통합
- Strands 에이전트 튜토리얼
- 지식 그래프