GPTCache, LangChain, Aliança Forte
Introdução ao GPTCache
ChatGPT e outros grandes modelos de linguagem (LLMs) têm uma versatilidade incrível que pode ser usada para uma ampla gama de desenvolvimento de aplicações. No entanto, à medida que a popularidade das aplicações desenvolvidas com LLMs aumenta e os níveis de tráfego crescem, o custo associado às chamadas de API de LLM pode se tornar proibitivamente caro. Além disso, os serviços de LLM podem apresentar tempos de resposta lentos ao lidar com grandes volumes de solicitações.
Para enfrentar esse desafio, criamos o projeto GPTCache, dedicado a construir um cache semântico para armazenar respostas de LLM.
Introdução ao LangChain
Grandes modelos de linguagem (LLMs) estão se tornando uma tecnologia transformadora que permite aos desenvolvedores criar aplicações que antes eram impossíveis. No entanto, depender exclusivamente de um único LLM muitas vezes dificulta a criação de uma aplicação verdadeiramente poderosa. O verdadeiro poder está em combiná-los com outras fontes computacionais ou de conhecimento. Portanto, a biblioteca LangChain visa auxiliar no desenvolvimento desses tipos de aplicações.
Status atual do LangChain Cache
Antes de integrar o GPTCache, o cache do LangChain era baseado em correspondência de strings. Com essa abordagem de correspondência de strings, a solicitação posterior pode recuperar os dados correspondentes do cache quando duas solicitações têm strings idênticas. A implementação inclui Memory Cache, SQLite Cache e Redis Cache.
O uso é aproximadamente o seguinte:
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")
Análise do LangChain Cache
Do ponto de vista do tempo de execução, é claro que, se uma solicitação atingir o cache, isso reduzirá significativamente o tempo de resposta. Ao mesmo tempo, o custo atual de usar LLM é relativamente alto. O uso de serviços online como OpenAI e Cohere geralmente incorre em cobranças por meio de tokens ou pela implantação do modelo LLM correspondente por conta própria, com o tempo de inferência único dependendo do número de recursos computacionais, incluindo CPU, memória, GPU etc. Ao mesmo tempo, se várias solicitações forem processadas simultaneamente, haverá requisitos maiores para recursos de computação. Se as solicitações atingirem o cache inúmeras vezes, isso pode reduzir a pressão sobre os recursos computacionais e fornecer mais recursos de computação para outras tarefas.
A condição para o LangChain atingir o cache é que duas perguntas devem ser idênticas. Infelizmente, ainda é difícil atingir o cache no uso real, e há muito espaço para melhoria na taxa de utilização do cache.
Integração do GPTCache
A integração do GPTCache melhorará significativamente a funcionalidade do módulo de cache do LangChain, aumentará a taxa de acerto do cache e, assim, reduzirá os custos de uso de LLM e os tempos de resposta. Porque o GPTCache primeiro realiza operações de embedding na entrada para obter um vetor e, em seguida, conduz uma busca por aproximação vetorial no armazenamento de cache. Depois de receber os resultados da busca, ele realiza uma avaliação de similaridade e retorna quando o limite definido é alcançado. Ajustar o limite pode alterar a precisão de seus resultados de busca fuzzy.
Um exemplo de uso do GPTCache para busca por similaridade no LangChain:
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)
# Na primeira vez, ainda não está no cache, então deve demorar mais
# CPU times: user 1.42 s, sys: 279 ms, total: 1.7 s
# Wall time: 8.44 s
llm("Tell me a joke")
# Esta é uma correspondência exata, então ele a encontra no cache
# CPU times: user 866 ms, sys: 20 ms, total: 886 ms
# Wall time: 226 ms
llm("Tell me a joke")
# Esta não é uma correspondência exata, mas está semanticamente dentro da distância, então acerta!
# CPU times: user 853 ms, sys: 14.8 ms, total: 868 ms
# Wall time: 224 ms
llm("Tell me joke")
Continuamos a desenvolver a funcionalidade do GPT-Cache e, se você tiver a chance de experimentá-lo, conte-nos o que achou. Também temos vários ótimos recursos para você conferir!
Referências:
Continue lendo

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Expanding Our Global Reach: Zilliz Cloud Launches in Azure Central India
Zilliz Cloud expands to Azure Central India. This new region helps customers meet compliance, reduce latency, and optimize cloud costs when building AI applications.



