개요
이 영상은 AI 에이전트가 대화의 맥락과 사용자 정보를 지속적으로 기억하기 위해 필요한 “에이전트 메모리”를, 컨텍스트 그래프를 통해 구현하는 방법을 다룹니다. 발표자는 그래프, 지식 그래프, 컨텍스트 그래프의 차이를 정리한 뒤, Neo4j Agent Memory가 제공하는 단기·장기·추론 메모리라는 세 가지 메모리 계층의 개념과 구조를 설명합니다. LLM의 컨텍스트 윈도우만으로는 사용자의 선호도나 과거 작업 경로를 보존할 수 없기 때문에, 그래프 구조로 확장된 컨텍스트를 제공하는 접근이 왜 필요한지를 독자 관점에서 짚어 줍니다.
이 영상은 박나연이 진행하는 콘텐츠로, 컨텍스트 그래프를 에이전트 메모리로 사용하는 주제를 총 3편의 강의 시리즈로 구성했으며, 본 영상은 그중 첫 번째 개념 이해 편입니다.
핵심 내용
그래프 vs 지식 그래프 vs 컨텍스트 그래프
발표자는 먼저 세 가지 그래프 용어를 단계적으로 구분합니다. 그래프는 관계를 표현하는 하나의 방식이며, 데이터를 표(행과 열) 형태가 아니라 누가 누구와 어떻게 연결되어 있는지 관계 중심으로 저장합니다. 지식 그래프는 여기에 특정 도메인이나 비즈니스적 의미를 더한 형태로, 예를 들어 “A라는 직원이 B라는 공급 업체에 다니고 있고, 이 회사는 특정 산업에 속해 있다”와 같이 A와 B가 단순히 연결되어 있다는 사실을 넘어 그 관계가 어떤 의미를 갖는지까지 그래프상에 담아냅니다.
컨텍스트 그래프는 여기서 한 단계 더 나아간 개념입니다. 대량의 데이터를 지식 그래프로 저장했더라도 크기가 크기 때문에 이를 매번 AI에 전달할 수는 없습니다. 그래서 컨텍스트 그래프는 지금 당장 AI 시스템이 어떤 정보를 필요로 하는지를 동적으로 탐색해 전달하는 것을 목표로 합니다. 이를 위해 그래프에 시간 정보나 권한 정보 같은 부가 정보를 추가해, 현재 사용자·현재 작업·현재 상황에 맞는 서브 그래프를 동적으로 구성해 AI 시스템에 전달합니다. 영상에서는 올해 2월 Neo4j 컨텍스트 그래프 밋업에서 윌리엄 라이언이 이를 “의사 결정 과정을 포착하도록 특별히 설계된 지식 그래프”라고 설명했다고 소개합니다.
세 가지 메모리 계층 (단기·장기·추론)
Neo4j Agent Memory는 컨텍스트 그래프를 기반으로 세 가지 메모리를 제공합니다. 단기 메모리는 메시지, 세션 정보, 현재 대화의 요약을 담습니다. 장기 메모리는 과거 대화에서 추출된 엔티티, 사용자의 선호도, 이미 알고 있는 사실(팩트) 정보를 지속적으로 관리합니다. 추론(리즈닝) 메모리는 에이전트가 어떤 작업 경로를 거쳤는지, 어떤 도구를 호출했는지, 어떤 결정을 내렸는지를 저장합니다.
이 세 계층은 서로 연결되어 활용된다는 점이 핵심입니다. 단순히 메모리를 청크 단위로만 전달하는 것이 아니라, 지금 요청에서 언급된 엔티티가 과거 어떤 대화에서 다루어졌는지, 그리고 과거 유사한 질문에 대해 에이전트가 어떤 작업 경로로 수행했는지를 연결해 함께 전달할 수 있습니다.
POLE+O 기반 엔티티 추출
단기 메모리를 저장할 때 사용하는 add_message 메서드는 메시지 노드를 생성한 뒤, 내부 파이프라인을 통해 메시지 내용에서 엔티티를 추출합니다. 이때 따르는 기본 온톨로지이자 그래프 스키마가 POLE+O 모델입니다. POLE은 Person(사람), Object(오브젝트), Location(장소), Event(이벤트)를 가리키며, 여기에 Organization(조직)이 추가된 형태입니다. 예를 들어 “김철수”라는 사람이 메시지에 있으면 person이라는 엔티티 라벨과 individual이라는 서브 라벨을 갖게 됩니다.
엔티티 추출은 크게 세 가지 방법을 조합합니다. 첫 번째는 인물·조직·장소 같은 일반적인 유형을 빠르게 인식하는 데 강점이 있는 방식이고, 두 번째는 특정 도메인 어휘에 더 강한 글라이너 방식이며, 세 번째는 LLM을 통한 추출입니다. 앞 단계에서 결과가 나오면 뒤 단계를 실행하지 않거나 실패 시 LLM으로 폴백하는 식으로 동작하며, 성능이 필요하면 비용을 감안하고 LLM만 사용하도록 설정할 수도 있습니다. 세 방법의 결과는 병합·중복 제거 로직을 거치는데, 같은 “코덱스”라도 어떤 것은 에이전트, 어떤 것은 LLM 모델 자체를 의미할 수 있으므로 애매하면 관계로만 연결해 두고, 회사 애플과 과일 애플처럼 명확히 다르면 별개 노드로 생성합니다.
실전 가이드
영상의 개념을 실제로 이해하고 적용하려면 다음 흐름을 따라볼 수 있습니다.
먼저 단기 메모리 구조부터 파악합니다. 대화 노드가 저장되면서 메시지들이 next message 관계로 순차 연결되고, 각 메시지 노드는 역할(user/assistant), 콘텐츠, 타임스탬프, 소속 세션, 그리고 벡터 검색을 위한 임베딩 속성을 갖습니다. 이 구조를 이해하면 대화가 어떻게 그래프로 표현되는지 감을 잡을 수 있습니다.
다음으로 장기 메모리를 설계합니다. 사용자의 선호도는 preference 관계로 저장하고(예: “존은 가벼운 신발을 선호한다”, “나이키 제품을 선호한다”, “서울에 살고 있다”), 주어-술어-목적어 형태의 정보는 fact 노드로 저장합니다. 이렇게 엔티티가 메시지와 연결되면 특정 엔티티를 주제로 얼마나 많은 대화가 오갔는지 확장성 있게 조회할 수 있습니다.
마지막으로 추론 메모리를 붙입니다. 현재 메시지에 reasoning trace 노드를 추가해 답변 도출까지 밟은 스텝, 호출한 도구, 도구의 실행 결과를 저장합니다. 발표자는 타빌리 서치 같은 웹 검색 도구를 붙여 테스트했을 때 해당 도구를 사용한 전체 대화 흐름과 다중 도구 호출 과정을 모두 연결해 확인할 수 있었다고 설명합니다.
비판적 검토
이 영상은 그래프 → 지식 그래프 → 컨텍스트 그래프로 이어지는 개념을 단계적으로 쌓아 올리고, 단기·장기·추론이라는 세 메모리 계층을 실제 저장 구조와 함께 설명한다는 점이 인상적입니다. 특히 POLE+O 스키마와 엔티티 병합·중복 제거 로직처럼 실제 구현에서 마주치는 디테일을 예시와 함께 다룬 점이 유용합니다.
다만 본 영상은 시리즈의 첫 번째 개념 이해 편이라 실제 코드 실습이나 성능·비용 트레이드오프에 대한 정량적 비교는 다음 편으로 미뤄져 있습니다. 실무 적용을 고려하는 분이라면 엔티티 추출에서 LLM 사용 시 발생하는 비용, 그래프 규모가 커질 때의 조회 성능, 그리고 컨텍스트 그래프에서 “지금 필요한 서브 그래프”를 선별하는 기준 설계를 별도로 검토하는 것이 좋겠습니다.
핵심 요점
- 그래프는 관계를 표현하는 방식이고, 지식 그래프는 여기에 도메인 의미를 더한 것이며, 컨텍스트 그래프는 지금 필요한 정보를 동적으로 선별해 전달하는 것이라는 계층 구분이 전체 이해의 출발점입니다.
- LLM의 컨텍스트 윈도우만으로는 사용자 선호도·특징·작업 경로를 보존할 수 없으므로, 그래프 구조로 확장된 컨텍스트를 제공하는 에이전트 메모리가 필요합니다.
- Neo4j Agent Memory는 단기·장기·추론 세 가지 메모리를 제공하며, 이를 서로 연결해 과거 엔티티와 작업 경로까지 함께 활용하는 것이 핵심 가치입니다.
- 엔티티 추출은 POLE+O 스키마를 따르며, 빠른 인식 방식·글라이너·LLM을 조합하고 병합·중복 제거를 거쳐 정확도와 비용의 균형을 맞춥니다.
- 추론 메모리는 에이전트가 최종 결과에 도달하기까지의 전체 인과 관계(스텝, 도구 호출, 결과)를 저장하므로, 사후 평가와 디버깅 관점에서도 활용 가치가 큽니다.
참고자료
- Neo4j Agent Memory 공식 문서: https://neo4j.com/labs/agent-memory/
- Neo4j Labs Agent Memory GitHub: https://github.com/neo4j-labs/agent-memory
- Create Context Graph 도메인 카탈로그: https://create-context-graph.dev/docs/reference/domain-catalog
- Neo4j 그래프 에이전트 메모리 시스템 이해: https://www.decodingai.com/p/understanding-neo4j-graph-agent-memory-system