응답 캐시는 왜 일률적으로 적용할 수 없나
대모델 캐시에서 가장 어려운 것은 「저장」이 아니라 「언제 재사용하면 안 되는가」다.
응답 캐시는 안정적인 장면에 봉사해야 하며, 개인화, 시효성, 권한 경계라는 세 마지노선을 깨뜨려서는 안 된다.
캐시에 적합한 요청
| 장면 | 설명 |
|---|
| 고정 FAQ | 같은 질문이 반복되면 기존 결과를 바로 반환 |
| 포맷 변환 | 입출력의 결정성이 높음 |
| 템플릿화된 설명 | 내용이 안정적이고 컨텍스트에 의존하지 않음 |
캐시 금지 장면
| 의존 항목 | 왜 캐시하면 안 되나 |
|---|
| 사용자 신원 | 사람마다 다름 |
| 계좌 상태 | 수시로 변동 |
| 실시간 재고 | 초 단위로 만료 |
| 최신 정책 | 상류에서 갱신됨 |
계층 캐시: 중간 결과는 캐시 가능
정리
대모델 시스템은 응답 캐시로 지연과 비용을 낮출 수 있지만, 캐시는 반드시 모델, Prompt, 지식베이스, 권한 버전에 바인딩되어야 하며 실효 정책을 설정해야 한다. 안정적인 결과를 캐시하기에 적합하고, 강한 개인화와 강한 시효성을 가진 답변에는 적합하지 않다.
핵심 통찰
- 캐시 문제의 출제 의도는 「긍정적 이득」이 아니라 「부정 조건」이다 — 돈을 아끼고 속도를 높인다는 것은 상식이라 누구나 답할 수 있다. 진짜 변별력은 「언제 재사용하면 안 되는가」를 말할 수 있는지에 있다. 이 사고는 모든 시스템 설계 문제에 이식할 수 있다: 먼저 경계를 답하고 나서 이득을 답하라.
- 캐시 키 = 답변에 영향을 주는 모든 변수의 곱 — 어떤 차원을 키에 넣을지 판정하는 기준은 하나뿐이다: 그것이 바뀌면 답이 바뀌는가? 바뀐다면 반드시 키에 넣어야 한다. 전통 웹 캐시는 URL + 파라미터면 되지만, 대모델은 모델 버전, Prompt 버전, 지식베이스 버전이라는 세 개의 「숨은 변수」가 추가되며 바로 이것들이 가장 잘 누락된다.
- 권한은 반드시 캐시 키에 들어가야 하며, 그러지 않으면 캐시 자체가 월권 통로가 된다 — 이것이 「성능 최적화」에서 「보안 문제」로 도약하는 핵심 지점이다. 고권한 사용자가 생성한 답변을 저권한 사용자가 히트하는 것은 「캐시가 부정확한」 것이 아니라 실제 데이터 유출이다.
- 「잘못 재사용하는 것」이 「재사용하지 않는 것」보다 대가가 훨씬 크다 — 캐시 미스는 돈을 더 쓸 뿐이지만, 잘못된 히트는 틀린 답을 대량으로 배포한다. 그래서 캐시 전략은 보수적으로 기울어야 한다: 적게 히트할지언정 잘못 히트하지 말 것.
- 중간 결과와 최종 답변의 캐시 가치는 완전히 다르다 — 검색 결과, 도구 호출 결과, 구조화 파싱 결과는 「사실 계층」으로 상대적으로 안정적이고 계산이 비싸므로 캐시에 적합하다. 최종 답변은 「표현 계층」으로 현재 컨텍스트와 강하게 결합되므로 현장에서 생성해야 한다. 계층 캐시는 연산력 절약과 뒤섞임 방지라는 두 이득을 동시에 얻는다.
- 낡은 어조, 낡은 권한, 낡은 상태는 서로 다른 세 종류의 오염이다 — 어조 문제는 경험에 영향을 주고, 권한 문제는 보안에 영향을 주며, 상태 문제는 정확성에 영향을 준다. 전체 답변 캐시는 이 셋을 한꺼번에 끌고 온다.
- TTL 길이 자체가 조절 가능한 전략 차원이다 — 캐시는 이진 선택(캐시할까 말까)이 아니라 연속 스펙트럼이다. 「고빈도 반복 + 쉽게 변함」이라는 사분면에는 짧은 TTL이 유일하게 적합한 해법이며, 영구 캐시도 아니고 캐시 안 함도 아니다.
- 캐시 항목에는 메타데이터가 있어야 거버넌스할 수 있다 — 출처, 버전, 권한, 만료 시각을 함께 담아야 지정 실효, 감사, 역추적을 논할 수 있다. 메타데이터가 없는 캐시는 사고가 나면 전체를 비우는 수밖에 없다.
엔지니어링 실전 Tips
- 상용 전에 「키 누락 훈련」을 한 번 할 것: 모델 버전, Prompt 버전, 지식베이스 버전을 각각 한 번씩 바꿔보고 캐시가 잘못 히트하는지 볼 것. 이 세 항목은 요청 파라미터에 없기 때문에 가장 잘 누락된다.
- 권한 범위는 후처리 필터가 아니라 키에 넣을 것을 권장한다: 후처리 필터링(먼저 히트한 뒤 검증)은 답변이 이미 생성/추출되었다는 뜻이며, 필터 로직에 구멍이 있으면 바로 유출된다. 키에 넣는 것이 구조적 격리다.
- 캐시 항목에 「출처」 표시를 붙일 것: 잘못된 결과가 확산될 때 출처별로 일괄 실효시킬 수 있으며 전체 저장소를 비울 필요가 없다.
- 고위험 답변은 캐시를 바로 우회할 것: 의료, 법률, 금융, 금액과 정책이 관련된 답변은 차라리 매번 다시 계산하라. 원문 표현은 「고위험 답변은 아예 캐시에 진입시키지 말라」이다.
- 전체 답변 캐시보다 중간 결과 캐시를 우선할 것: 검색과 도구 호출이 흔히 지연의 대부분을 차지하므로, 그것들을 캐시하면 이득은 전체 답변 캐시에 근접하면서 뒤섞임과 월권 리스크는 거의 없다.
- 짧은 TTL 장면의 식별 신호: 「같은 사용자군이 짧은 시간에 같은 질문을 반복하지만 답은 언제든 바뀔 수 있음」 — 예를 들어 이벤트 규칙, 한정 정책, 랭킹. 이때는 TTL이 수십 초여도 히트율이 상당하다.
- Token 절약의 계산은 「반복 질문 비율」에 달아야 한다: 캐시 이득 ≈ 반복 요청 비율 × 1회 생성 비용. 업무에서 롱테일 질문이 절대다수라면 응답 캐시의 ROI는 기대보다 훨씬 낮으며, 이때는 Prompt 접두 캐시 같은 다른 수단으로 전환해야 한다.