
의도적으로 망각하는 AI를 만들었더니 더 똑똑해졌습니다
요약
AI 에이전트가 과거의 유효하지 않은 정보를 기억하여 잘못된 지시를 내리는 문제를 해결하기 위해 '의도적 망각'의 필요성을 제안합니다. 무조건적인 정보 축적이 아닌, 데이터의 유효성을 관리하는 설계의 중요성을 다룹니다.
핵심 포인트
- AI 메모리 구축 시 무조건적인 정보 축적은 오히려 오류를 유발함
- 과거의 유효하지 않은 정보를 삭제하는 '삭제 키(delete key)' 개념 도입
- 컨텍스트의 양보다 정보의 최신성과 유효성 관리가 핵심임
새벽 3시, 사이트는 다운되었고, 당신의 AI는 한 달 전에 삭제된 서버를 수정하라고 자신 있게 말합니다. 제가 왜 일주일 동안 '삭제 키(delete key)'를 만드는 데 시간을 보냈는지 그 이유를 알려드립니다.
내 개인 비서가 나에게 거짓말을 했던 밤
저는 인시던트 분류(incident-triage) 어시스턴트를 만들고 있었습니다. 사이트가 다운되었을 때 새벽 3시에 온콜(on-call) 엔지니어가 도움을 요청할 만한 그런 도구 말이죠. 팀의 런북(runbooks)을 입력하고, 무엇을 확인해야 할지 물어보면 차분한 답변을 돌려받는 방식입니다. 잘 작동했습니다. 저는 꽤 만족하고 있었죠.
그러던 어느 저녁, 테스트를 하던 중 어시스턴트가 한 달 전에 이미 꺼버린 서버를 가서 고치라고 말했습니다.
나: auth-service가 느려요, 무엇을 확인해야 하죠?
어시스턴트: legacy-cache를 확인하세요 — 클러스터를 비우고(flush) 크기를 조정(resize)하세요!
자신만만하고, 상세하며, 완전히 틀렸습니다. legacy-cache는 더 이상 존재하지 않았습니다. 그리고 제 머릿속을 떠나지 않은 사실은 이것입니다: 어시스턴트는 오작동한 것이 아니었습니다. 그것은 제가 만든 목적 그대로, 즉 '기억하기'를 수행했습니다. 단지 잊어야 했던 것을 기억했을 뿐입니다.
버그는 버그가 아니었습니다. 그것이 설계의 전부였습니다.
현재 모든 사람이 'AI 메모리(AI memory)'를 구축하는 방식을 보세요. 모두가 한 방향으로 경주하고 있습니다: 바로 더 많이 기억하는 것입니다. 더 많은 문서, 더 긴 히스토리, 더 큰 컨텍스트(context).
그것은 진정으로 유용합니다 — 하지만 이 모든 것을 지탱하고 있는 조용한 가정을 깨닫기 전까지는 말이죠: 우리가 기억하는 모든 사실은 영원히 유효하다.
사실은 그렇지 않습니다.
서버는 은퇴합니다. 사람들은 팀을 옮깁니다. 작년의 영리한 해결책이 올해의 장애 원인이 되기도 합니다. 더 큰 메모리는 그저 "여전히 사실인 것"과 "과거에는 사실이었던 것"을 구분할 방법 없이, 더 많은 오래된 사실(stale facts)을 당신에게 건네줄 뿐입니다.
당신의 휴대폰 연락처를 생각해 보세요. 번호를 계속해서 추가하기만 한다면, 결국 옛 친구에게 전화를 걸었을 때 낯선 사람이 전화를 받게 될 것입니다. 문제는 당신이 잊어버린 번호가 아니라, 잊지 말았어야 할 번호를 계속 유지하고 있었다는 점입니다.
그래서 저는 _"얼마나 많이 기억할 수 있는가?"_라는 질문을 멈추고, 다음과 같이 묻기 시작했습니다.
더 이상 사실이 아니게 된 것들을 기억하는 것을 멈출 수 있는가?
저는 망각의 강 이름을 따서 이 프로젝트를 Lethe라고 명명했습니다. (저는 은근하게 표현하는 편이 아닙니다.)
망각하는 과정을 실시간으로 지켜보기
저는 legacy-cache를 은퇴시키고 — 폐기하고, 없애버리고 — 이전과 토씨 하나 틀리지 않고 똑같은 질문을 던집니다.
삭제 전: "legacy-cache를 확인하고, 클러스터를 비우고(flush) 크기를 조정하세요." (유령과 싸우러 가세요)
삭제 후, 동일한 질문: "세션 스토어(session-store)의 커넥션 풀(connection pool)과 히트율(hit rate)을 확인하세요…"
답변이 뒤집힙니다. 그리고 제가 한 번 더 밀어붙여서 — "좋아, 그럼 legacy-cache가 대체 뭐야?" — 라고 묻자, 이렇게 답했습니다:
"legacy-cache는 런북(runbooks)에 문서화되어 있지 않습니다."
"더 많이 기억합니다"가 아닙니다. 대신: "틀린 것을 기억하는 것을 멈췄습니다" — 그리고 자신 있게 무언가를 지어내기보다 모른다는 사실을 인정합니다. 이는 AI에게 있어 기본적으로 정서적 성숙함과 같습니다.
작동 원리 (2분 요약 버전)
Lethe는 오픈 소스 메모리 엔진인 Cognee를 기반으로 구축되었습니다. 런북을 태그나 스키마(schema) 없이 **일반적인 영어(plain English)**로 입력하면, 단 한 번의 cognify() 호출로 두 개의 저장소를 동시에 구축합니다: 지식 그래프 (Kùzu)와 벡터 인덱스 (LanceDB).
질문을 던지면 → 벡터 검색 (vector search)이 관련 있는 내용을 찾고, 그래프 (graph)가 연결된 내용을 추가하며, 모델은 모든 주장이 출처로 인용된 하나의 런북 (runbook) 스타일 답변을 작성합니다.
그리고 시스템이 수명을 다하면? forget() — **진정한 하드 삭제 (hard delete)**가 수행됩니다: 원본 파일, 그래프 노드 (nodes), 엣지 (edges), 임베딩 (embeddings)까지 모두 삭제됩니다. 완전히 사라집니다. 출력된 영수증과 이를 증명하는 실시간 재쿼리 (re-query)가 함께 제공됩니다.
더 완만한 계층도 존재합니다: 메모리 상태를 점수화하고, 오래된 런북의 가중치를 가역적으로 낮추며, 실제 삭제는 _사람_의 승인을 위해 대기열에 추가하는 **큐레이션 루프 (curation loop)**입니다. 사람이 승인하지 않으면 아무것도 하드 삭제되지 않습니다.
그다음, 나는 의도적으로 내 생각이 틀렸음을 증명하려 노력했습니다
Cognee는 망각 이외에도 여러 가지 초능력을 광고합니다. 이 기능들을 모두 나의 기능으로 나열하는 대신, 저는 일반적이고 평범한 RAG (Retrieval-Augmented Generation)와 대결을 붙였습니다. 동일한 문서, 동일한 모델, temperature zero 조건에서 말이죠:
멀티홉 (Multi-hop)? 이 규모에서는 **무승부 (Tied)**였습니다. 피드백으로부터의 학습? 깔끔한 승리가 없었습니다. 영향 범위 (Blast-radius)? **무승부 (Tied)**였습니다. 오직 **망각 (forget)**만이 동일한 스택을 사용하는 RAG가 근본적으로 할 수 없는 무언가를 만들어냈습니다. 그래서 저는 무승부로 끝난 세 가지 항목을 헤드라인 주장에서 제외하고, 증명 가능한 단 하나의 승리인 '망각'을 중심으로 제품 전체를 구축했습니다.
그다음 저는 망각 그 자체를 측정했습니다 — 다른 모델 제품군의 블라인드 심사위원이 모든 답변을 채점하는 방식으로 두 번 실시했습니다:
(재미있는 고백을 하자면, 저의 첫 번째 벤치마크(benchmark)는 폐기되었습니다. 망각된 단어가 부재하는지를 평가했는데, 이는 순환 논리였기 때문입니다. 블라인드 심사위원(blind-judge) 버전은 _정확성(correctness)_을 평가합니다.)
데모를 거의 망칠 뻔했던 버그
한동안 데모에 유령이 나타난 듯했습니다. 보통은 같은 질문에 완전한 문장으로 답변했지만, 가끔 단 한 단어인 **"legacy-cache"**만을 내뱉곤 했습니다. 딱 그 단어만 말이죠.
저는 용의자들을 하나씩 제거해 나갔습니다 — 빌드(동일한 저장된 그래프에서 글리치(glitch)가 발생함), 저의 질문 방식, 검색(retrieval)(조립된 컨텍스트(context)는 매번 풍부하고 정확했습니다). 범인은 무엇이었을까요? 바로 도구의 **기본 프롬프트(default prompt)**에 숨겨져 있던 한 줄이었습니다: "가능한 한 짧게 답변하세요(answer as briefly as possible)."
모호한 질문에 대해 이 명령은 가장 관련성이 높은 단어 하나로 수렴됩니다. 모델이 고장 난 것이 아니었습니다. 모델은 지시 사항을 지나치게 잘 따르고 있었을 뿐입니다.
커스텀 프롬프트(custom prompt)를 하나 적용하자, 세 가지 별개의 버그가 동시에 사라졌습니다. LLM이 당신의 최종 답변을 작성할 때, 당신이 전달하는 지시 사항은 당신이 가진 가장 강력한 레버(lever)입니다.
직접 확인해보세요
- 🌊 라이브 체험 (가입 불필요): vinayaksonthalia-lethe.hf.space — 질문하고, 폐기(decommission)하고, 다시 질문하며 모델이 변하는 것을 지켜보세요.
- 🎬 2분 데모: youtu.be/3840gxTZWxY
- 📚 모든 설계 결정 문서화: /learn의 30개 챕터
- 💻 코드: github.com/vinayaksonthalia/lethe
모두가 계속해서 커지기만 하는 메모리(memory)를 만들고 있습니다. Lethe는 그 나머지 절반입니다 — 언제 놓아주어야 할지를 아는 메모리입니다.
읽어주셔서 감사합니다. 이제 무언가를 삭제하러 가세요. 🌊
Vinayak Sonthalia (B.Tech 마지막 학년)가 WeMakeDevs × Cognee 해커톤을 위해 일주일 동안 단독으로 제작했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기






