범용 CPU에서 LLM 웹 검색을 빠르게 만드는 3계층 캐시 구조
배경
실시간 웹 검색형 LLM 서비스는 답변 생성 외에도 검색, 대화 기록 관리, 임베딩 계산, 원격 모델 호출을 수행한다. 사용자가 후속 질문을 보내면 시스템은 같은 대화 맥락을 다시 읽고, 이전 질문과 사실상 같은 검색을 반복하며, 다른 세션에서 이미 처리한 URL의 임베딩을 다시 만들 수 있다. 오픈소스 답변 엔진 OreoLook는 최종 응답 캐시에만 의존하지 않고 검색 과정 곳곳의 중복을 줄이는 방식을 제시한다.
3개 계층의 역할
- 세션 컨텍스트 윈도우: 최근 대화 내용을 Redis에 저장해 빠르게 읽는다. 저장 범위를 넘는 내용은 Huffman 방식으로 압축해 디스크 아카이브로 이동한다. 백그라운드 LRU 프로세스가 유휴 세션을 옮기고 필요할 때 복원하므로, 보존 정책 안에서는 수시간 또는 수일 뒤에도 대화를 이어갈 수 있다.
- 시맨틱 질의 캐시: 질의를 임베딩 벡터로 바꾼 뒤 코사인 유사도로 과거의 유사 질의를 찾는다. 표현은 다르지만 의도가 비슷한 요청을 발견하면 검색과 원격 LLM 호출의 일부를 건너뛸 수 있다.
- URL 임베딩 캐시: 여러 세션이 같은 웹페이지를 참고할 수 있다는 점을 활용한다. URL을 기준으로 임베딩을 재사용해 동일한 페이지에 대한 벡터 계산을 반복하지 않는다.
평가 결과와 주의점
평가 구성은 8 vCPU와 32GB 메모리를 갖춘 Intel Cascade Lake 서버 한 대였다. 세 개의 컨테이너 복제본에서 30개의 Hypercorn 워커 프로세스를 실행했다. 저자들이 보고한 수치는 Redis keyspace 적중률 89.3%, 약 0.1밀리초의 읽기 지연, 측정된 Redis 메모리 오버헤드 1.38MB다.
다만 수치의 의미를 구분해서 봐야 한다. keyspace 적중은 요청한 키가 존재했다는 뜻일 뿐, 전체 질의가 캐시에서 해결됐거나 종단 간 지연이 같은 비율로 감소했다는 뜻은 아니다. 의미 캐시는 유사도 임계값, 웹 정보의 최신성, 사용자 간 데이터 격리라는 문제도 안고 있다. 실시간 페이지가 바뀐 뒤 이전 결과를 재사용하면 부정확한 답변으로 이어질 수 있으므로 만료와 무효화 정책, 평가 방법이 중요하다.
의미와 영향
OreoLook의 접근법은 대규모 모델을 로컬 가속기에서 실행하지 않고도 검색 서비스를 구성하는 현실적인 분업을 보여준다. CPU는 웹 검색 오케스트레이션, 세션 관리, 캐시, 임베딩을 담당하고, 최종 답변 합성은 원격 추론 제공업체가 처리한다. 제한된 하드웨어와 예산으로 대화형 검색을 개발하는 팀은 불필요한 검색, 임베딩 계산, 모델 호출을 줄이는 설계 참고점을 얻을 수 있다.
또한 캐시의 대상을 생성된 텍스트에서 컨텍스트, 검색 의도, 검색된 페이지의 특징으로 확장했다는 점이 핵심이다. 이는 장기 에이전트 메모리, 캐시 격리, 실제로 얼마나 많은 후속 계산을 제거했는지 측정하는 평가 연구로 이어질 수 있다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…