이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
TL;DR
에이전트의 장기 기억을 단순히 메시지 나열로 저장할 때 발생하는 컨텍스트 과부하와 정보 모순 문제를 해결하기 위해 Weaviate가 출시한 Engram을 소개한다. Engram은 원시 대화 데이터를 그대로 쌓는 대신 핵심 사실을 추출하고 기존 지식과 대조하여 최신 상태로 유지하는 인프라 중심의 메모리 관리 방식을 채택했다. 사용자는 Weaviate Cloud에서 프로젝트를 생성하고 Python SDK를 통해 단 몇 줄의 코드로 에이전트에 정제된 기억을 부여할 수 있다. 이를 통해 토큰 비용을 절감하면서도 에이전트가 사용자의 변화하는 선호도나 최신 정보를 정확히 기억하도록 만든다.
챕터별 상세
기존 에이전트 메모리 시스템의 한계
대부분의 에이전트 메모리 시스템은 모든 메시지를 단순히 저장하고 검색하여 컨텍스트에 쏟아붓는 방식을 사용한다. 이 방식은 대화가 길어질수록 토큰 비용이 기하급수적으로 증가하며 모델의 추론 속도를 늦추는 원인이 된다. 또한 사용자가 말을 바꾸거나 정보가 낡아졌을 때 모순된 데이터가 쌓여 검색 품질이 저하되는 문제가 발생했다. 단순히 저장소(Storage)를 붙이는 수준을 넘어 능동적으로 관리되는 인프라가 필요한 시점이다.
Engram의 핵심 철학: 능동적 메모리 관리
Engram은 메모리를 단순한 데이터 더미가 아닌 능동적으로 유지보수되는 인프라로 정의했다. 원시 채팅 메시지가 입력되면 백그라운드에서 비동기적으로 핵심 사실을 추출(Extract)하고 기존 지식과 대조(Check)한다. 만약 '베를린에 산다'는 기존 정보가 '뮌헨으로 이사했다'는 새 정보와 충돌하면 이를 조정(Reconcile)하여 최신 상태를 유지했다. 결과적으로 모델은 중복되거나 낡은 정보 없이 정제된 사실만을 컨텍스트로 전달받아 더 정확한 응답을 생성했다.
Weaviate Cloud에서 프로젝트 설정하기
Weaviate Cloud 콘솔에서 Engram 프로젝트를 생성하여 메모리 관리 환경을 구축했다. 프로젝트 설정 시 메모리의 소속을 결정하는 Scope를 지정할 수 있는데, 전체 프로젝트 공유 방식과 개별 사용자 단위(User-scoped) 격리 방식을 지원했다. 또한 Topic 기능을 통해 '사용자 선호도'나 '프로젝트 사실'처럼 추출할 정보의 범주를 자연어로 정의할 수 있었다. 이를 통해 관련 없는 일상 대화는 무시하고 애플리케이션에 필요한 핵심 정보만 선별적으로 저장하는 구조를 완성했다.
Python SDK를 활용한 메모리 저장 및 검색
weaviate-engram 라이브러리를 설치하고 단 몇 줄의 코드로 메모리 기능을 통합했다. client.memories.add() 함수에 대화 역할(Role)과 내용(Content)을 전달하면 즉시 Run ID가 반환되며 백그라운드 처리가 시작됐다. 별도의 벡터 데이터베이스 설정이나 임베딩 관리 없이도 SDK가 모든 복잡한 과정을 처리했다. 저장된 정보는 memories.search()를 통해 자연어 쿼리로 조회할 수 있으며, 검색된 결과는 LLM 프롬프트에 주입할 수 있는 텍스트 형태로 반환됐다.
python
from engram import EngramClient
client = EngramClient(api_key="eeg_...")
run = client.memories.add(
[
{"role": "user", "content": "I just moved to Berlin..."},
{"role": "assistant", "content": "Welcome to Berlin!"}
],
user_id="[email protected]"
)Engram 클라이언트를 초기화하고 사용자 대화 내용을 특정 ID의 메모리에 추가한다.
정보 업데이트 및 모순된 메모리 조정
사용자가 선호하는 음료를 커피에서 차로 바꾸고 거주지를 베를린에서 뮌헨으로 변경하는 시나리오를 테스트했다. Engram은 새로운 대화를 추가했을 때 기존 메모리를 삭제하거나 중복 생성하지 않고 해당 항목을 '업데이트' 상태로 처리했다. 다시 검색을 수행했을 때 과거의 낡은 정보는 사라지고 최신 사실만 반환됨이 확인됐다. 이는 모델이 컨텍스트 윈도우 내에서 서로 다른 두 정보 사이에서 혼란을 겪지 않도록 방지하는 핵심 메커니즘이다.
python
mems = client.memories.search(
query="user preferences and location",
user_id="[email protected]"
)
context = "
".join([m.content for m in mems])저장된 메모리에서 쿼리와 관련된 사실을 검색하여 LLM 프롬프트용 컨텍스트로 변환한다.
Llama 3와 Engram을 결합한 챗봇 구현
Ollama를 통해 로컬에서 실행되는 Llama 3 모델에 Engram 메모리를 결합하여 실제 챗봇을 구동했다. 시스템은 최근 메시지 몇 개를 담은 짧은 롤링 윈도우와 Engram에서 가져온 장기 기억이라는 두 층의 컨텍스트를 병합하여 사용했다. 사용자가 '내가 어떤 언어로 툴을 만들고 있지?'라고 물었을 때, 대화창에서 사라진 과거의 'Go 언어' 언급을 Engram이 정확히 찾아내어 답변에 반영했다. 전체 대화 이력을 보낼 때보다 토큰 사용량을 낮게 유지하면서도 일관된 페르소나를 유지했다.
용어 해설
- 컨텍스트 윈도우(Context Window)
- — LLM이 한 번에 처리할 수 있는 입력 토큰의 최대 범위이다. 대화 이력이 길어질수록 이 범위를 초과하여 과거 정보를 잊거나 추론 성능이 저하되는 병목 현상이 발생한다.
- 멀티테넌시(Multi-tenancy)
- — 하나의 소프트웨어 인스턴스가 여러 사용자나 그룹(테넌트)에게 독립된 환경을 제공하는 아키텍처이다. AI 메모리에서는 사용자별로 기억을 격리하여 보안과 개인화를 동시에 달성하는 데 중요하다.
- 소프트웨어 개발 키트(SDK)
- — 특정 서비스나 플랫폼을 활용해 애플리케이션을 개발할 수 있도록 제공되는 도구 모음이다. 본 영상에서는 Engram 기능을 Python 코드에서 쉽게 호출할 수 있는 라이브러리 형태로 제공된다.
- 비동기 처리(Asynchronous Processing)
- — 작업 완료를 기다리지 않고 다음 로직을 실행하는 방식이다. Engram은 대화에서 사실을 추출하고 정리하는 무거운 작업을 백그라운드에서 수행하여 사용자 응답 속도에 영향을 주지 않는다.
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 09. 08.수집 2026. 09. 08.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.