GPTCache, LangChain, 강력한 연합
GPTCache 소개
ChatGPT 및 기타 대규모 언어 모델(LLM)은 광범위한 애플리케이션 개발에 활용할 수 있는 놀라운 범용성을 갖추고 있습니다. 그러나 LLM으로 개발된 애플리케이션의 인기가 높아지고 트래픽 수준이 증가함에 따라, LLM API 호출과 관련된 비용이 감당하기 어려울 정도로 비싸질 수 있습니다. 또한 LLM 서비스는 대량의 요청을 처리할 때 느린 응답 시간을 보일 수 있습니다.
이 문제를 해결하기 위해, 우리는 LLM 응답을 저장하기 위한 시맨틱 캐시 구축에 전념하는 GPTCache 프로젝트를 만들었습니다.
LangChain 소개
대규모 언어 모델(LLM)은 개발자가 이전에는 불가능했던 애플리케이션을 구축할 수 있게 해주는 혁신적인 기술이 되고 있습니다. 그러나 단일 LLM에만 의존하면 진정으로 강력한 애플리케이션을 만들기 어려운 경우가 많습니다. 진정한 힘은 이를 다른 계산 또는 지식 소스와 결합하는 데 있습니다. 따라서 LangChain 라이브러리는 이러한 유형의 애플리케이션 개발을 지원하는 것을 목표로 합니다.
LangChain Cache의 현재 상태
GPTCache를 통합하기 전, LangChain 캐시는 문자열 매칭을 기반으로 했습니다. 이 문자열 매칭 방식에서는 두 요청이 동일한 문자열을 가질 때 후속 요청이 캐시에서 해당 데이터를 검색할 수 있습니다. 구현에는 Memory Cache, SQLite Cache, 및 Redis Cache가 포함됩니다.
사용법은 대략 다음과 같습니다:
import langchain
from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()
llm = OpenAI(model_name="text-davinci-002", n=2, best_of=2)
// CPU times: user 14.2 ms, sys: 4.9 ms, total: 19.1 ms
// Wall time: 1.1 s
llm("Tell me a joke")
// CPU times: user 162 µs, sys: 7 µs, total: 169 µs
// Wall time: 175 µs
llm("Tell me a joke")
LangChain Cache 분석
런타임 관점에서 보면, 요청이 캐시에 적중하면 응답 시간이 크게 줄어든다는 것이 분명합니다. 동시에 현재 LLM 사용 비용은 상대적으로 높습니다. OpenAI 및 Cohere와 같은 온라인 서비스를 사용하면 일반적으로 토큰을 통해 요금이 부과되거나, 해당 LLM 모델을 직접 배포하게 되며, 1회 추론 시간은 CPU, 메모리, GPU 등을 포함한 컴퓨터 리소스의 수에 따라 달라집니다. 동시에 여러 요청이 동시에 처리되는 경우 컴퓨팅 리소스에 대한 요구 사항이 더 높아집니다. 요청이 캐시에 여러 번 적중하면 컴퓨터 리소스에 대한 부담을 줄이고 더 많은 컴퓨팅 리소스를 다른 작업에 제공할 수 있습니다.
LangChain이 캐시에 적중하기 위한 조건은 두 질문이 동일해야 한다는 것입니다. 안타깝게도 실제 사용에서는 여전히 캐시에 적중하기 어렵고, 캐시 활용률을 개선할 여지가 많습니다.
GPTCache 통합
GPTCache의 통합은 LangChain 캐시 모듈의 기능을 크게 향상시키고, 캐시 적중률을 높이며, 따라서 LLM 사용 비용과 응답 시간을 줄일 것입니다. GPTCache는 먼저 입력에 대해 임베딩 작업을 수행하여 벡터를 얻은 다음, 캐시 스토리지에서 벡터 근사 검색을 수행하기 때문입니다. 검색 결과를 받은 후 유사도 평가를 수행하고 설정된 임계값에 도달하면 반환합니다. 임계값을 조정하면 퍼지 검색 결과의 정확도를 변경할 수 있습니다.
LangChain에서 유사도 검색을 위해 GPTCache를 사용하는 예:
from gptcache import Cache
from gptcache.adapter.api import init_similar_cache
from langchain.cache import GPTCache
import hashlib
def get_hashed_name(name):
return hashlib.sha256(name.encode()).hexdigest()
def init_gptcache(cache_obj: Cache, llm: str):
hashed_llm = get_hashed_name(llm)
init_similar_cache(cache_obj=cache_obj, data_dir=f"similar_cache_{hashed_llm}")
langchain.llm_cache = GPTCache(init_gptcache)
# 처음에는 아직 캐시에 없으므로 더 오래 걸립니다
# CPU times: user 1.42 s, sys: 279 ms, total: 1.7 s
# Wall time: 8.44 s
llm("Tell me a joke")
# 이것은 정확히 일치하므로 캐시에서 찾습니다
# CPU times: user 866 ms, sys: 20 ms, total: 886 ms
# Wall time: 226 ms
llm("Tell me a joke")
# 이것은 정확히 일치하지는 않지만, 의미적으로 거리 내에 있으므로 히트합니다!
# CPU times: user 853 ms, sys: 14.8 ms, total: 868 ms
# Wall time: 224 ms
llm("Tell me joke")
우리는 GPT-Cache의 기능을 계속 확장하고 있으며, 사용해 볼 기회가 있다면 어떻게 생각하는지 알려주세요. 또한 확인해 볼 만한 훌륭한 리소스도 여러 가지 준비되어 있습니다!
참고 자료:
계속 읽기

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

Zilliz Cloud Update: Tiered Storage, Business Critical Plan, Cross-Region Backup, and Pricing Changes
This release offers a rebuilt tiered storage with lower costs, a new Business Critical plan for enhanced security, and pricing updates, among other features.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.



