장기 메모리
장기 메모리 (Long-term memory)
대화가 끝나면 기억이 사라지는 에이전트가 있다면 아쉽겠죠? 사용자가 며칠 뒤 다시 와서 "지난번에 얘기했던 그 프로젝트"라고 말하는데 에이전트가 모른다면 난감할 거예요. **장기 메모리(long-term memory)**는 이런 문제를 해결하기 위해, 에이전트가 여러 대화와 세션을 넘나들며 정보를 저장하고 다시 떠올릴 수 있게 해줍니다. 이번 페이지에서는 그 방식과 활용법을 살펴볼게요.
단기 메모리와의 차이
장기 메모리는 단일 스레드에 국한되는 단기 메모리(short-term memory)와 달리, 스레드를 넘어서 영속되며 언제든지 다시 불러올 수 있어요. 장기 메모리는 LangGraph 스토어 위에 구축되는데, 이 스토어는 데이터를 네임스페이스(namespace)와 키(key)로 구성된 JSON 문서로 저장합니다.
사용법 (Usage)
에이전트에 장기 메모리를 추가하려면 스토어를 만들어서 create_agent에 전달하면 됩니다.
InMemoryStore— 메모리 기반, 개발 중에 유용PostgreSQL— 영구 저장, 프로덕션용
스토어가 준비되면 도구에서 runtime.store 매개변수를 사용해 스토어를 읽고 쓸 수 있어요. (구체적인 예시는 아래 "도구에서 장기 메모리 읽기"와 "도구에서 장기 메모리 쓰기"를 참고하세요.)
메모리 저장 방식 (Memory storage)
LangGraph는 장기 메모리를 스토어에 JSON 문서로 저장해요. 각 메모리는 커스텀 namespace(폴더처럼 생각하면 돼요)와 고유 key(파일 이름처럼 생각하면 돼요) 아래에 구성됩니다. 네임스페이스에는 보통 사용자 ID나 조직 ID 같은 라벨이 들어가서 정보를 정리하기 쉬워져요. 이 구조 덕분에 메모리를 계층적으로 조직할 수 있고, 콘텐츠 필터를 통해 네임스페이스를 넘나드는 검색도 지원됩니다.
메모리 스토어에 대한 더 자세한 내용은 Persistence 가이드를 참고하세요.
도구에서 장기 메모리 읽기 (Read long-term memory in tools)
에이전트가 작업을 처리하는 도중에 이전 대화에서 저장된 사용자 선호를 읽어야 할 때가 있어요. 이럴 때 runtime.store를 통해 저장된 메모리를 조회할 수 있습니다.
InMemoryStore— 스토어에 저장된 문서를namespace와key로 조회PostgreSQL— 동일한 방식으로 영구 스토어를 조회
도구에서 장기 메모리 쓰기 (Write long-term memory from tools)
새로운 정보를 배웠다면 그걸 저장해 두어야 나중에 쓸 수 있겠죠. 도구에서 runtime.store에 메모리를 기록할 수 있습니다.
InMemoryStore—namespace와key를 지정해 문서 저장PostgreSQL— 영구 스토어에 저장
이렇게 저장된 메모리는 다른 세션에서 다시 읽어올 수 있어서, 에이전트가 시간이 지나도 사용자 맥락을 유지할 수 있어요.