
에이전트의 기억은 어떻게 성장하는가? HTML, 멤리스터, 그리고 4가지 기억 엔진
요약
AI 에이전트의 기억 시스템을 단순한 저장소가 아닌 성장하고 잊는 '망(net)'의 관점에서 분석합니다. HTML의 하이퍼링크 개념과 멤리스터 기술을 결합하여, 지식의 연결과 감쇠를 구현하는 디지털 해마 시스템 구축 실험을 다룹니다.
핵심 포인트
- 에이전트의 기억은 저장보다 선택적 기억과 망각이 핵심임
- HTML의 하이퍼링크 개념을 지식 연결의 모델로 차용
- 멤리스터를 활용한 디지털 해마 시스템 구축 실험 수행
- 엔지니어링의 핵심은 구축 능력뿐 아니라 버릴 것을 결정하는 판단력임
한 마디로 답하겠습니다:
에이전트의 기억은 쌓여가는 창고가 아니라, 성장하고, 잊고, 가지치기되는 망(net)입니다.
무언가를 가르칠 때마다 망에 매듭이 하나씩 늘어납니다. 두 가지가 연관되어 있다면 매듭 사이에 실이 하나 추가됩니다. 시간이 흐를수록 망은 촘촘해지며——당신을 더 잘 이해하게 되는 동시에, 둔해지기도 합니다.
왜냐하면, 정말 어려운 것은 '저장하는 것'이 아니라, 다음의 세 가지이기 때문입니다:
- 무엇을 기억해야 하는가?
- 필요할 때 어떻게 찾아내는가?
- 시대에 뒤처지면 어떻게 잊는가?
보르헤스의 푸네스는 아무것도 잊을 수 없었지만, 그 때문에 생각하는 것이 어려워졌습니다. 모든 잎사귀, 모든 구름의 모양이 똑같이 선명하다면, 세부 사항으로부터 법칙을 추출하기가 어려워집니다. 에이전트에게도 마찬가지입니다—잊지 못하는 기억은 지혜가 아니라, 오히려 하드디스크의 고장에 가깝습니다.
튜링(Turing)은 1950년 논문 『Computing Machinery and Intelligence』에서 '어린 기계(child machine)' 구상을 제안했습니다. 성숙한 뇌를 직접 만드는 것이 아니라, 단순한 출발점에서 시작하여 교육을 통해 성장시킨다는 생각입니다. 오늘날 우리가 에이전트에게 기억 시스템을 만들어주는 것은, 어떤 의미에서 이 70년 전의 질문에 답하고 있는 것입니다: 기계가 경험한 것을 어떻게 다음 행동의 경험으로 바꿀 것인가?
이 이야기를 하기 위해서는 먼저 HTML부터 시작해야 합니다. 그리고 매우 특별한 전자 부품인 멤리스터(memristor)를 살펴볼 것입니다.
이것은 단순한 방식의 소개가 아닙니다. 나중에 2개월간의 실제 실험을 되돌아볼 것입니다. 저는 실제로 작동하고, 확산하고, 감쇠하며, 기억이 한 홉(hop)씩 점등되는 모습을 시각화할 수 있는 '디지털 해마(digital hippocampus)'를 만들었습니다. 그리고 마지막으로, 대조 실험을 통해 그것이 메인라인에 남길 가치가 없다는 것을 제 손으로 직접 증명했습니다.
시스템을 구축하는 것은 능력입니다. 자신이 자랑스러워하는 작품을 버리는 판단—그것이 엔지니어링의 판단력입니다.
1991년 여름, 팀 버너스 리(Tim Berners-Lee)는 초기 웹(Web) 시스템을 널리 공개했습니다. HTML에서 가장 마법 같은 것은 제목도, 단락도, 표도 아닌 링크(link)였습니다:
<a href="another-page.html">다른 페이지로</a>
종이의 세계에서는 페이지를 다 쓰면 그것으로 끝입니다. 하지만 웹에서는 하나의 문서가 손을 뻗어 다른 문서와 연결될 수 있습니다.
버너스 리는 나중에 자신이 꿈꿨던 웹은 공유된 정보 공간이었다고 회상했습니다. 링크는 무엇이든 향할 수 있습니다—개인의 것이든 공공의 것이든, 초안이든 완성본이든.
이 변화는 태그 하나가 추가된 것처럼 보이지만, 실제로는 지식에 길을 닦는 것과 같았습니다. 과거에 문서는 고립된 섬들이었지만, 하이퍼링크(hyperlink)를 통해 비로소 섬들 사이에 다리가 놓였습니다.
하지만 HTML은 어디까지나 웹 페이지의 구조와 브라우저 렌더링을 위해 설계되었습니다. "사용자는 간결한 답변을 선호한다"라고 한 줄 메모하고 싶을 뿐인데도, 다음과 같이 써야 합니다:
<html>
<body>
<p>사용자는 간결한 답변을 선호한다</p>
...
마치 쇼핑 리스트를 적기 위해 아카이브를 짓는 것과 같습니다.
2004년, 존 그루버(John Gruber)가 마크다운(Markdown)을 발표했습니다. 그 핵심 철학은 '더 많은 기능'이 아니라 '더 적은 기호'였습니다. 가공되지 않은 텍스트는 렌더링하지 않아도 자연스럽고, 명확하며, 직접 읽을 수 있어야 한다는 생각입니다.
# 제목
- 어떤 기록
- 다른 기록
...
#은 제목, -는 리스트이며, 괄호로 링크를 쓸 수 있습니다. 지식 베이스 소프트웨어에서 자주 보이는 [[양방향 링크]]는 엄밀히 말하면 마크다운 표준은 아니며, 위키(Wiki)나 노트 도구가 나중에 추가한 확장 기능이지만 같은 정신을 계승하고 있습니다: 지식 간의 연결을 인간이 부담 없이 쓰고, 기계도 부담 없이 읽을 수 있을 만큼 가볍게 만드는 것.
이것이 바로 마크다운이 에이전트의 기억 매체로 적합한 이유입니다: 투명하고, 편집 가능하며, 버전 관리가 용이하고, 인간과 모델이 동일한 내용을 볼 수 있기 때문입니다.
하지만 파일 형식은 '어디에 저장할 것인가'를 해결했을 뿐입니다. 더 어려운 문제는 기억이 만들어진 후, 어떻게 그것을 찾아내느냐입니다.
일반적인 저항은 기억이 없는 문과 같습니다. 백 번을 눌러도 다음에도 똑같은 상태입니다.
멤리스터(memristor)는 다릅니다. 그 이름은 memory resistor—'기억이 있는 저항'—에서 유래했습니다. 흐르는 전하가 내부 상태를 변화시키고, 다음에 전류가 흐를 때 그 컨덕턴스(conductance)는 과거의 경험에 영향을 받습니다.
이를 흙길에 비유해 보겠습니다:
- 아무도 걷지 않으면 풀이 자라나 길이 잘 보이지 않게 됩니다;
- 걷는 사람이 늘어날수록 흙이 다져져 길이 선명해집니다;
- 다음에 갈림길에 왔을 때, 자연스럽게 오래된 길을 선택하기 쉬워집니다.
이것이야말로 기억이 아닌가요? 반복적으로 호출되는 연결은 강해지고, 오랫동안 사용되지 않는 연결은 약해집니다.
1971년, Leon Chua는 회로 변수 간의 대칭 관계로부터 멤리스터(Memristor)라는 '누락된 회로 소자'를 제안했습니다. 2008년, Strukov 등이 Nature에 'The Missing Memristor Found'를 발표하며 이후 널리 알려진 물리적 구현 모델을 제시했습니다. 멤리스터가 뉴로모픽 컴퓨팅 (Neuromorphic Computing) 연구자들을 매료시킨 이유는 그 컨덕턴스 (Conductance)가 이력을 유지하기 때문입니다. 하나의 디바이스가 '기억'을 담당하며, 시냅스 가중치 (Synaptic weight)의 변화와 유사한 효과를 보여줄 수 있습니다.
Prism의 초기 버전에는 C++17을 이용한 벡터 스토리지 (Vector storage) 프로토타입이 있었습니다:
벡터 스토리지
+ HNSW 근접 탐색
+ 멤리스터 상태
...
당시의 발상은 매력적이었습니다. 벡터 라이브러리를 변하지 않는 서랍의 나열로 만드는 것이 아니라, 각 기억을 전자 시냅스처럼—컨덕턴스, 플럭스 (Flux), 진화하는 상태를 가진 것으로 만드는 것 말입니다. 액세스는 단순히 '찾는 것'에 그치지 않고 그것을 변화시킵니다. 시간의 경과는 단순한 타임스탬프가 아니라, 기억을 서서히 표류하게 만듭니다.
다시 말해, 일반적인 벡터 스토어 (Vector store)는 지도와 같습니다. 도로가 그려지면 그대로 그 자리에 있습니다. 멤리스터 모델은 실제 도시와 더 가깝습니다. 사람의 흐름이 오솔길을 대로로 바꾸고, 버려진 길은 풀에 삼켜집니다.
이 아이디어는 나중에 제가 포기했습니다. 멋지지 않아서도, 작동하지 않아서도 아닙니다. 시스템을 또 다른 복잡성으로 몰아넣었기 때문입니다. C++ 벡터 계층, C API, Go 서비스, 혼돈 상태, 인덱스 구조, 상위 기억 그래프가 모두 함께 진화해야만 했습니다. 뇌처럼 동작하려고 노력하다가, 엔지니어링 자체가 유지보수가 어려운 뇌로 성장해 버렸습니다.
하지만 멤리스터는 가장 중요한 유산을 남겼습니다:
기억은 단순히 저장되어야 하는 것이 아니다. 사용될 때마다, 다음에 회상될 확률을 바꾸어야 한다.
나중에 Go로 PrismD를 재구축했을 때, C++ 프로토타입은 버렸지만 이 생각은 남겨두었습니다. 노드의 에너지는 시간에 따라 감쇠하며, 액세스함으로써 강화됩니다. 기억과 기억을 잇는 시냅스에도 고유한 감쇠율이 있습니다. 하드웨어 메타포는 삭제되었지만, 정말 유효한 다이내믹스 (Dynamics)는 남았습니다.
이것이 제가 처음으로 진정 이해한 것입니다: 뺄셈이란 모든 것을 삭제하는 것이 아니라, 값비싼 형식을 제거하고 유효한 원리를 남기는 것입니다.
세상에는 에이전트 기억 솔루션이 넘쳐납니다: 벡터 스토어, RAG, 지식 그래프 (Knowledge graph), 시맨틱 네트워크 (Semantic network), 장기 기억, 에피소드 기억…… 용어들은 마치 연막 같습니다.
라벨을 떼어내면, 일반적인 구현은 크게 4가지 접근 방식으로 분류할 수 있습니다.
RAG는 Retrieval-Augmented Generation의 약자입니다.
도서관 전체를 모델의 머릿속에 집어넣는 대신, 검색기가 서가에서 가장 관련성이 높은 몇 페이지를 찾아내어 모델에게 전달하고 답변을 생성하게 합니다.
사용자 질문: "지난번 로그인 함수 수정, 어떻게 했었지?"
↓
검색기가 문서 스토어에서 관련 파편을 찾음
...
2020년, Lewis 등은 RAG를 파라미터 기억 (Parametric memory)과 비파라미터 기억 (Non-parametric memory)의 조합이라고 설명했습니다. 모델의 파라미터는 '암기한 지식'이며, 외부 인덱스는 언제든 참조할 수 있는 참고 도서관과 같습니다.
RAG를 '매번 일기를 처음부터 다시 읽는 것'이라고 설명하는 것은 정확하지 않습니다. 더 적절한 비유는 다음과 같습니다: 말하기 전에, 사서에게 키워드나 시맨틱스 (Semantics), 메타데이터를 바탕으로 서고에서 몇 페이지를 가져다 달라고 요청하는 것.
장점은 명확합니다: 자료를 언제든 업데이트할 수 있고, 지식 베이스를 대규모로 확장할 수 있습니다. 단점 또한 명확합니다: 잘못된 선반을 검색하면, 그 이후의 답변이 아무리 똑똑하더라도 수정할 수 없습니다.
두 번째 접근 방식은 기억을 그래프로 모델링하는 것입니다. 각 기억은 노드이며, 노드 간은 관계로 연결됩니다.
[Transformer]
/ \
/ \
...
「Attention」 노드가 활성화되면 에너지가 에지(edge)를 따라 확산되며, Transformer, GPT, Scaled Dot-Product 등 관련 개념을 불러일으킵니다. 이는 Collins와 Loftus가 1975년에 제안한 「확산 활성화 (Spreading Activation)」 의미 기억 이론과 유사합니다. 즉, 개념이 트리거되면 활성화가 연상 네트워크를 따라 전파되는 방식입니다.
장점은 간접적인 관계를 발견할 수 있다는 것입니다. 대가는 네트워크 자체의 복잡성에 있습니다.
세 번째는 가장 단순합니다. 기억은 Markdown 파일이며, 필요할 때 읽고 필요하지 않을 때는 읽지 않습니다.
memory/
├── index.md ← 경량 디렉토리: 링크 + 한 줄 요약
├── preferences.md ← 사용자 설정
...
RAG가 사서라면, 일반 Markdown은 인덱스 카드 상자입니다. 데이터베이스 콘솔도 필요 없고, 블랙박스 내부를 추측할 필요도 없습니다. 파일을 열면 에이전트가 기억하고 있는 모든 것이 그곳에 있습니다.
구조화된 MD (Structured MD)는 Markdown을 버리는 것이 아니라, 각 카드에 몇 가지 필드를 추가하는 것입니다: 소스(source), 타입(type), 신뢰도(confidence), 업데이트 일시, 적용 범위.
- 내용: 사용자는 간결한 답변을 선호함
신뢰도: 높음
소스: 여러 번의 대화에서 확인됨
...
이것은 중요합니다. 왜냐하면 기억은 단순히 결여될 뿐만 아니라, 거짓을 말할 수도 있기 때문입니다. 메타데이터는 기억의 「영양 성분표」입니다.
| 접근 방식 | 가장 유사한 것 | 장점 | 주요 비용 |
|---|---|---|---|
| 외부 RAG | 온콜(on-call) 사서 | 대용량, 빠른 업데이트, 외부 지식에 적합 | 검색 품질에 크게 의존 |
| ... | |||
| 기억 엔진에 유일한 정답은 없습니다. 스케일, 태스크, 유지보수 능력에 부합하는 답이 있을 뿐입니다. |
최종적인 해결책만 보면, 그래프 엔진이 너무 어려워서 Markdown을 선택했거나, PrismD가 작동하지 않았다고 생각할지도 모릅니다.
정반대입니다: PrismD는 완벽하게 작동한 후에, 사형 선고를 받은 것입니다.
PrismD는 기억을 가중치 기반 유향 그래프 (Weighted Directed Graph)로 모델링했습니다:
Node (노드): 텍스트, 감정, 중요도, 에너지를 가진 기억
Synapse (시냅스): 기억 간의 연관성 —— 연상, 시간, 의미, 에피소드 등의 타입
Cluster (클러스터): 논리적 영역 —— 사용자 프로필, 코드 작업, 도구 로그, 세션
Domain (도메인): 서로 다른 사용자나 역할을 위한 물리적으로 분리된 공간
그 기억 라이프사이클은 단순한 CRUD가 아니라, 생체 대사에 가까운 것이었습니다:
ENGRAM 쓰기 → DRIFT 감쇠 → LOOM 호출 및 강화
→ COMPILE 압축 → CONSOLIDATE 병합/폐기 → PRUNE 능동적 망각
그래프 확산으로 인상적인 데모를 만드는 것은 쉽습니다. 하지만 프로덕션 환경에서 더 위험한 문제는: 연관시켜서는 안 될 것들도 에지를 따라 기어 들어온다는 점입니다.
그래서 저는 명시적인 클러스터 간 전파 행렬 (Inter-cluster Propagation Matrix)을 만들었습니다:
ToolLog → UserBase = 0.05
CodeWork → UserBase = 0.8
UserBase → Session = 1.0
이 교훈은 매우 중요합니다: 기억 시스템에는 재현율(recall)뿐만 아니라, 오염 방지(contamination prevention)도 필요합니다. 잘못 기억하는 것은 완전히 잊어버리는 것보다 훨씬 위험할 때가 많습니다.
저는 동일한 실제 데이터와 동일한 정답 세트로 세 가지 접근 방식을 경쟁시켰습니다:
| 실험 | 방법 |
|---|---|
MD_FULL | Markdown 전체 주입, 무차별 대입(brute-force) 베이스라인 |
STRUCT_MD | 구조화된 Markdown + bigram 셀렉터 |
LOOM | PrismD 그래프 확산 검색 |
승자는 가장 뇌와 닮은 LOOM이 아니라, 가장 단순한 STRUCT_MD였습니다.
그래프 확산은 확실히 간접적인 연관성을 불러일으켰지만, 그 미미한 검색 이점은 그래프 구조, 에지 가중치, 클러스터 간 행렬, 감쇠 상태, 영속화, LLM을 통한 정리의 유지보수 비용을 상쇄할 수 없었습니다.
처음에는 복잡한 해결책이 실제로 작동한다는 것을 증명하십시오. 그다음에는, 그것이 여전히 가치가 없다는 것을 증명하십시오.
많은 프로젝트는 전반부만 수행합니다. 데모를 돌려놓고 승리를 선언하는 것이죠. 진정한 엔지니어링 판단은 후반부에 있습니다.
「기계가 해석하기 쉬운 것」을 「인간이 유지보수하기 쉬운 것」으로 오해하지 말 것
에이전트에게 모든 것을 기록하게 하지 말 것 —— 자동 기억 (Automatic Memory)에는 임계값 (Threshold)이 필요합니다.
그래프 엔진 (Graph Engine)에 성급히 매료되지 말 것 —— 먼저 단순한 것으로 실제 요구사항을 확인하십시오.
인덱스 (Index)를 과소평가하지 말 것 —— index.md는 기억 시스템의 현관입니다.
결론뿐만 아니라 소스 (Source)도 기록할 것
알고리즘이 옳다고 해서 아키텍처 (Architecture)가 옳다고 단정 짓지 말 것
매몰 비용 (Sunk Cost)을 기술적 신념으로 위장하지 말 것
PrismD가 나에게 남긴 최종적인 해답은 더 단순한 원칙입니다: 복잡성은 진정한 리턴 (Return)으로 그 대가를 치러야 한다.
진정으로 성숙한 기억 시스템은 가장 많은 것을 기억하는 것도, 가장 뇌와 닮은 것도 아닙니다. 그것은 절제할 줄 아는 것입니다:
기록해야 할 때 쓰고, 필요할 때 히트 (Hit)하며, 놓아주어야 할 때 잊는 것.
이 기억 철학이 실제 에이전트에서 어떻게 구현되어 있는지 알고 싶다면, GitHub에서 소스 코드를 공개하고 있습니다:
- Alan M. Turing, Computing Machinery and Intelligence, Mind, 1950
- Tim Berners-Lee, The World Wide Web: A very short personal history: W3C
- John Gruber, Markdown: Syntax: Daring Fireball
- Patrick Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, NeurIPS 2020
- Allan M. Collins & Elizabeth F. Loftus, A Spreading-Activation Theory of Semantic Processing, Psychological Review, 1975
- Jorge Luis Borges, Funes the Memorious, 1942
- Leon O. Chua, Memristor—The Missing Circuit Element, IEEE Transactions on Circuit Theory, 1971
- Dmitri B. Strukov et al., The Missing Memristor Found, Nature, 2008
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기