Qu'est-ce que GPTCache ?
GPTCache est une bibliothèque open-source conçue pour améliorer l'efficacité et la vitesse des applications basées sur GPT en mettant en œuvre un cache pour stocker les réponses générées par les modèles de langage. GPTCache permet aux utilisateurs de personnaliser le cache selon leurs besoins, y compris des options pour les fonctions d'embedding, les fonctions d'évaluation de similarité, l'emplacement de stockage et l'éviction. De plus, GPTCache prend actuellement en charge l'interface OpenAI ChatGPT et l'interface Langchain.

Construit sur une communauté forte et en croissance.
7,971+
Étoiles GitHub
Pourquoi utiliser GPTCache ?
Performance améliorée
Stocker les réponses des LLM dans un cache peut réduire considérablement le temps nécessaire pour récupérer la réponse, surtout lorsqu'elle a été précédemment demandée et est déjà présente dans le cache. Stocker les réponses dans un cache peut améliorer la performance globale de votre application.
Coûts réduits
La plupart des services LLM facturent des frais basés sur une combinaison du nombre de requêtes et du nombre de tokens. La mise en cache des réponses LLM peut réduire le nombre d'appels API effectués vers le service, ce qui se traduit par des économies. La mise en cache est particulièrement pertinente lorsqu'on traite des niveaux de trafic élevés, où les coûts des appels API peuvent être substantiels.
Meilleure évolutivité
La mise en cache des réponses LLM peut améliorer l'évolutivité de votre application en réduisant la charge sur le service LLM. La mise en cache aide à éviter les goulots d'étranglement et garantit que l'application peut gérer un nombre croissant de requêtes.
Coût de développement minimisé
Un cache sémantique peut être un outil précieux pour aider à réduire les coûts pendant la phase de développement d'une application LLM (Modèle de Langage). Une application LLM nécessite une connexion aux API LLM même pendant le développement, ce qui pourrait devenir coûteux. GPTCache offre la même interface que les API LLM et peut stocker des données générées par LLM ou simulées. GPTCache aide à vérifier les fonctionnalités de votre application sans se connecter aux API LLM ou au réseau.
Latence réseau réduite
Un cache sémantique situé plus près de la machine de l'utilisateur, réduisant le temps nécessaire pour récupérer les données du service LLM. En réduisant la latence réseau, vous pouvez améliorer l'expérience utilisateur globale.
Disponibilité améliorée
Les services LLM appliquent fréquemment des limites de débit, qui sont des contraintes que les API imposent sur le nombre de fois qu'un utilisateur ou un client peut accéder au serveur dans un laps de temps donné. Atteindre une limite de débit signifie que des requêtes supplémentaires seront bloquées jusqu'à ce qu'une certaine période se soit écoulée, conduisant à une interruption de service. Avec GPTCache, vous pouvez rapidement vous adapter pour accueillir un volume croissant de requêtes, assurant une performance constante à mesure que la base d'utilisateurs de votre application s'étend.
Globalement, développer un cache sémantique pour stocker les réponses des LLM peut offrir divers avantages, notamment une meilleure performance, des coûts réduits, une meilleure évolutivité, une personnalisation et une latence réseau réduite.
Comment fonctionne GPTCache
GPTCache tire parti de la localité des données dans les services en ligne en stockant les données fréquemment accédées, réduisant le temps de récupération et allégeant la charge du serveur backend. Contrairement aux systèmes de cache traditionnels, GPTCache utilise un cache sémantique, identifiant et stockant des requêtes similaires ou liées pour améliorer les taux de succès du cache.
En utilisant des algorithmes d'embedding, GPTCache convertit les requêtes en embeddings et utilise un magasin vectoriel pour une recherche de similarité, permettant la récupération de requêtes liées depuis le cache. La conception modulaire de GPTCache permet aux utilisateurs de personnaliser leur cache sémantique avec diverses implémentations pour chaque module.
Bien que le cache sémantique puisse entraîner des faux positifs et négatifs, GPTCache offre trois métriques de performance pour aider les développeurs à optimiser leurs systèmes de cache.
Ce processus permet à GPTCache d'identifier et de récupérer des requêtes similaires ou liées depuis le stockage du cache, comme illustré dans le diagramme ci-dessous.
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.
