이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
TL;DR
Neo4j 그래프 데이터베이스를 활용하여 AI 에이전트의 기억력을 고도화하는 방법을 다루는 튜토리얼이다. LangChain 프레임워크와 미들웨어 패턴을 결합하여 대화 이력뿐만 아니라 사용자의 선호도와 에이전트의 사고 과정(Reasoning)을 그래프 구조로 체계적으로 저장하고 관리하는 아키텍처를 제시한다. 실습을 통해 에이전트가 과거의 추론 패턴을 조회하여 현재의 문제 해결에 활용하고 사용자와의 대화를 통해 지식을 지속적으로 업데이트하는 과정을 상세히 확인할 수 있다.
챕터별 상세
에이전트 메모리 구현 개요
이전 강의에서 다룬 Short-term, Long-term 메모리의 개념을 복습하고 이번 실습에서는 LangChain 프레임워크를 사용하여 실제 동작하는 대화형 에이전트를 구축한다. 에이전트가 대화 맥락을 유지하고 사용자의 정보를 지속적으로 학습할 수 있도록 Neo4j 그래프 데이터베이스를 메모리 저장소로 활용한다. 특히 에이전트의 사고 과정인 Reasoning Memory를 어떻게 구조화하여 저장할지가 이번 튜토리얼의 핵심이다.
에이전트 구조 및 미들웨어 설계
에이전트가 안전하고 효율적으로 동작하도록 미들웨어 패턴을 도입하여 실행 전후에 추가 로직을 배치하는 아키텍처를 설계한다. `before_agent` 위치에서 사용자의 선호도(Preference) 정보를 Neo4j로부터 미리 로드하여 에이전트의 상태값에 저장한다. 이렇게 로드된 정보는 모델 호출 시 시스템 메시지에 동적으로 주입되어 에이전트가 사용자의 취향에 맞는 답변을 생성하도록 돕는다.
에이전트 정의 및 프롬프트 설정
LangChain의 `create_agent` 함수를 사용하여 `gpt-4o-mini` 모델 기반의 에이전트를 생성하고 시스템 프롬프트를 설정한다. 프롬프트에는 에이전트가 메모리를 어떻게 관리하고 도구를 사용해야 하는지에 대한 상세 가이드를 포함한다. 또한 대화의 연속성을 보장하기 위해 `MemorySaver`를 체크포인터로 등록하여 세션별 상태 관리가 가능하게 구현한다.
python
agent = create_agent(
llm="openai:gpt-4o-mini",
tools=tools,
system_prompt=base_prompt,
middleware=middleware,
checkpointer=checkpointer,
)LangChain의 create_agent를 사용하여 미들웨어와 체크포인터가 포함된 에이전트를 생성한다.
에이전트 도구 및 미들웨어 구현
에이전트가 외부 정보를 탐색하고 메모리를 조작할 수 있도록 `tavily_search`, `search_memory`, `save_preference`, `save_fact` 등 5가지 핵심 도구를 정의한다. `load_memory_context` 미들웨어는 Neo4j DB와 연동되어 현재 사용자의 ID를 기준으로 저장된 모든 선호도 데이터를 조회한다. 조회된 데이터는 `memory_context`라는 키로 관리되며 모델 호출 시 프롬프트의 최상단에 위치하게 된다.
추론 과정 저장 로직 상세
에이전트의 사고 단계를 기록하기 위해 `start_conversation_trace`와 `create_reasoning_step` 함수를 구현한다. 에이전트가 질문을 받았을 때 어떤 생각을(Thought) 하고 어떤 도구를 호출했는지(Tool Call)에 대한 이력을 Neo4j의 `ReasoningTrace` 노드로 연결하여 저장한다. 이는 단순한 대화 로그를 넘어 에이전트가 문제를 해결해 나가는 논리적 흐름을 그래프 구조로 보존하는 방식이다.
python
@before_agent(state_schema=MemoryAwareState)
async def load_memory_context(state: MemoryAwareState, runtime: Runtime) -> dict[str, Any] | None:
# ... Neo4j 쿼리로 사용자 preference 로드 로직 ...
return {"memory_context": memory_context}에이전트 실행 직전에 사용자의 선호도 정보를 Neo4j에서 불러오는 미들웨어 함수이다.
에이전트 실행 및 워크플로우 시연
구현된 에이전트에게 질문을 던져 전체 워크플로우가 정상적으로 동작하는지 터미널에서 시연한다. 에이전트는 실행 직후 미들웨어를 통해 사용자의 기존 정보를 불러오고 질문의 의도를 파악하여 웹 검색 도구를 호출한다. 검색 결과와 기존 메모리 정보를 종합하여 답변을 생성하며 이 모든 과정이 실시간 로그로 출력되는 것을 확인할 수 있다.
Neo4j 그래프 데이터 시각화
Neo4j 브라우저에서 Cypher 쿼리를 실행하여 대화 세션과 메시지, 엔티티들이 그래프 형태로 어떻게 연결되었는지 시각적으로 분석한다. `MATCH (c:Conversation) ... RETURN path` 쿼리를 통해 대화 노드에서 파생된 메시지 노드와 그 안에서 추출된 엔티티 노드 간의 관계를 확인한다. 이를 통해 에이전트가 대화 중 언급된 고유 명사들을 어떻게 지식화하여 저장하는지 파악할 수 있다.
Fact 저장 및 컨텍스트 활용 검증
사용자가 제공한 새로운 정보가 `save_fact` 도구를 통해 Neo4j에 저장되고 이후 질문에서 어떻게 활용되는지 검증한다. 저장된 사실 정보는 `valid_from`과 `valid_until` 속성을 통해 유효 기간이 관리되며 에이전트는 `search_memory` 도구로 이 정보를 다시 불러와 답변에 반영한다. 이는 에이전트가 사용자와의 대화를 통해 지식을 지속적으로 업데이트하고 확장할 수 있음을 보여준다.
text
MATCH (c:Conversation)
WITH c ORDER BY c.updated_at DESC LIMIT 1
MATCH path = (c)-[:HAS_MESSAGE*1..5]-(n)
RETURN path최신 대화 세션과 연결된 메시지 및 엔티티 노드들을 조회하는 Cypher 쿼리이다.
과거 추론 패턴 조회 및 학습
에이전트가 이전에 수행했던 유사한 작업의 추론 과정(Reasoning Trace)을 조회하는 기능을 살펴본다. `get_similar_traces` 메서드를 사용하면 특정 키워드와 관련된 과거의 사고 단계와 도구 사용 성공 사례를 불러올 수 있다. 에이전트는 이러한 과거 경험을 학습 데이터로 활용하여 복잡한 업무 상황에서 더 정확한 의사결정을 내릴 수 있는 기반을 마련한다.
용어 해설
- Neo4j 에이전트 메모리(Neo4j Agent Memory)
- — Neo4j에서 제공하는 에이전트용 메모리 관리 라이브러리로, 대화 이력과 지식을 그래프 구조로 저장하여 에이전트의 추론 능력을 강화한다.
- 컨텍스트 그래프(Context Graph)
- — 에이전트가 대화 중 참조하는 정보들을 노드와 관계로 연결한 그래프로, 단순 텍스트 검색보다 복잡한 맥락 파악을 가능하게 한다.
- 추론 메모리(Reasoning Memory)
- — 에이전트가 답변을 생성하기 위해 거친 사고 과정(Thought)과 도구 호출(Tool Call) 이력을 기록하여 과거의 성공 패턴을 학습하게 돕는다.
- 사이퍼(Cypher)
- — Neo4j 그래프 데이터베이스에서 데이터를 조회하고 조작하기 위해 사용하는 선언형 쿼리 언어이다.
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 09. 02.수집 2026. 09. 02.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.