✅ MemoryService 개요
📌 역할
- Session/State: 단기 기억 (현재 대화에만 국한됨)
- MemoryService: 장기 기억 (이전 대화들 또는 외부 지식 저장소)
주요 기능
기능 설명
add_session_to_memory(session) | 완료된 세션을 장기 기억에 저장 |
search_memory(app_name, user_id, query) | 과거 세션들 중에서 검색 쿼리에 맞는 내용 검색 |
🧠 MemoryService 구현체 종류
구현체 설명 영속성 추천 사용처
InMemoryMemoryService | 메모리 기반, 키워드 매칭 | ❌ | 테스트, 로컬 개발 |
VertexAiRagMemoryService | GCP Vertex AI RAG 기반, 의미 기반 검색 지원 | ✅ | 실 서비스, 대규모 검색 필요 시 |
🔁 Memory 사용 흐름
- 사용자 대화 진행: Session 내에서 정보 입력
- 세션 종료 시 메모리 등록:
- 다음 대화에서 과거 내용 질문:
예: "내가 가장 좋아하는 프로젝트가 뭐였지?" - Agent가 load_memory 툴 호출 → 검색 쿼리 전달
- MemoryService가 관련 정보 검색
- 검색 결과를 Agent에 전달
- Agent가 그 정보를 바탕으로 응답 생성
🔧 실습 예시 요약
🟡 Turn 1: 정보 수집
- 입력: "My favorite project is Project Alpha."
- Agent: InfoCaptureAgent
- Session 1 생성 → 대화 저장 → add_session_to_memory()
🟢 Turn 2: 기억 활용
- 질문: "What is my favorite project?"
- Agent: MemoryRecallAgent (with load_memory tool)
- 과정:
- Agent가 load_memory 호출
- MemoryService가 Session 1에서 정보 검색
- 결과 반환 → Agent 응답 생성:
- "Your favorite project is Project Alpha."
📌 핵심 메서드 요약
메서드 설명
add_session_to_memory(session) | 세션을 메모리에 저장 (이벤트에서 정보 추출) |
search_memory(app_name, user_id, query) | 특정 쿼리에 대해 세션 기반 지식 검색 |
load_memory 툴 | Agent가 메모리를 검색할 수 있도록 도와주는 내장 툴 |
🧠 설계 시 주의 사항
- Memory는 Session과 별도이며, 공유 가능한 장기 지식 저장소입니다.
- prefix 필요 없음 (단순 검색 기반 구조)
- InMemoryMemoryService는 앱 종료 시 모든 정보 소멸
✅ 마무리 요약
항목 내용
MemoryService 목적 | 과거 대화의 정보 검색을 통한 지식 유지 |
기본 흐름 | 세션 완료 → 메모리 등록 → 나중에 검색 및 활용 |
사용 방식 | add_session_to_memory(), load_memory, search_memory() 호출 |
주요 구현체 | InMemoryMemoryService (비영속), VertexAiRagMemoryService (영속, 의미기반) |
'ADK(Agent Development Kit) 관련' 카테고리의 다른 글
ADK - Callback (1) | 2025.07.17 |
---|---|
ADK - Sessions & Memory : State (0) | 2025.07.15 |
ADK - Sessions & Memory : Session (0) | 2025.07.14 |
ADK - Sessions & Memory (2) | 2025.07.12 |
ADK Runtime - RunConfig (2) | 2025.07.11 |