AI VIDEO BRIEFING

AI 에이전트 지속 메모리 구현: LangChain·PostgreSQL 실습 가이드

LangChain과 PostgreSQL로 AI 에이전트에 지속 메모리를 붙이는 방법을 단계별로 정리한다. 인메모리 세이버와의 차이, 도커로 PostgreSQL 실행, 체크포인터 코드 수정과 기억 데모까지 다룬다.

AI 에이전트에 '지속 메모리' 더하기 — LangChain과 PostgreSQL로 대화를 기억시키기 영상 대표 이미지

핵심 메시지

  • 인메모리(단기) 메모리는 앱이 종료되면 대화 기록이 사라지지만, PostgreSQL을 저장소로 쓰는 지속 메모리는 앱을 재시작해도 이전 대화를 그대로 불러올 수 있다.
  • LangChain(LangGraph)의 PostgresSaver 체크포인터를 사용하면 에이전트가 주고받은 대화와 도구 실행 결과를 데이터베이스에 저장하고 다음 실행에서 다시 참조한다.
  • PostgreSQL은 도커로 손쉽게 띄울 수 있으며, compose 파일 하나로 이미지 내려받기·컨테이너 생성·실행을 한 번에 처리한다.
  • 기존 인메모리 세이버 코드에서 메모리 부분만 DB 접속 정보(DB URI)로 교체하면 되고, 에이전트 생성 방식 자체는 그대로 유지된다.
  • 지속 메모리는 멀티 사용자 지원과 확장이 쉬워, 실제 서비스에 올리는 프로덕션용 AI 에이전트에 적합하다.

쉽게 이해하기

유튜브 채널 'You Can Automate'가 AI 에이전트에 '지속 메모리(persistent memory)'를 붙이는 방법을 실습으로 보여준다. 앞선 편에서 다룬 단기 메모리인 인메모리 세이버(in-memory saver)는 코드 실행이 끝나면 저장된 대화가 모두 사라진다는 한계가 있었다. 이번 편은 그 대안으로 PostgreSQL 데이터베이스와 LangChain을 결합한다.

영상은 두 방식의 차이를 먼저 정리한다. 인메모리 방식은 데이터를 RAM에 담아 두기 때문에 애플리케이션이 멈추면 기록이 사라지고, 여러 사용자를 다루거나 확장하기에 부적합하다. 반면 데이터베이스에 대화를 저장하는 지속 메모리는 앱을 다시 켜도 기록이 남아 있어, 에이전트가 이전에 무슨 대화를 했고 어떤 결과를 냈는지 기억할 수 있다.

실습 환경은 도커로 구성한다. 발표자는 Colima 또는 Docker Desktop으로 도커를 설치한 뒤, compose 파일에 PostgreSQL 이미지·컨테이너 이름·사용자명·비밀번호·데이터베이스 이름(langgraph)·볼륨을 정의한다. 명령 한 번으로 이미지를 내려받아 컨테이너를 만들고 실행하며, 포트 5432 연결과 psql 접속 쿼리로 데이터베이스가 준비됐는지 확인한다.

코드 쪽에서는 requirements 파일에 PostgreSQL 접속용 라이브러리(psycopg 계열)와 LangGraph의 Postgres 체크포인트 라이브러리를 추가해 설치한다. 그다음 기존 코드에서 인메모리 세이버를 걷어내고 접속 문자열(사용자·비밀번호·로컬 호스트·포트·DB 이름)로 된 DB URI를 넣는다. 메인 함수에서 PostgresSaver로 연결을 맺고 setup을 호출한 뒤, 이전과 똑같은 방식으로 LLM·도구·시스템 프롬프트·체크포인터를 넘겨 에이전트를 만든다.

마지막으로 동작을 검증한다. '내 이름은 …'이라고 알려 준 뒤 코드를 다시 실행해 '내 이름이 뭐냐'고 물으면 에이전트가 데이터베이스에서 이전 대화를 찾아 답한다. 도구를 호출하는 '5와 10을 더해' 요청으로 결과 15를 만든 다음, '이전 결과가 뭐였냐'고 물으면 DB에 저장된 값을 불러와 답한다. 이렇게 LangChain·LLM·PostgreSQL이 함께 에이전트에 지속 메모리를 부여하는 흐름을 확인한다.

주요 인사이트

  • 메모리 방식 선택은 곧 아키텍처 선택이다. 프로토타입에는 인메모리로 충분하지만, 재시작 후에도 상태가 남아야 하는 실제 서비스라면 데이터베이스 기반 지속 메모리가 사실상 필수다.
  • 지속 메모리를 도입해도 에이전트 생성 로직은 거의 바뀌지 않는다. 바뀌는 지점은 '메모리 저장소'뿐이어서, 인메모리로 만든 프로토타입을 비교적 적은 수정으로 프로덕션 구조로 옮길 수 있다.
  • 도커 컴포즈로 데이터베이스를 정의해 두면 로컬 환경 구축이 재현 가능해진다. 같은 compose 파일이 윈도우와 맥에서 동일하게 동작한다는 점은 팀 협업과 온보딩에 유리하다.
  • 대화 전체를 그대로 출력하면 지저분해지므로, 메시지의 유형과 내용만 골라 보여 주는 등 저장된 기록을 어떻게 조회·표시할지도 함께 설계해야 한다.

자주 묻는 질문

인메모리 메모리와 지속 메모리의 가장 큰 차이는 무엇인가?

인메모리 방식은 데이터를 RAM에 담아 두어 앱이 종료되면 대화 기록이 모두 사라진다. 지속 메모리는 PostgreSQL 같은 데이터베이스에 저장하므로 앱을 다시 시작해도 이전 대화를 불러올 수 있고, 멀티 사용자와 확장에도 적합하다.

지속 메모리를 위해 어떤 도구를 사용하나?

PostgreSQL 데이터베이스와 LangChain(LangGraph)의 PostgresSaver 체크포인터를 사용한다. PostgreSQL은 도커(Colima 또는 Docker Desktop)로 실행하고, 파이썬에서는 PostgreSQL 접속 라이브러리와 LangGraph의 Postgres 체크포인트 라이브러리를 설치해 연결한다.

기존 인메모리 에이전트 코드를 많이 바꿔야 하나?

아니다. 영상에서는 메모리 부분만 교체한다. 인메모리 세이버를 제거하고 데이터베이스 접속 문자열(DB URI)을 넣은 뒤 PostgresSaver로 연결·setup을 하면 되고, 에이전트를 만드는 나머지 방식은 이전과 동일하다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식