Was ist GPTCache?
GPTCache ist eine Open-Source-Bibliothek, die entwickelt wurde, um die Effizienz und Geschwindigkeit von GPT-basierten Anwendungen zu verbessern, indem sie einen Cache zur Speicherung der von Sprachmodellen generierten Antworten implementiert. GPTCache ermöglicht Benutzern die Anpassung des Caches nach ihren Bedürfnissen, einschließlich Optionen für Embedding-Funktionen, Ähnlichkeitsbewertungsfunktionen, Speicherort und Verdrängung. Darüber hinaus unterstützt GPTCache derzeit die OpenAI ChatGPT-Schnittstelle und die Langchain-Schnittstelle.

Aufgebaut auf einer starken und wachsenden Community.
7,976+
GitHub Sterne
Warum GPTCache verwenden?
Verbesserte Leistung
Das Speichern von LLM-Antworten in einem Cache kann die Zeit für das Abrufen der Antwort erheblich reduzieren, insbesondere wenn sie bereits angefordert wurde und bereits im Cache vorhanden ist. Das Speichern von Antworten in einem Cache kann die Gesamtleistung Ihrer Anwendung verbessern.
Reduzierte Kosten
Die meisten LLM-Dienste berechnen Gebühren basierend auf einer Kombination aus der Anzahl der Anfragen und der Token-Anzahl. Das Caching von LLM-Antworten kann die Anzahl der API-Aufrufe an den Dienst reduzieren, was zu Kosteneinsparungen führt. Caching ist besonders relevant bei hohem Datenverkehr, wo die Kosten für API-Aufrufe erheblich sein können.
Bessere Skalierbarkeit
Das Caching von LLM-Antworten kann die Skalierbarkeit Ihrer Anwendung verbessern, indem die Last auf den LLM-Dienst reduziert wird. Caching hilft, Engpässe zu vermeiden und stellt sicher, dass die Anwendung eine wachsende Anzahl von Anfragen bewältigen kann.
Minimierte Entwicklungskosten
Ein semantischer Cache kann ein wertvolles Werkzeug sein, um die Kosten während der Entwicklungsphase einer LLM-Anwendung zu reduzieren. Eine LLM-Anwendung erfordert auch während der Entwicklung eine Verbindung zu LLM-APIs, was kostspielig werden könnte. GPTCache bietet die gleiche Schnittstelle wie LLM-APIs und kann LLM-generierte oder simulierte Daten speichern. GPTCache hilft, die Funktionen Ihrer Anwendung zu überprüfen, ohne eine Verbindung zu den LLM-APIs oder dem Netzwerk herzustellen.
Geringere Netzwerklatenz
Ein semantischer Cache, der näher an der Maschine des Benutzers liegt, reduziert die Zeit, die zum Abrufen von Daten vom LLM-Dienst benötigt wird. Durch die Reduzierung der Netzwerklatenz können Sie das allgemeine Benutzererlebnis verbessern.
Verbesserte Verfügbarkeit
LLM-Dienste setzen häufig Ratenlimits durch, die APIs auf die Anzahl der Anfragen festlegen, die ein Benutzer oder Client innerhalb eines bestimmten Zeitraums an den Server senden kann. Das Erreichen eines Ratenlimits bedeutet, dass zusätzliche Anfragen blockiert werden, bis ein bestimmter Zeitraum verstrichen ist, was zu einem Dienstausfall führt. Mit GPTCache können Sie schnell skalieren, um eine steigende Anzahl von Abfragen zu bewältigen und so eine konsistente Leistung zu gewährleisten, während Ihre Benutzerbasis wächst.
Insgesamt kann die Entwicklung eines semantischen Caches zur Speicherung von LLM-Antworten verschiedene Vorteile bieten, darunter verbesserte Leistung, reduzierte Kosten, bessere Skalierbarkeit, Anpassbarkeit und reduzierte Netzwerklatenz.
Wie GPTCache funktioniert
GPTCache nutzt die Datenlokalität in Onlinediensten, indem häufig abgerufene Daten gespeichert werden, was die Abrufzeit verkürzt und die Last auf dem Backend-Server verringert. Im Gegensatz zu traditionellen Cache-Systemen verwendet GPTCache semantisches Caching, das ähnliche oder verwandte Abfragen identifiziert und speichert, um die Cache-Trefferrate zu verbessern.
Mithilfe von Embedding-Algorithmen wandelt GPTCache Abfragen in Embeddings um und verwendet einen Vektorspeicher für die Ähnlichkeitssuche, wodurch verwandte Abfragen aus dem Cache abgerufen werden können. Das modulare Design von GPTCache ermöglicht es Benutzern, ihren semantischen Cache mit verschiedenen Implementierungen für jedes Modul anzupassen.
Während semantisches Caching zu falschen Positiven und Negativen führen kann, bietet GPTCache drei Leistungsmetriken, die Entwicklern helfen, ihre Caching-Systeme zu optimieren.
Dieser Prozess ermöglicht es GPTCache, ähnliche oder verwandte Abfragen aus dem Cachespeicher zu identifizieren und abzurufen, wie in der folgenden Abbildung dargestellt.
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.
