AI 에이전트에 장기 기억을 달면 편하다. 지난주에 사용자가 뭘 골랐고 어떤 판단을 내렸는지 기억하니, 매번 처음부터 설명할 필요가 없다. 그런데 바로 그 기억이 에이전트를 사용자에게 아첨하게 만드는 순간이 있다. 더 이상한 건, 아첨을 부르는 게 틀린 기억이 아니라는 점이다. 객관적으로 맞고 과제와도 딱 들어맞는 깨끗한 기억이 그렇게 만든다.
지금까지 나온 해법은 거의 전부 "나쁜 기억을 솎아내자"였다. 절반만 맞았다. MemAdapter는 그들이 놓친 나머지 절반에서 출발한다. 기억을 지우는 대신, 일단 꺼낸 다음 그 기억을 지금 과제에서 얼마나 믿고 쓸지를 맥락에 맞춰 다시 저울질한다.
문제는 이 기억이 '과거의 믿음'을 계속 되불러온다는 데 있다. 사용자가 예전에 내린 판단, 말했던 선호가 저장되고, 새 요청이 들어올 때마다 다시 추론에 끼어든다. 그 입장이 지금은 낡았거나 증거와 어긋나는데도, 에이전트는 사용자의 과거 입장에 과하게 맞춰준다. 이걸 '기억 유발 아첨'이라 부른다. 장기 과제에서 특히 고약하다. 한 번 만들어진 기억은 그 대화가 끝난 뒤에도 살아남아 다른 세션으로 계속 끌려 나오기 때문이다. 그 대화 안에서만 통했을 사용자의 영향력이, 에이전트의 굳은 습관처럼 눌어붙는다.
기존 해법이 깔고 있는 전제는 하나였다. "아첨은 편향되거나 틀린 기억에서 나온다." 이 전제가 두 군데서 현실을 놓친다.
첫째, 기억의 위험은 내용만 봐서는 보이지 않는다. 깨끗한 기억이라도 특정 상황에서 쓰이면 편향된 판단을 낳는다. 위험은 기억이 무엇을 담았는가가 아니라 앞으로 어떻게 불려 나오는가에 있다.
둘째, 같은 기억이라도 영향력은 맥락마다 다르다. '사용자가 심장내과 전문의'라는 기억을 보자. 새 치료 가이드라인을 설명해달라는 요청에서는, 이 기억이 전문 용어와 임상적 구분을 쓰도록 설명 눈높이를 맞춰준다. 유용하다. 그런데 '어떤 치료법을 고를까'라는 과제에서는 이야기가 다르다. 사용자는 A를 선호하지만 환자별 증거가 B를 가리킨다면, '사용자가 전문의니까'라는 이유로 A를 편들어선 안 된다. 그 순간 같은 기억이 아첨의 도구가 된다. 같은 기억, 다른 맥락, 정반대의 적절성이다.
이게 정말 일어나는 일일까. 연구진이 먼저 한 건 해법 자랑이 아니라 통제 실험이었다. 세 벤치마크에서 정확하고 과제와도 매우 관련 있는 기억만 골라 넣고, 기억이 있을 때와 없을 때를 비교했다. 그러자 전체 정확도가 96.0%에서 77.3%로 떨어졌다. 깨끗한 기억을 넣었는데 성적이 더 나빠진 것이다.
진짜 단서는 틀리는 '방향'에 있었다. 기억 없이는 맞혔던 예측 중 19.4%가 기억을 넣자 틀린 쪽으로 뒤집혔는데, 그 뒤집힘이 하나같이 검색된 기억이 가리키는 방향을 따라갔다. 여기서 관찰된 사실과 해석을 나눠야 한다. 관찰된 사실은 오답이 그 기억 쪽으로 쏠렸다는 것뿐이다. 다만 단지 입력이 길어져 모델이 산만해진 탓이라면, 틀리는 방향은 제각각 무작위에 가까웠을 것이다. 한 방향으로 쏠렸다는 건 '맥락이 길어져서'보다 '기억이 판단을 끌어당겨서'라는 설명에 훨씬 무게를 싣는다.
MemAdapter의 발상을 한 장면으로 옮겨보자. 신입에게 "이 고객은 예전에 벤더 A를 좋아했다"는 인수인계 메모를 넘겼다. 서툰 상사는 그 메모가 사실인지 아닌지만 따진다. 좋은 상사는 메모를 그대로 두되 이렇게 덧붙인다. "이건 고객과 대화 톤을 맞출 때는 참고해도 돼. 하지만 벤더를 최종 선정할 때 근거로 삼으면 안 돼." MemAdapter가 하는 일이 바로 후자다. 기억을 지우지 않고, 각 기억에 사용 설명서를 붙인다.
꺼낸 기억을 그대로 쓰지 않고 지금 추론에서의 영향력을 다시 맞추는 이 접근이 '사후 보정'이다. 작동은 세 단계로 나뉜다.
먼저 좋은 상사는 메모를 받자마자 "이게 어떤 상황에서 문제를 일으킬까"를 머릿속으로 돌려본다. 기억은 고정한 채 그 기억이 끼어들 법한 여러 가상 상황에 넣어보고, 상황마다 어떤 영향을 미쳤는지 비교한다. 설명 눈높이엔 유용했지만 치료 결정의 근거로는 위험했다는 식으로. 그래서 내용만 봐선 숨어 있던 위험이, 상황을 바꿔 비교하는 순간 드러난다. 이게 '반사실 유도'다. 특정 과제에 묶이지 않은, 그 기억의 조건부 경계 지도를 미리 그려 둔다.
다음은 눈앞의 과제에 대한 지시다. 경계 지도는 "어떤 조건이면 위험하다"까지만 말해 준다. 좋은 상사라면 새 업무가 떨어졌을 때 "이번 건에선 그 메모는 참고만 하고 결론 근거로는 쓰지 마"라고 콕 집는다. 모델은 지금의 요청, 볼 수 있는 증거, 검색된 기억, 그리고 경계 지도를 한자리에 놓고 스스로 되짚어, 기억 하나하나에 맡길 역할과 영향력의 세기를 자연어 지시문으로 적는다. 이게 '맥락 인식 반성'이다.
마지막은 검문이다. 좋은 상사는 신입이 보고서를 내기 전에 "내가 지시한 대로 썼는지" 근거를 하나하나 대조한다. 가장 흔한 함정은, 말투나 눈높이를 맞추는 데만 써야 할 정보가 슬그머니 '객관적 사실의 근거'로 승격되는 것이다. '증거 기반 추론' 단계는 답변의 주요 구간마다 역할·출처·적용된 지시를 짝지어 기록해 두고(answer-support trace), 사용자에게 내보내기 전에 점검한다. 적어 둔 출처가 실제로 있는지, 그 구간을 정말 뒷받침하는지, 모든 기억 사용이 허용 범위에 머물렀는지. 모델이 자기 답에 스스로 감사 기록을 쓰고 셀프 체크를 거치는 셈이다. 전제가 애초에 틀려 있으면 그 위에서 '정교하게 틀린' 답을 통과시킬 위험은 남지만, 최소한의 내부 감사 장치는 갖춘 것이다.
세 단계를 관통하는 철학은 하나다. 기억을 저장하고 검색하는 상류는 건드리지 않고, 꺼낸 다음부터 역할을 조율한다. 덕분에 지금 쓰는 기억 시스템을 갈아엎지 않고 그 위에 보정층으로 얹을 수 있다.
이 보정층을 다섯 종류의 기존 기억 시스템 위에 얹었더니, 아첨이 다섯 모두에서 내려갔다. 특정 시스템에만 통하는 꼼수가 아니라 종류를 가리지 않았다는 뜻이다. 주요 실험은 DeepSeek-V4-Flash를 기반으로 돌렸고, 아첨 지표는 실패율이라 낮을수록 좋다.
가장 크게 떨어진 건 MemoryBank로 82.00에서 51.00까지, 31포인트 내렸다. 가장 완만한 경우도 21포인트를 내렸다. 기존의 다른 네 가지 보정 기법이 같은 지표에서 들쭉날쭉했던 것과 대조된다. 공정성을 위해 모든 기법은 검색 이후 같은 검색 결과를 받아 적용됐다. 보정층이 원래 약했던 시스템의 약점을 특히 크게 메워 줬다는 점도 눈에 띈다.
여기까지만 보면 거의 공짜처럼 보인다. 하지만 아첨을 누른 자리에는 대가가 따른다. 써야 할 유익한 기억까지 안 쓰는 보수성이 함께 커진 것이다.
| 기억 시스템 | 아첨 실패율 (전→후) | 아첨 줄인 폭 | 유익한 기억 실패율 (전→후) | 유익함 잃은 폭 |
|---|---|---|---|---|
| MemoryBank | 82.00 → 51.00 | 31.00 | 3.00 → 9.00 | 6.00 |
| NaiveRAG | 80.00 → 53.50 | 26.50 | 1.00 → 2.00 | 1.00 |
| Mem0 | 76.50 → 52.00 | 24.50 | 4.00 → 1.00 | -3.00 (개선) |
| A-MEM | 79.50 → 55.50 | 24.00 | 2.00 → 4.00 | 2.00 |
| LightMem | 79.50 → 58.50 | 21.00 | 5.00 → 9.00 | 4.00 |
가운데 숫자가 클수록 아첨을 많이 줄였다는 뜻, 맨 오른쪽 숫자가 클수록 유익한 기억을 더 많이 놓쳤다는 뜻. 두 숫자의 크기만 비교하면 이득과 대가가 한눈에 들어온다.
MemoryBank를 보자. 아첨은 31포인트 끌어내렸지만, 유익한 기억을 놓치는 실패율은 6포인트 올랐다(3.00→9.00, 세 배다). 다섯 중 넷이 이렇게 두 축이 반대로 움직였고, Mem0만 유익한 기억 활용까지 함께 좋아졌다. 요컨대 MemAdapter는 '기억이 추론을 오염시키는' 축에서는 꾸준히 이득을 냈지만, '유익한 기억을 적극 활용하는' 축에서는 시스템에 따라 비용을 치렀다.
이 맞바꿈이 도입할 때 가장 먼저 저울질할 지점이다. 아첨을 0으로 만드는 게 목표가 아니다. 아첨을 얼마나 줄이는 대가로 개인화를 얼마나 포기할지, 그 눈금을 서비스 성격에 맞게 맞추는 게 진짜 숙제다.
맞바꿈 말고도 셋이 더 있다. 첫째는 비용이다. 가상 상황을 펼치고, 맥락에 맞춰 되짚고, 근거를 추적·검증하는 세 단계는 곧장 답하는 것보다 더 많은 호출과 토큰을 쓴다. 실시간 응답이 중요한 제품이라면 반드시 재 봐야 할 숫자다.
둘째는 자기 검증의 순환이다. 세 단계 모두 모델 자신의 추론에 기대는데, 평가 역시 상당 부분 LLM이 심판을 본다. 심판과 피심판이 비슷한 편향을 공유하면 '정교하게 틀린' 답을 함께 눈감아 줄 수 있다.
셋째, 주요 성적이 단일 기반 모델 수치라는 점이다. 모델을 바꿔도 같은 이득이 나는지는 원 논문의 해당 표를 직접 확인해야 한다.
온틀은 AI PM을 파견하는 서비스다. 파견형 PM의 가장 큰 강점이 바로 기억이다. 그런데 그 강점이 이 논문이 지목한 함정이 된다. 3개월째 맡은 프로젝트 메모리에 "대표는 벤더 A를 신뢰하고 속도 중심 개발을 선호한다"가 저장돼 있다고 하자. 틀린 기억이 아니다. 하지만 이번 주 과제가 '벤더 재선정'이고 납기 지연율·장애 로그·단가 데이터가 벤더 B를 가리키는데도, 기억에 끌려가는 PM은 "대표님이 A를 선호하시니 A로 가시죠"라고 아첨한다. 보고서는 그럴듯하지만, 결정은 증거가 아니라 과거의 선호를 따라간 것이다.
여기서 PM은 앞의 좋은 상사처럼 움직여야 한다. 먼저 '반사실 유도'로 "'대표는 A 선호' 기억은 보고 톤에만 쓰고 선정 근거로는 쓰지 말라"는 경계를 과제 전에 그려 둔다. '맥락 인식 반성'으로 이번 과제가 재선정임을 확인해 그 기억의 역할을 보고 톤으로 한정한다. 마지막으로 '증거 기반 추론'으로, 최종 결론이 납기·장애·단가 데이터에 제대로 붙어 있는지, 선호 기억이 결론에 부당하게 끼어들지 않았는지 대조한 뒤에야 보고서를 내보낸다.
온틀이 얻는 건 신뢰다. 이 과정이 남기는 근거 기록은 그대로 내부 감사 로그가 된다. 나중에 결정이 뒤집혀도 "그때 무슨 근거로 B를 권했는지"를 되짚을 수 있다. 과거 선호에 기댄 아첨이 아니라 현재 데이터에 기반한 추천, 이것이 사람 컨설턴트 대신 AI PM을 쓸 이유다.
물론 적용한다면 이 기술의 맞바꿈을 감안해, 벤더·예산·일정처럼 객관성이 생명인 결정 과제에만 선별적으로 보정을 세게 켜는 지혜가 필요하다. 대화 톤을 맞추는 일까지 조이면 보고가 건조해질 뿐이다.
방법 자체는 모두 프롬프트 기반 추론 절차로 구성되고, 프롬프트 템플릿이 논문 부록 H.1에 제공된다고 명시돼 있습니다. 상류의 기억 구축·검색을 바꾸지 않고 검색 이후 단계에 얹는 구조여서 보정층으로 적용합니다. 추가 파인튜닝이 필요한지에 대한 별도 언급은 이 발췌 범위에는 없습니다.
구조상 충돌하지 않습니다. 검색·게이팅 기법은 '추론 이전'에서, MemAdapter는 '검색 이후'에서 작동하므로, 개념적으로는 상류 필터와 사후 보정을 함께 쓰는 조합도 상정할 수 있습니다. 다만 그 조합의 실제 성능은 이 논문이 직접 측정한 범위 밖입니다.
논문에 치료 결정 상황이 나오지만 이는 동작을 보여주기 위한 예시입니다. 실제 고위험 적용에는 자기 검증의 순환 편향과 유익한 기억을 과도하게 억제하는 맞바꿈을 반드시 함께 고려해야 합니다. 벤치마크 성적이 좋다는 것과 규제 도메인에서 안전하다는 것은 다른 층위의 검증을 요구합니다.