¿Qué es GPTCache?
GPTCache es una biblioteca de código abierto diseñada para mejorar la eficiencia y velocidad de las aplicaciones basadas en GPT mediante la implementación de una caché para almacenar las respuestas generadas por los modelos de lenguaje. GPTCache permite a los usuarios personalizar la caché según sus necesidades, incluyendo opciones para funciones de incrustación, funciones de evaluación de similitud, ubicación de almacenamiento y expulsión. Además, GPTCache actualmente soporta la interfaz de OpenAI ChatGPT y la interfaz Langchain.

Construido sobre una comunidad fuerte y en crecimiento.
7,888+
Estrellas de GitHub
¿Por qué usar GPTCache?
Rendimiento mejorado
Almacenar respuestas LLM en una caché puede reducir significativamente el tiempo que lleva recuperar la respuesta, especialmente cuando ha sido solicitada previamente y ya está presente en la caché. Almacenar respuestas en una caché puede mejorar el rendimiento general de su aplicación.
Gastos reducidos
La mayoría de los servicios de LLM cobran tarifas basadas en una combinación del número de solicitudes y recuento de tokens. El almacenamiento en caché de las respuestas de LLM puede reducir el número de llamadas API realizadas al servicio, lo que se traduce en ahorros de costos. El almacenamiento en caché es particularmente relevante cuando se trata de altos niveles de tráfico, donde los gastos de llamadas API pueden ser sustanciales.
Mejor escalabilidad
El almacenamiento en caché de las respuestas de LLM puede mejorar la escalabilidad de su aplicación al reducir la carga en el servicio LLM. El almacenamiento en caché ayuda a evitar cuellos de botella y garantiza que la aplicación pueda manejar un número creciente de solicitudes.
Costo de desarrollo minimizado
Un caché semántico puede ser una herramienta valiosa para ayudar a reducir los costos durante la fase de desarrollo de una aplicación LLM (Modelo de Lenguaje). Una aplicación LLM requiere una conexión a APIs LLM incluso durante el desarrollo, lo que podría volverse costoso. GPTCache ofrece la misma interfaz que las APIs LLM y puede almacenar datos generados por LLM o simulados. GPTCache ayuda a verificar las características de tu aplicación sin conectarte a las APIs LLM o a la red.
Menor latencia de red
Una caché semántica ubicada más cerca de la máquina del usuario, reduciendo el tiempo que lleva recuperar datos del servicio LLM. Al reducir la latencia de la red, puedes mejorar la experiencia general del usuario.
Disponibilidad mejorada
Los servicios de LLM frecuentemente imponen límites de tasa, que son restricciones que las APIs colocan sobre el número de veces que un usuario o cliente puede acceder al servidor dentro de un período de tiempo determinado. Alcanzar un límite de tasa significa que las solicitudes adicionales serán bloqueadas hasta que haya transcurrido un cierto período, lo que lleva a una interrupción del servicio. Con GPTCache, puedes escalar rápidamente para acomodar un volumen creciente de consultas, asegurando un rendimiento consistente a medida que la base de usuarios de tu aplicación se expande.
En general, desarrollar una caché semántica para almacenar respuestas de LLM puede ofrecer varios beneficios, incluyendo mejor rendimiento, gastos reducidos, mejor escalabilidad, personalización y latencia de red reducida.
Cómo funciona GPTCache
GPTCache aprovecha la localidad de datos en servicios en línea almacenando datos accedidos comúnmente, reduciendo el tiempo de recuperación y aliviando la carga del servidor backend. A diferencia de los sistemas de caché tradicionales, GPTCache utiliza caché semántica, identificando y almacenando consultas similares o relacionadas para mejorar las tasas de acierto de caché.
Utilizando algoritmos de incrustación, GPTCache convierte consultas en incrustaciones y emplea un almacén de vectores para búsqueda de similitud, permitiendo la recuperación de consultas relacionadas de la caché. El diseño modular de GPTCache permite a los usuarios personalizar su caché semántica con varias implementaciones para cada módulo.
Aunque el caché semántico puede resultar en falsos positivos y negativos, GPTCache ofrece tres métricas de rendimiento para ayudar a los desarrolladores a optimizar sus sistemas de caché.
Este proceso permite a GPTCache identificar y recuperar consultas similares o relacionadas del almacenamiento en caché, como se ilustra en el diagrama a continuación.
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.
