무엇인가
검색 허용성(retrieval admissibility)은 미국 아칸소대 리틀록 연구진이 2026년 10월 5일 arXiv에 올린 「The Right Memory in the Wrong Context: Verifying Retrieval Admissibility in Long-Term Agent Memory」(arXiv 2610.07309, NeurIPS 2026 워크숍 채택)가 정식화한 개념입니다.
관련성은 기록이 질문에 답할 수 있는가를 묻고, 허용성은 그 기록을 답에 써도 되는가를 묻는다.
호텔 컨시어지 AI가 다른 투숙객의 결혼기념일 메모를 꺼내 "케이크는 어떠세요?"라고 답하는 장면이 문제의 모양입니다. 검색은 잘했고, 꺼낸 기억은 질문과 주제가 정확히 맞았습니다. 형사소송법의 증명력과 증거능력처럼, 자격 심사가 먼저고 가치 판단은 나중입니다. 기억의 주인, 작성 시각, 이후 무효가 됐는지, 삭제 요청이 있었는지는 본문 텍스트 바깥의 메타데이터라서 임베딩 점수로는 볼 수 없습니다.
이 논문은 새 검색 알고리즘이 아니라 평가 프로토콜입니다. 기억 시스템이 안전한지를 정직하게 재는 방법을 설계했습니다.
어떻게 동작하나
질의를 텍스트 하나가 아니라 묶음으로 봅니다. 질의 텍스트, 인증된 주체, 적용 정책, 질의 의도(현재·이력), 평가 시각입니다. 기억마다 관련성과 세 자격 축 — 범위(내 네임스페이스인가)·정책(이 목적에 써도 되나)·수명(생애 주기 상태가 의도와 맞나) — 을 매기고, 각 값은 1·0·?(미확정) 중 하나입니다.
수명 축은 상태와 의도의 짝입니다. 같은 '대체된' 기록이 현재 상태를 묻는 질문에서는 0, 변화 이력을 묻는 질문에서는 1입니다.
| 기록 상태 / 질의 의도 | 현재 | 이력 | 모름 |
|---|---|---|---|
| 현재 | 1 | 1 | 1 |
| 낡음 · 대체됨 | 0 | 1 | ? |
| 모름 | ? | ? | ? |
그래서 "오래된 기억은 지운다"는 질문 무관 규칙은 틀린 해법입니다. 실제로 현재값 전용 경로는 상위 100건 필수 증거 재현율이 0.824로 네임스페이스 경로(0.866)보다 낮았습니다.
실험이 보여 준 것
RHELM·MemOps 공개 데이터의 질의 3,767개, 기억 182,908건으로 쟀습니다(같은 임베딩 Qwen3-Embedding-8B, 상위 20건).
| 경로 | 필수 증거 재현율 | 80% 도달률 | 유사도 계산 |
|---|---|---|---|
| 전역 검색 | .432 | .237 | 90,122 |
| 같은 크기 무작위 분할 | .061 | .024 | 1,540 |
| 네임스페이스 사전 필터 | .533 | .311 | 1,551 (98.3%↓) |
| 전역 → 사후 필터 (깊이 500) | .531 | .311 | 90,122 |
효과는 후보 크기가 아니라 출처에서 나왔고, 사후 필터는 같은 결과에 58배 계산을 썼습니다. 본문만 읽는 LLM 검증기는 위반을 가르는 ROC-AUC가 GPT-5.6 Sol .626, Gemini 3.6 Flash .522에 그쳤고, 어떤 임계값도 필수 증거 오거부 1% 제약을 지키며 위반을 거르지 못했습니다. 리더 실험에서는 한 모델(DeepSeek V4 Pro)이 부적격한 관련 기억이 프롬프트에 들어오면 15.6%p 더 말했습니다. 리더의 분별력에 기대지 말고 프롬프트에 넣기 전에 막아야 한다는 것이 결론입니다.
빠른 시작
공개 저장소의 예제는 GPU·API 키 없이 합성 데이터로 돕니다(README).
git clone https://github.com/ziwang11112/right-memory-wrong-context.git
cd right-memory-wrong-context
uv sync --locked --extra dev --extra plots
uv run --no-sync python -m scripts.run_retrieval_experiment run --cases tests/fixtures/retrieval_cases.jsonl --protocol experiments/frozen_natural_protocol.json --output tmp/retrieval_routes.jsonl
내 기억 시스템에 붙일 게이트는 짧습니다. 핵심은 3치 판정과 제외 사유 기록입니다.
def and3(*xs):
if any(x == 0 for x in xs):
return 0
if all(x == 1 for x in xs):
return 1
return "?"
def lifecycle(state, intent):
if state is None or intent is None:
return "?"
if state == "current":
return 1
return 1 if intent == "history" else 0 # stale / superseded
한계와 주의
- 네임스페이스는 '주어진다'. 가장 강한 결과는 신뢰할 수 있는 출처 라벨을 전제로 한다. 라벨 손상 실험에서 네임스페이스 거짓 거부·누락은 20%부터 전역 검색보다 못해졌고, 정책 거짓 거부와 수명 거짓 '낡음'은 단 2%에서 깨끗한 네임스페이스 경로보다 나빠졌다. 거르기를 세게 하는 방향의 실수가 더 비싸다.
- 정책 축이 가장 약하다. 박사급 검토자 둘의 일치도(크리펜도르프 알파)가 범위 .981인데 정책은 .083이었다. 정책 축은 '공개 필드와의 일관성'으로만 읽는다. 네임스페이스는 '누구의 것'을 거르지 '무슨 목적'을 거르지 않는다.
- 범위가 좁다. 공개 데이터 두 종류, 판사 하나(Claude Haiku 4.5), 지연시간 주장 없음, 그래프 기억은 범위 밖이다. 리더 정답률 +5~7%p는 재현율도 함께 올라 관찰적 연관이다.
- 성능용 파티션을 보안 경계로 착각하지 않는다. 벡터 DB의 테넌트 힌트처럼 필터를 빼먹으면 전체가 검색되는 구조는 신뢰할 수 있는 네임스페이스가 아니다.
- 검색에서 가리는 것은 삭제가 아니다. 한국 개인정보 보호법 제36조는 삭제 시 복구·재생되지 않도록 조치하라고 요구한다. 수명 축의 0은 검색 시점 방어선일 뿐이다.



