AI VIDEO BRIEFING

AI 에이전트 시맨틱 메모리 구현법: 임베딩과 pgvector로 장기 기억 만들기

대화 기록을 그대로 쌓는 단기 기억과 달리 의미 기억은 중요한 사실만 벡터로 저장한다. 임베딩과 pgvector로 AI 에이전트에 세션을 넘어 유지되는 장기 기억을 붙이는 과정을 단계별로 정리했다.

AI 에이전트가 사람을 기억하게 만드는 법: 의미 기억 직접 구현해 보기 영상 대표 이미지

핵심 메시지

  • 의미 기억(시맨틱 메모리)은 대화를 통째로 저장하는 대신 사실·선호·배경지식을 벡터 임베딩으로 저장하고, 정확한 단어가 아니라 의미의 유사도로 찾아낸다.
  • 단기 기억이 세션 안에서 순차적으로 쌓이는 체크포인트라면, 의미 기억은 세션과 대화가 바뀌어도 남아 사용자가 누구인지를 기억한다.
  • 모든 발언을 저장하지는 않는다. 언어 모델이 저장할 가치가 있는지 판단해 이름이나 취향처럼 오래 유효한 정보만 남기고, 오늘 날씨처럼 금방 바뀌는 정보는 버린다.
  • 구현은 임베딩 모델로 문장을 벡터로 바꿔 pgvector에 넣고, 질문이 오면 질문도 벡터로 바꿔 유사도 상위 결과를 가져오는 검색 도구를 에이전트에 붙이는 방식이다.
  • 저장할 때 사용자 ID를 메타데이터로 함께 남겨야 여러 사용자가 섞인 데이터베이스에서 해당 사용자의 기억만 골라 쓸 수 있다.

쉽게 이해하기

챗봇에게 이름을 알려 줘도 다음 대화에서 다시 물어보는 경험은 익숙하다. 이 문제를 다루는 개념이 의미 기억, 즉 시맨틱 메모리다. 영상은 이를 사람의 기억 방식에 빗대 설명한다. 사람은 문장을 통째로 외우지 않고 의미와 핵심어 중심으로 기억하듯, 의미 기억도 대화 원문이 아니라 사실·선호·경험·도메인 지식을 벡터 임베딩 형태로 저장하고 의미가 비슷한 것을 찾아 꺼내 온다.

앞선 회차에서 다룬 단기 기억과의 차이가 핵심이다. 단기 기억은 대화 기록을 체크포인트 형태로 일반 데이터베이스에 쌓으며 하나의 세션이나 스레드 안에서 시간 순서대로 이어진다. 반면 의미 기억은 벡터 데이터베이스에 저장되어 세션과 스레드를 넘어 유지되고, 방금 무슨 말을 했는지가 아니라 중요한 사실이 무엇인지를 기억한다. 둘은 대체 관계가 아니라 서로를 보완하는 관계다.

동작 순서는 단순하다. 사용자가 정보를 말하면 언어 모델이 먼저 저장할 가치가 있는지 판단한다. 영상의 예시에서 '내 이름은 파완이다', '소프트웨어 엔지니어로 일한다', '방갈로르에 산다', '크리켓을 좋아한다'는 저장되지만 '오늘 날씨가 어때?'는 저장되지 않는다. 날씨는 계속 바뀌기 때문이다. 저장하기로 한 문장은 임베딩으로 변환돼 원문 텍스트, 벡터, 사용자 ID와 시각 같은 메타데이터와 함께 기록된다.

꺼내 쓰는 쪽도 같은 원리다. '내가 좋아하는 스포츠가 뭐야?'라고 물으면 질문 자체가 벡터로 바뀌어 저장된 기억들과 유사도를 비교하고, 점수가 높은 항목이 선택된다. 영상에서는 취미가 크리켓이라는 기억이 0.92라는 가장 높은 점수로 뽑혔다. 좀 더 현실적인 예로 여행 에이전트를 들면, 해변과 열대 지역을 좋아하고 직항을 선호하며 4~5성급 호텔에 예산은 15만 루피라는 취향이 미리 저장돼 있으면, 나중에 12월 5일짜리 해외여행 계획을 요청했을 때 그 취향에 맞춘 목적지와 일정, 예산 범위의 답이 돌아온다.

실습은 로컬 환경에서 이뤄진다. 임베딩 모델을 내려받고, 컨테이너 설정 파일의 데이터베이스 이미지를 pgvector 확장이 포함된 것으로 바꾼 뒤, 저장용 함수와 검색용 도구를 각각 만든다. 저장 함수는 문장을 문서 객체로 감싸 사용자 ID를 메타데이터로 붙여 넣고, 검색 도구는 유사도 검색으로 상위 세 건만 가져와 사용자 ID로 걸러 낸다. 시스템 프롬프트에는 단기 기억과 장기 기억이 각각 어떤 상황에서 쓰이는지 명시해 두어, 과거 대화에서 알게 된 배경을 물으면 검색 도구를 호출하도록 유도한다. 다만 발표자는 로컬 언어 모델을 쓰는 만큼 응답 속도와 정확도는 상용 모델보다 떨어진다고 덧붙인다.

주요 인사이트

  • 무엇을 기억할지 결정하는 일 자체가 기능이다. 모든 발언을 저장하면 검색 품질이 떨어지므로, 저장 가치를 언어 모델이 판단하게 만드는 설계가 의미 기억의 출발점이 된다.
  • 기억을 대화 기록이 아니라 사실 단위로 저장하면 대화가 길어져도 맥락 비용이 늘지 않는다. 필요한 순간에 관련된 몇 건만 꺼내 오면 되기 때문이다.
  • 검색 개수를 세 건으로 고정한 설정은 그대로 두면 함정이 된다. 저장된 기억이 많아질수록 상위 세 건만으로는 부족해질 수 있어 이 값은 데이터 규모에 맞춰 조정해야 한다.
  • 사용자 ID 필터는 선택 사항이 아니다. 하나의 벡터 데이터베이스에 여러 사용자의 기억이 섞이는 순간, 필터가 없으면 다른 사람의 정보가 답변에 섞여 들어갈 수 있다.

자주 묻는 질문

의미 기억과 단기 기억은 무엇이 다른가요?

단기 기억은 대화 기록을 체크포인트 형태로 일반 데이터베이스에 시간 순서대로 저장하며 하나의 세션이나 스레드 안에서만 유지됩니다. 의미 기억은 중요한 사실을 벡터로 바꿔 벡터 데이터베이스에 저장하기 때문에 세션과 대화가 바뀌어도 남아 있고, 정확한 표현이 아니라 의미가 비슷한지로 검색합니다.

사용자가 말한 내용은 전부 저장되나요?

아닙니다. 언어 모델이 저장할 만한 정보인지 먼저 판단합니다. 이름, 직업, 사는 곳, 좋아하는 것처럼 오래 유효한 정보는 저장되지만 '오늘 날씨가 어때?' 같은 질문은 금방 바뀌는 내용이라 저장하지 않습니다.

저장된 기억 중 어떤 것이 답변에 쓰이나요?

질문을 벡터로 바꿔 저장된 기억들과 유사도를 비교한 뒤 점수가 높은 상위 항목을 가져옵니다. 영상 실습에서는 상위 세 건을 가져오도록 설정했고, 다섯 건을 저장했지만 질문과 가장 관련 있는 세 건만 검색돼 답변에 반영됐습니다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식