LangGraph, Graphiti 및 장기 기억을 활용한 강력한 에이전트 메모리 구축
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
- AI 에이전트 개발자, 데이터 과학자, 대규모 언어 모델(LLM) 구현자
- 난이도: 중급~고급 (지식 그래프, 동적 메모리 시스템 경험 필요)
핵심 요약
- Graphiti는 시간에 따른 동적, 시기 인식 지식 그래프를 생성하여 정적 RAG 시스템의 한계를 극복
- LangGraph와 장기 기억(Long Term Memory) 통합으로 복잡한 대화 흐름 및 실시간 데이터를 처리
- Graphiti는 구조화/비구조화 데이터 모두를 처리하고 시간, 풀 텍스트, 의미, 그래프 알고리즘 기반 검색 지원
섹션별 세부 요약
1. 문제 정의: 정적 지식 베이스의 한계
- RAG 시스템의 단점: 정적 지식 베이스로 새로운 정보/변화 대응 불가
- 사례: 사용자가 새로운 주제를 질문하면 구식 데이터 또는 불완전한 답변 제공
- 그래프/관계형 데이터베이스 비교: Cypher와 SQL의 구조 차이로 검색 오류 발생
2. Graphiti의 동적 지식 그래프 기능
- 시기 인식 그래프: 시간, 관계, 의미 기반으로 복잡한 실시간 관계 모델링
- 데이터 처리: 구조화/비구조화 데이터 모두 인식 및 통합
- 예시: 사용자 입력을 "에피소드"로 처리, 유저 프로필 및 브랜드 노드 연결
3. 시스템 구현 예시: Samsung Galaxy S23 과열 문제 해결
- Plot Node Ingestion: 사용자 메시지를 새로운 노드로 추가, 시점 기록
- Entity Extraction:
- Phone model: Samsung Galaxy S23
- Problem: 과열
- Previous Solution: 백그라운드 앱 정리 (실패)
- Community Detection: Samsung Galaxy S23 관련 정보를 커뮤니티로 분류
4. 동적 정보 업데이트 및 검색
- Community Detection: 과열 문제 관련 정보를 커뮤니티로 분류
- Dynamic Update: "백그라운드 앱 정리" 해결 상태를 "미해결"로 변경
- Context Retrieval:
- 풀 텍스트 검색: "과열", "Samsung Galaxy S23"
- 코사인 유사도 검색: "배터리 과열", "기기 과열" 유사 문제
- BFS 검색: 커뮤니티 내 원인/해결책 탐색
5. 응답 생성 및 지식 업데이트
- Response Generation:
- 시스템 업데이트 확인, 충전 중 사용 금지, 고사양 기능 비활성화 권장
- 사용자 질문: 특정 앱/게임 시 과열 여부, 온도 경고 발생 여부 확인
- Knowledge Update: 사용자가 5G 비활성화로 문제 해결 시, 해결책 업데이트
6. GraphRAG vs Graphiti 비교
- GraphRAG: 정적 지식 그래프로 검색 효율성 향상
- Graphiti: 동적 메모리 시스템으로 시간 경과에 따른 정보 업데이트
- 적용 사례: 고객 서비스, 의료, 금융 등 변화하는 데이터에 적합
7. 코드 구현 및 설정
- 환경 구성:
```bash
pip install graphiti-core langchain-openai langgraph langchain_core ipywidgets
```
- 라이브러리 임포트:
```python
import asyncio
import json
import logging
from graphiti_core import Graphiti
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph
```
- 로깅 설정: ERROR 수준으로 로깅, INFO 수준의 콘솔 출력
결론
- Graphiti는 동적 지식 그래프로 실시간 정보 처리 및 과거 대화 기억을 가능하게 하며, RAG보다 유연한 시스템 구축
- 실무 팁: 사용자 입력을 노드로 매핑, 커뮤니티 기반 검색, 5G/배터리 설정 등 특정 조치 추천
- 핵심 구현: LangGraph + Graphiti + 장기 기억 통합으로 AI 에이전트의 메모리 한계 극복