DUOLABS AI 기능 탐구 19: 비슷한 질문의 답을 재사용하는 시맨틱 캐시

DUOLABS AI 기능 탐구 열아홉 번째 글은 표현은 달라도 의미가 비슷한 질문에 저장된 답변을 재사용하는 시맨틱 캐시입니다.

일반 캐시는 문자열이 정확히 같아야 같은 요청으로 인식합니다. 하지만 사용자는 “로컬 LLM 서버가 뭐야?”와 “사내 AI 서버 종류를 알려줘”처럼 같은 뜻을 여러 표현으로 묻습니다. 시맨틱 캐시는 질문의 의미를 비교해 반복 호출을 줄입니다.

기능 직접 보기: DUOLABS AI 시맨틱 캐시

질문과 생성된 답변이 공개 공유 캐시에 저장되며 다른 방문자가 목록을 보거나 캐시 전체를 비울 수 있습니다. 고객정보, 내부 정책, 계정별 데이터와 기밀 질문을 입력하지 말고 제공된 가상 샘플만 사용하세요.

질문을 벡터로 바꿔 의미를 비교합니다

새 질문이 들어오면 임베딩 모델이 문장을 숫자 벡터로 변환합니다. 저장된 질문 벡터와 코사인 유사도를 계산해 가장 가까운 항목을 찾습니다.

새 질문
→ 임베딩 생성
→ 저장된 질문들과 유사도 비교
├─ 0.85 이상: HIT, 저장된 답변 반환
└─ 0.85 미만: MISS, LLM 답변 생성 후 저장

현재 데모는 유사도 0.85 이상을 같은 의미로 판단합니다. HIT이면 LLM을 다시 호출하지 않고 답변, 매칭된 질문, 유사도와 절감 시간을 표시합니다. MISS이면 기본 챗 모델이 답변을 만들고 질문·답변·임베딩과 생성 시간을 저장합니다.

캐시는 시간과 비용을 함께 줄입니다

반복 질문이 많은 FAQ, 제품 안내와 내부 도움말에서는 같은 답을 매번 생성할 필요가 없습니다. 캐시 HIT는 생성 지연과 토큰 비용을 없애고, 같은 질문에 일관된 답을 제공할 수 있습니다.

화면은 캐시 엔트리 수, 누적 히트와 추정 절감 시간을 보여줍니다. 각 항목에는 질문, 생성 모델, 최초 생성 시간과 히트 수가 표시됩니다.

현재 실행 트레이스에는 실제 LLM을 사용한 MISS만 기록됩니다. HIT는 캐시 항목의 히트 수로 따로 집계되므로 전체 요청 수를 분석할 때 두 기록을 함께 봐야 합니다.

높은 유사도가 같은 정답을 보장하지는 않습니다

다음 두 질문은 단어가 비슷하지만 답이 달라야 합니다.

“이번 달 환불 규정은?”
“지난달 환불 규정은?”

날짜, 사용자 권한, 지역, 제품 버전과 부정 표현처럼 작은 차이가 정답을 바꿀 수 있습니다. 임계값 하나만으로 모든 업무를 안전하게 처리할 수 없습니다.

운영에서는 업무별로 임계값을 평가하고, 금액·날짜·계정 식별자 같은 핵심 슬롯이 다르면 캐시를 사용하지 않도록 추가 조건을 둬야 합니다. 위험한 질문은 유사도가 높아도 원본 시스템을 다시 조회하는 편이 안전합니다.

캐시 키에는 실행 문맥이 포함돼야 합니다

질문 벡터만 비교하면 다른 사용자나 권한의 답변이 섞일 수 있습니다. 실서비스 캐시는 최소한 다음 문맥으로 분리해야 합니다.

테넌트, 사용자 역할과 접근 가능한 데이터 범위

언어, 국가와 제품 버전

모델과 프롬프트 버전

지식베이스와 용어집 버전

도구 사용 여부와 시스템 정책

안전 필터와 응답 형식

캐시된 답변에 개인정보나 권한별 정보가 포함된다면 암호화와 접근통제만으로 부족할 수 있습니다. 저장 자체를 금지하거나 사용자 단위로 격리해야 합니다.

만료와 무효화가 정확도를 지킵니다

가격, 정책과 재고처럼 바뀌는 정보는 과거 답변을 계속 재사용하면 안 됩니다. 데이터 특성에 맞는 TTL을 두고 원본 문서나 정책이 바뀌면 관련 캐시를 무효화해야 합니다.

현재 공개 데모는 최대 200개 항목을 유지하며 한도를 넘으면 오래된 항목부터 제거합니다. 화면에는 최근 50개가 표시됩니다. 용량 제한은 저장소 증가를 막지만 내용의 신선도를 보장하지는 않습니다.

공개 데모에서 안전하게 시험하기

공개 데모의 질문은 최대 8,000자이고 전체 사용자를 합쳐 분당 12회로 제한됩니다. 첫 번째 샘플 질문으로 MISS 또는 기존 HIT를 확인한 뒤, 뜻이 비슷한 두 번째 샘플을 실행해 유사도와 응답 시간 차이를 살펴보세요.

DUOLABS AI 시맨틱 캐시는 의미 기반 재사용 원리를 보여주는 데모입니다. 캐시 전체 비우기는 다른 방문자의 실험에도 영향을 주므로 실행하지 않는 편이 좋습니다.

실서비스에서는 정확도 평가, 테넌트 격리, TTL, 무효화, 민감정보 정책과 원본 데이터 버전을 함께 설계해야 안전한 절감 효과를 얻을 수 있습니다.