Что такое GPTCache?
GPTCache - это библиотека с открытым исходным кодом, предназначенная для повышения эффективности и скорости приложений на основе GPT путем реализации кэша для хранения ответов, сгенерированных языковыми моделями. GPTCache позволяет пользователям настраивать кэш в соответствии с их потребностями, включая варианты функций встраивания, функций оценки сходства, местоположения хранения и вытеснения. Кроме того, GPTCache в настоящее время поддерживает интерфейс OpenAI ChatGPT и интерфейс Langchain.

Построено на сильном и растущем сообществе.
7,888+
Звезды GitHub
Почему использовать GPTCache?
Улучшенная производительность
Хранение ответов LLM в кэше может значительно сократить время, необходимое для получения ответа, особенно если он был запрошен ранее и уже присутствует в кэше. Хранение ответов в кэше может улучшить общую производительность вашего приложения.
Сокращенные расходы
Большинство услуг LLM взимают плату на основе комбинации количества запросов и количества токенов. Кэширование ответов LLM может уменьшить количество вызовов API к сервису, что приводит к экономии средств. Кэширование особенно актуально при работе с высокими уровнями трафика, где расходы на вызовы API могут быть значительными.
Лучшая масштабируемость
Кэширование ответов LLM может улучшить масштабируемость вашего приложения, уменьшая нагрузку на сервис LLM. Кэширование помогает избежать узких мест и гарантирует, что приложение сможет обрабатывать растущее количество запросов.
Минимизированная стоимость разработки
Семантический кэш может быть ценным инструментом для снижения затрат на этапе разработки приложения LLM (языковой модели). Приложение LLM требует подключения к API LLM даже во время разработки, что может стать дорогостоящим. GPTCache предлагает тот же интерфейс, что и API LLM, и может хранить данные, сгенерированные LLM или имитированные. GPTCache помогает проверить функции вашего приложения без подключения к API LLM или сети.
Нижняя задержка сети
Семантический кэш, расположенный ближе к машине пользователя, сокращает время, необходимое для получения данных от службы LLM. Уменьшая задержку сети, вы можете улучшить общее впечатление пользователя.
Улучшенная доступность
Сервисы LLM часто применяют ограничения скорости, которые представляют собой ограничения, накладываемые API на количество раз, когда пользователь или клиент может обращаться к серверу в заданный промежуток времени. Достижение предела скорости означает, что дополнительные запросы будут блокироваться до истечения определенного периода, что приводит к простою сервиса. С GPTCache вы можете быстро масштабироваться, чтобы справиться с растущим объемом запросов, обеспечивая стабильную производительность по мере расширения пользовательской базы вашего приложения.
В целом, разработка семантического кэша для хранения ответов LLM может предложить различные преимущества, включая улучшенную производительность, снижение затрат, лучшую масштабируемость, настройку и уменьшение сетевой задержки.
Как работает GPTCache
GPTCache использует локальность данных в онлайн-сервисах, сохраняя часто запрашиваемые данные, сокращая время извлечения и снижая нагрузку на серверную часть. В отличие от традиционных систем кэширования, GPTCache использует семантическое кэширование, идентифицируя и сохраняя похожие или связанные запросы для повышения частоты попаданий в кэш.
Используя алгоритмы встраивания, GPTCache преобразует запросы во встраивания и использует векторное хранилище для поиска схожести, что позволяет извлекать связанные запросы из кэша. Модульная конструкция GPTCache позволяет пользователям настраивать свой семантический кэш с различными реализациями для каждого модуля.
Хотя семантическое кэширование может привести к ложным срабатываниям и пропускам, GPTCache предлагает три метрики производительности, которые помогают разработчикам оптимизировать свои системы кэширования.
Этот процесс позволяет GPTCache идентифицировать и извлекать похожие или связанные запросы из хранилища кэша, как показано на диаграмме ниже.
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.
