간략한 요약
이 비디오에서는 LangChain에서 메모리를 다루는 방식에 대해 설명합니다. 핵심은 메모리가 애플리케이션에 특화되어야 하며, LangChain은 이를 위해 필요한 로우 레벨 컴포넌트를 제공한다는 것입니다. 메모리는 크게 단기 메모리와 장기 메모리로 나뉘며, 각각 체크포인트와 스토어라는 추상화를 통해 구현됩니다.
- 메모리는 애플리케이션에 특화되어야 함
- 단기 메모리는 체크포인트를 통해 관리
- 장기 메모리는 스토어를 통해 관리
메모리 소개
LangChain은 에이전트 분야에서 메모리가 매우 중요하다고 생각하며, L 그래프에 메모리 기능을 추가하여 메모리를 활용한 애플리케이션을 구축할 수 있도록 지원합니다. 일반적인 메모리 추상화나 서비스보다는, 사용자가 직접 메모리를 구현할 수 있도록 로우 레벨 컴포넌트를 제공하고, LangChain의 접근 방식을 공유하여 최적의 메모리 구현을 돕는 것을 목표로 합니다.
단기 메모리
메모리는 크게 단기 메모리와 장기 메모리로 나뉩니다. 단기 메모리는 주로 대화 메모리와 관련되며, LangChain의 체크포인트는 특정 스레드(대화)의 메모리를 유지하는 데 사용됩니다. 체크포인트는 링그래프에서 단기 메모리를 구현하는 방법입니다.
단기 메모리 기술
단기 메모리를 위한 일반적인 기술로는 메시지 필터링이 있습니다. AI와의 상호 작용이 많아질수록 메시지 목록이 길어지므로, 메시지를 필터링하는 것이 중요합니다. 기본적인 필터링 외에도 토큰 수나 메시지 유형에 따라 필터링할 수 있습니다. 또한, 메시지 요약을 통해 이전 메시지를 요약하고, 이를 그래프 상태의 속성으로 저장할 수도 있습니다.
장기 메모리
장기 메모리를 애플리케이션에 통합하는 방법은 크게 두 가지입니다. 첫째, 핫 패스(hot path)에서 애플리케이션 로직 자체가 메모리를 업데이트하는 방식입니다. 둘째, 백그라운드에서 별도의 프로세스가 메모리를 업데이트하는 방식입니다. 핫 패스는 메모리 업데이트가 투명하고 실시간으로 반영되지만, 지연 시간을 추가하고 애플리케이션 로직을 복잡하게 만들 수 있습니다. 백그라운드 방식은 지연 시간이 없고 로직 분리가 가능하지만, 사용자에게 업데이트를 알리기 어렵고 업데이트 시점을 결정해야 합니다.
장기 메모리 형태
장기 메모리의 형태로는 크게 세 가지가 있습니다. 첫째, 시스템 프롬프트의 일부로 삽입되는 지침(instructions)입니다. 둘째, 키-값 쌍의 딕셔너리 형태인 프로필(profile)입니다. 셋째, 객체 목록입니다. 지침은 사용자 피드백에 따라 업데이트될 수 있으며, 프로필은 사용자 대화를 기반으로 추출된 정보를 저장하고 업데이트합니다. 객체 목록은 좋아하는 식당 목록과 같이 여러 항목을 기억해야 할 때 유용합니다.
결론
LangChain은 메모리가 개인화되고 차별화된 애플리케이션을 구축하는 데 핵심적인 역할을 한다고 생각합니다. 메모리는 애플리케이션에 맞게 커스터마이징되어야 하며, LangChain은 이를 위한 다양한 도구를 제공하고자 합니다.

