O que é o GPTCache?
GPTCache é uma biblioteca de código aberto projetada para melhorar a eficiência e a velocidade de aplicativos baseados em GPT, implementando um cache para armazenar as respostas geradas por modelos de linguagem. O GPTCache permite que os usuários personalizem o cache de acordo com suas necessidades, incluindo opções para funções de incorporação, funções de avaliação de similaridade, local de armazenamento e expulsão. Além disso, o GPTCache atualmente oferece suporte à interface do OpenAI ChatGPT e à interface do Langchain.

Construído sobre uma comunidade forte e crescente.
7,971+
Estrelas no GitHub
Por que usar o GPTCache?
Desempenho melhorado
Armazenar respostas de LLM em um cache pode reduzir significativamente o tempo necessário para recuperar a resposta, especialmente quando ela foi solicitada anteriormente e já está presente no cache. Armazenar respostas em um cache pode melhorar o desempenho geral do seu aplicativo.
Redução de despesas
A maioria dos serviços de LLM cobra taxas com base em uma combinação do número de solicitações e da contagem de tokens. O cache das respostas de LLM pode reduzir o número de chamadas API feitas ao serviço, resultando em economia de custos. O cache é particularmente relevante quando lidamos com altos volumes de tráfego, onde os custos de chamadas API podem ser substanciais.
Melhor escalabilidade
O cache das respostas de LLM pode melhorar a escalabilidade do seu aplicativo, reduzindo a carga no serviço de LLM. O cache ajuda a evitar gargalos e garante que o aplicativo possa lidar com um número crescente de solicitações.
Custo de desenvolvimento minimizado
Um cache semântico pode ser uma ferramenta valiosa para ajudar a reduzir os custos durante a fase de desenvolvimento de um aplicativo de LLM. Um aplicativo de LLM requer uma conexão com as APIs de LLM mesmo durante o desenvolvimento, o que pode se tornar caro. O GPTCache oferece a mesma interface que as APIs de LLM e pode armazenar dados gerados por LLM ou simulados. O GPTCache ajuda a verificar os recursos do seu aplicativo sem conectar-se às APIs de LLM ou à rede.
Menor latência de rede
Um cache semântico localizado mais próximo da máquina do usuário reduz o tempo necessário para recuperar dados do serviço de LLM. Ao reduzir a latência da rede, você pode melhorar a experiência geral do usuário.
Disponibilidade melhorada
Os serviços de LLM frequentemente impõem limites de taxa, que são restrições que as APIs colocam no número de vezes que um usuário ou cliente pode acessar o servidor em um determinado período de tempo. Alcançar um limite de taxa significa que solicitações adicionais serão bloqueadas até que um certo período tenha decorrido, levando a uma falha no serviço. Com o GPTCache, você pode escalar rapidamente para acomodar um volume crescente de consultas, garantindo desempenho consistente à medida que a base de usuários do seu aplicativo cresce.
No geral, desenvolver um cache semântico para armazenar respostas de LLM pode oferecer diversos benefícios, incluindo melhor desempenho, redução de despesas, melhor escalabilidade, personalização e redução da latência da rede.
Como o GPTCache funciona
O GPTCache aproveita a localidade dos dados em serviços online, armazenando dados acessados com frequência, reduzindo o tempo de recuperação e aliviando a carga do servidor backend. Ao contrário dos sistemas tradicionais de cache, o GPTCache usa cache semântico, identificando e armazenando consultas semelhantes ou relacionadas para melhorar as taxas de acerto do cache.
Usando algoritmos de incorporação, o GPTCache converte consultas em incorporações e utiliza um armazenamento vetorial para pesquisa de similaridade, permitindo a recuperação de consultas relacionadas do cache. O design modular do GPTCache permite que os usuários personalizem seu cache semântico com várias implementações para cada módulo.
Embora o cache semântico possa resultar em falsos positivos e negativos, o GPTCache oferece três métricas de desempenho para ajudar os desenvolvedores a otimizar seus sistemas de cache.
Esse processo permite que o GPTCache identifique e recupere consultas semelhantes ou relacionadas do armazenamento de cache, conforme ilustrado no diagrama abaixo.
Customize semantic cache
GPTCache was built with a modular design to make it easy for users to customize their semantic cache. Each module has options for the users to choose from to fit their needs.
Pre-processor Pre-processor manages, analyzes, and formats the queries sent to LLMs, including removing redundant information from inputs, compressing input information, cutting long texts, and performing other related tasks.
LLM Adapter The LLM Adapter integrates with different LLM models and is standardized on the OpenAI API, unifying their APIs and request protocols. The LLM Adapter allows for easier experimentation and testing with various LLM models, as you can switch between them without having to rewrite your code or learn a new API. Support is available for:
- OpenAI ChatGPT API
- langchain
- Minigpt4
- Llamacpp
- Roadmap — Hugging Face Hub, Bard and Anthropic
Embedding Generator The Embedding Generator generates embeddings with the model of your choice from the request queue to execute a similarity search. Models that are supported include OpenAI embedding API. ONNX with the GPTCache/paraphrase-albert-onnx model, Hugging Face embedding API, Cohere embedding API, fastText embedding API, and the SentenceTransformers embedding API and Timm models for image embeddings.
Cache Store Cache Store is where the response from LLMs, such as ChatGPT, is stored. Cached responses are retrieved to assist in evaluating similarity and are returned to the requester if there is a good semantic match. GPTCache supports SQLite, PostgreSQL, MySQL, MariaDB, SQL Server, and Oracle. Supporting popular databases means that users can choose the database that best fits their needs, depending on performance, scalability, and cost.
Vector Store options GPTCache supports a Vector Store module, which helps to find the K most similar requests based on the extracted embeddings from the input request. This functionality can help assess the similarity between requests. In addition, GPTCache provides a user-friendly interface that supports various vector stores, including Milvus, Zilliz Cloud, Milvus Lite, Hnswlib, PGVector, Chroma, DocArray and FAISS. These options give users a range of choices for vector stores, which can affect the efficiency and accuracy of the similarity search functionality in GPTCache. GPTCache aims to provide flexibility and cater to a broader range of use cases by supporting multiple vector stores.
Eviction Policy Management Cache Manager in GPTCache controls the operations of both the Cache Store and Vector Store modules. When the cache becomes full, a replacement policy determines which data to evict to make room for new data. GPTCache currently supports two basic options: - LRU (Least Recently Used) eviction policy - FIFO (First In, First Out) eviction policy These are both standard eviction policies used in caching systems.
Similarity Evaluator The Similarity Evaluator module in GPTCache collects data from Cache Storage and Vector Store. It uses various strategies to determine the similarity between the input request and the requests from the Vector Store. The similarity determines whether a request matches the cache. GPTCache provides a standardized interface for integrating various similarity strategies and a collection of implementations. These different similarity strategies allow GPTCache to provide flexibility in determining cache matches based on other use cases and needs.
Post-Processor Post-processor prepares the final response to return to the user when the cache is hit. If the answer is not in the cache, the LLM Adapter requests responses from LLM and writes them back to the Cache Manager.
