GPTCache를 사용해 100배 더 빠른 응답과 대폭적인 비용 절감으로 LLM 앱 구축하기
이 글은 원래 ODBMS에 게시되었으며, 허가를 받아 여기에 다시 게시됩니다.
마법 같은 ChatGPT와 기타 대규모 언어 모델(LLM)은 자연어를 이해하고 복잡한 질문에 답하는 능력으로 거의 모든 사람을 놀라게 했습니다. 그 결과 점점 더 많은 개발자들이 LLM을 활용하여 지능형 애플리케이션을 구축하고 있습니다. 그러나 LLM 애플리케이션의 인기가 높아지고 트래픽이 급증하면 LLM API 호출 비용이 크게 증가합니다. 특히 LLM의 피크 시간대에는 높은 응답 지연 시간도 답답함을 유발하여 사용자 경험에 직접적인 영향을 미칩니다.
이 글에서는 LLM 애플리케이션의 효율성과 속도를 저해하는 과제에 대한 실용적인 솔루션인 GPTCache를 소개하겠습니다. 이 오픈소스 시맨틱 캐시는 캐시 적중 시 최소 100배 더 빠른 검색 속도를 달성하고 LLM 서비스 사용 비용을 0으로 줄이는 데 도움이 될 수 있습니다.
LLM 기반 애플리케이션 구축의 주요 과제
GPTCache를 자세히 살펴보기 전에, 먼저 LLM 기반 지능형 애플리케이션을 구축할 때의 두 가지 주요 과제에 대해 논의해 보겠습니다.
불필요한 API 호출로 인한 비용 급증
애플리케이션은 LLM의 API를 호출하여 LLM의 강력한 추론 기능을 활용할 수 있습니다. 그러나 API 호출은 무료가 아닙니다. 애플리케이션이 프로덕션용이고 사용자 기반이 크다면, 빈번한 API 호출은 막대한 비용을 초래할 수 있습니다. 게다가 LLM이 이미 답변한 의미상 동일한 질문에 대해 불필요한 API 호출 비용을 지불하게 되어 비용과 리소스를 낭비할 수도 있습니다.
높은 응답 지연 시간으로 인한 낮은 성능과 확장성
대규모 언어 모델은 일반적으로 엄청난 워크로드를 처리합니다. ChatGPT를 예로 들어보겠습니다. 2023년 7월 기준 활성 사용자가 1억 명이 넘고, 6월 한 달에만 약 10억 회 방문을 기록했습니다. 이러한 높은 워크로드로 인해 LLM은 특히 피크 시간대에 응답 속도가 느려지며, 이에 의존하는 애플리케이션 역시 느려집니다.
또한 LLM 서비스는 속도 제한을 적용하여, 애플리케이션이 주어진 시간 내에 서버에 보낼 수 있는 API 호출 수를 제한합니다. 속도 제한에 도달하면 일정 시간이 지날 때까지 추가 요청이 차단되어 서비스 중단으로 이어집니다. 이러한 병목 현상은 사용자 경험에 직접적인 영향을 미치고 애플리케이션이 처리할 수 있는 요청 수를 제한할 수 있습니다.
GPTCache란 무엇인가요?
GPTCache는 언어 모델이 생성한 응답을 저장하고 검색함으로써 GPT 기반 애플리케이션의 효율성과 속도를 향상하도록 설계된 오픈소스 시맨틱 캐시입니다. GPTCache는 사용자가 특정 요구 사항에 맞게 캐시를 사용자 지정할 수 있게 하며, 임베딩, 유사도 평가, 저장 위치, 제거 정책에 대한 다양한 선택지를 제공합니다. 또한 GPTCache는 OpenAI ChatGPT 인터페이스와 Langchain 인터페이스를 모두 지원하며, 앞으로 몇 달 안에 더 많은 인터페이스를 지원할 계획입니다.
GPTCache는 어떻게 작동하나요?
간단히 말해, GPTCache는 LLM의 응답을 캐시에 저장합니다. 따라서 사용자가 LLM이 이전에 응답했던 것과 유사한 쿼리를 하면, GPTCache는 LLM을 다시 호출할 필요 없이 결과를 검색해 사용자에게 반환합니다. Redis와 같은 기존 캐시 시스템과 달리 GPTCache는 임베딩을 통해 데이터를 저장하고 검색하는 시맨틱 캐싱을 사용합니다. 임베딩 알고리즘을 활용하여 사용자 쿼리와 LLM의 응답을 임베딩으로 변환하고, Milvus와 같은 벡터 저장소를 사용해 이러한 임베딩에 대해 유사도 검색을 수행합니다.
GPTCache는 LLM Adapter, Pre-processor (Context Manager), Embedding Generator, Cache Manager, Similarity Evaluator, Post-processor의 여섯 가지 핵심 모듈로 구성됩니다.
LLM 어댑터
LLM 어댑터는 외부 상호작용을 위한 GPTCache의 인터페이스 역할을 합니다. 쿼리를 캐시 프로토콜로 변환하고, 캐싱 워크플로를 제어하며, 캐시 결과를 LLM 응답으로 변환합니다. LLM 어댑터를 사용하면 코드를 다시 작성하거나 새로운 API를 배울 필요 없이 모델 간에 전환할 수 있으므로, 다양한 언어 모델을 실험하고 테스트하는 것이 더 간단해집니다.
GPTCache는 이미 OpenAI ChatGPT API, LangChain API, MiniGPT4 API, Llamacpp API를 지원합니다. 로드맵에는 Hugging Face Hub, Bard, Anthropic과 같은 더 많은 API 추가가 포함되어 있습니다.
전처리기
전처리기는 입력에서 중복 정보를 제거하고, 입력 정보를 압축하며, 긴 텍스트를 자르고, 기타 관련 작업을 수행하는 것을 포함하여 LLM으로 전송되는 쿼리를 관리, 분석, 형식화합니다.
임베딩 생성기
임베딩 생성기는 선호하는 임베딩 모델을 사용하여 사용자 쿼리를 임베딩 벡터로 변환합니다. GPTCache는 임베딩 생성을 위해 HuggingFace 및 GitHub의 로컬 모델과 클라우드 임베딩 서비스를 지원합니다. 여기에는 OpenAI embedding API, GPTCache/paraphrase-albert-onnx 모델을 사용하는 ONNX, Hugging Face embedding API, Cohere embedding API, fastText embedding API, SentenceTransformers embedding API, 그리고 이미지 임베딩을 위한 Timm 모델이 포함됩니다.
캐시 관리자
캐시 관리자는 GPTCache의 핵심 모듈입니다. 사용자의 요청과 LLM의 응답을 저장하며 세 가지 구성 요소로 이루어져 있습니다:
임베딩 벡터 저장 및 유사도 검색을 위한 벡터 저장소
사용자 요청 및 해당 LLM 응답을 저장하기 위한 캐시 저장소
Least Recently Used (LRU) 또는 First In, First Out (FIFO) 제거 정책에 따라 캐시 용량을 제어하기 위한 제거 정책
현재 GPTCache는 캐시 저장을 위해 SQLite, PostgreSQL, MySQL, MariaDB, SQL Server, Oracle을 지원하며, 벡터 저장 및 검색을 위해 Milvus, Zilliz Cloud, Weaviate를 지원합니다. 사용자는 필요에 맞게 선호하는 벡터 저장소, 캐시 저장소, 제거 정책을 선택하여 성능, 확장성, 비용의 균형을 맞출 수 있습니다.
유사도 평가기
유사도 평가기는 캐시된 답변이 입력 쿼리와 일치하는지 여부를 결정합니다. GPTCache는 여러 유사도 전략을 결합하는 표준화된 인터페이스를 제공하여, 사용자가 특정 요구 사항과 사용 사례에 따라 캐시 매칭을 사용자 지정할 수 있도록 합니다.
후처리기
후처리기는 캐시가 적중했을 때 사용자에게 반환할 최종 응답을 준비합니다. 답변이 캐시에 없는 경우, LLM 어댑터는 LLM으로부터 응답을 요청하고 이를 캐시 관리자에 다시 기록합니다.
GPTCache의 이점
LLM API 호출 비용의 획기적인 절감
LLM은 각 API 호출마다 요금을 부과합니다. GPTCache는 개발자가 유사하고 반복적으로 묻는 질문에 대해 LLM 응답을 의미적으로 캐시할 수 있도록 도와, 캐시가 적중하면 API 비용을 0으로 줄입니다. GPTCache는 전체 API 호출 수를 줄여 비용을 획기적으로 절감합니다. 특히 트래픽이 매우 높은 애플리케이션에 유용합니다.
응답 속도 100배 향상
GPTCache는 LLM 애플리케이션의 응답 시간을 크게 줄일 수 있습니다. ChatGPT의 피크 시간대에는 응답에 최대 몇 초가 걸릴 수 있습니다. 그러나 GPTCache를 사용하면 애플리케이션이 이전에 요청된 답변을 100밀리초 미만에 검색할 수 있으며, 이는 최소 100배 더 빠른 속도입니다.
향상된 확장성
LLM 응답을 캐싱하면 LLM 서비스의 부하가 줄어들어 앱 확장성이 향상되고, 증가하는 요청을 처리하는 동안 병목 현상을 방지할 수 있습니다.
더 나은 가용성
LLM 서비스는 특정 시간 범위 내에서 앱이 서버에 접근할 수 있는 횟수를 제한하는 속도 제한을 설정하는 경우가 많습니다. GPTCache는 전체 API 호출 수를 줄이고 앱이 증가하는 쿼리량을 처리하도록 빠르게 확장할 수 있게 합니다. 이 접근 방식은 애플리케이션의 사용자 기반이 성장함에 따라 일관된 성능을 보장합니다.
GPTCache를 통해 어떤 이점을 얻을 수 있는지에 대한 자세한 내용은 What is GPTCache 페이지를 참조하세요.
GPTCache와 CVP 스택을 활용하는 AI 챗봇, OSS Chat
GPTCache는 애플리케이션이 더 정확한 결과를 위해 CVP (ChatGPT/LLMs+vector database+prompt as code) stack을 구현하는 Retrieval-Augmented Generation (RAG)에 유용합니다. GitHub 프로젝트에 대한 질문에 답변할 수 있는 AI 챗봇인 OSS Chat은 GPTCache와 CVP 스택이 RAG 시나리오에서 어떻게 작동하는지 보여주는 가장 좋은 예입니다.
OSS Chat의 아키텍처
OSS Chat은 머신 러닝 파이프라인인 Towhee를 활용하여 GitHub 프로젝트의 정보와 관련 문서 페이지를 임베딩으로 변환합니다. 그런 다음 완전 관리형 벡터 데이터베이스 서비스인 Zilliz Cloud에 임베딩을 저장합니다. 사용자가 OSS Chat을 통해 질문하면, Zilliz Cloud는 해당 쿼리와 가장 관련성이 높은 상위 k개 결과를 검색합니다. 그런 다음 이러한 결과는 원래 질문과 결합되어 더 넓은 컨텍스트를 가진 프롬프트를 생성합니다.
프롬프트를 ChatGPT로 보내기 전에, Zilliz Cloud는 먼저 GPTCache에서 답변을 확인합니다. 캐시가 적중하면 GPTCache가 사용자에게 직접 답변을 반환합니다. 캐시가 적중하지 않으면 GPTCache는 원래 프롬프트를 ChatGPT로 보내 응답을 받고, 향후 사용을 위해 이를 다시 캐시에 저장합니다. GPTCache를 통해 OSS Chat은 더 낮은 비용, 더 짧은 응답 지연 시간, 더 적은 개발 노력으로 뛰어난 사용자 경험을 제공할 수 있습니다.
요약
LLM 기반 애플리케이션 구축은 생태계의 모든 사람에게 혜택을 주는 성장 추세입니다. 그러나 앱 개발자는 두 가지 주요 과제에 직면합니다. 바로 API 호출의 높은 비용과 긴 응답 지연 시간입니다. GPTCache는 이러한 과제를 해결하고 네트워크 지연 시간 감소, 가용성 향상, 더 나은 확장성을 포함한 훨씬 더 많은 이점을 제공하는 완벽한 오픈 소스 솔루션입니다.
GPTCache 시작하기에 대한 실습 튜토리얼은 GPTCache documentation을 참조하세요. Community Office Hours에서 질문하거나 아이디어를 공유할 수 있습니다. 또한 GPTCache에 기여하실 수도 있습니다.
계속 읽기

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Balancing Precision and Performance: How Zilliz Cloud's New Parameters Help You Optimize Vector Search
Optimize vector search with Zilliz Cloud’s level and recall features to tune accuracy, balance performance, and power AI applications.



