Creare app LLM con risposte 100 volte più veloci e una drastica riduzione dei costi utilizzando GPTCache
Questo articolo è stato originariamente pubblicato su ODBMS e viene ripubblicato qui con autorizzazione.
Il magico ChatGPT e altri modelli linguistici di grandi dimensioni (LLM) hanno stupito quasi tutti con la loro capacità di comprendere il linguaggio naturale e rispondere a domande complicate. Di conseguenza, sempre più sviluppatori stanno sfruttando gli LLM per creare applicazioni intelligenti. Tuttavia, man mano che la tua applicazione LLM guadagna popolarità e registra un'impennata del traffico, il costo delle chiamate API agli LLM aumenterà in modo significativo. Anche l'elevata latenza di risposta sarà frustrante, in particolare durante gli orari di punta per gli LLM, influendo direttamente sull'esperienza utente.
In questo post, presenterò una soluzione pratica alle sfide che ostacolano l'efficienza e la velocità delle applicazioni LLM: GPTCache. Questa cache semantica open source può aiutarti a ottenere velocità di recupero almeno 100 volte più rapide e ridurre a zero i costi di utilizzo dei servizi LLM quando la cache viene colpita.
Sfide principali nella creazione di applicazioni basate su LLM
Prima di approfondire GPTCache, discutiamo innanzitutto due sfide principali nella creazione di un'applicazione intelligente basata su LLM.
Costi in forte aumento con chiamate API non necessarie
Le applicazioni possono sfruttare le potenti capacità di inferenza degli LLM chiamando l'API degli LLM. Tuttavia, chiamare l'API non è gratuito. Se la tua applicazione è destinata alla produzione e ha una vasta base di utenti, chiamate API frequenti possono costarti una fortuna. Inoltre, potresti finire per pagare chiamate API non necessarie per domande semanticamente identiche a cui l'LLM ha già risposto, sprecando denaro e risorse.
Scarse prestazioni e scalabilità con elevata latenza di risposta
I modelli linguistici di grandi dimensioni di solito gestiscono carichi di lavoro sbalorditivi. Prendiamo ChatGPT come esempio. A luglio 2023, conta oltre 100 milioni di utenti attivi e ha ricevuto circa un miliardo di visite solo a giugno. A causa di carichi di lavoro così elevati, gli LLM rallentano le loro risposte, soprattutto durante le ore di punta, causando un rallentamento anche delle applicazioni che dipendono da essi.
Inoltre, i servizi LLM applicano limiti di frequenza, limitando il numero di chiamate API che le tue applicazioni possono effettuare al server entro un determinato intervallo di tempo. Raggiungere un limite di frequenza significa che ulteriori richieste verranno bloccate fino al trascorrere di un certo periodo, portando a un'interruzione del servizio. Questo collo di bottiglia può influire direttamente sull'esperienza utente e limitare il numero di richieste che la tua applicazione può gestire.
Che cos'è GPTCache?
GPTCache è una cache semantica open source progettata per migliorare l'efficienza e la velocità delle applicazioni basate su GPT archiviando e recuperando le risposte generate dai modelli linguistici. GPTCache consente agli utenti di personalizzare la cache in base ai propri requisiti specifici, offrendo una gamma di scelte per embedding, valutazione della similarità, posizione di archiviazione e politiche di eliminazione. Inoltre, GPTCache supporta sia l'interfaccia OpenAI ChatGPT sia l'interfaccia Langchain, con piani per supportare più interfacce nei prossimi mesi.
Come funziona GPTCache?
In parole semplici, GPTCache archivia le risposte degli LLM nella cache. Pertanto, quando gli utenti effettuano query simili a cui gli LLM avevano precedentemente risposto, GPTCache cerca e restituisce i risultati agli utenti senza la necessità di chiamare nuovamente l'LLM. A differenza dei sistemi di cache tradizionali come Redis, GPTCache impiega la memorizzazione semantica nella cache, che archivia e recupera i dati tramite embedding. Utilizza algoritmi di embedding per trasformare le query degli utenti e le risposte degli LLM in embedding ed esegue ricerche di similarità su questi embedding utilizzando un archivio vettoriale come Milvus.
GPTCache comprende sei moduli principali: LLM Adapter, Pre-processor (Context Manager), Embedding Generator, Cache Manager, Similarity Evaluator e Post-processor.
Adattatore LLM
L'adattatore LLM funge da interfaccia di GPTCache per l'interazione esterna. Converte le query in protocolli di cache, controlla il flusso di caching e trasforma i risultati della cache in risposte LLM. Con l'adattatore LLM, sperimentare e testare vari modelli linguistici diventa più semplice, poiché puoi passare dall'uno all'altro senza riscrivere il codice o imparare una nuova API.
GPTCache supporta già OpenAI ChatGPT API, LangChain API, MiniGPT4 API e Llamacpp API. La nostra roadmap include l'aggiunta di ulteriori API, come Hugging Face Hub, Bard e Anthropic.
Pre-processore
Il Pre-processore gestisce, analizza e formatta le query inviate agli LLM, inclusa la rimozione di informazioni ridondanti dagli input, la compressione delle informazioni di input, il taglio di testi lunghi e l'esecuzione di altre attività correlate.
Generatore di embedding
Il Generatore di embedding converte le query degli utenti in vettori di embedding utilizzando i tuoi modelli di embedding preferiti. GPTCache supporta modelli locali da HuggingFace e GitHub e servizi di embedding cloud per generare embedding. Questi includono OpenAI embedding API, ONNX con il modello GPTCache/paraphrase-albert-onnx, Hugging Face embedding API, Cohere embedding API, fastText embedding API e SentenceTransformers embedding API, e modelli Timm per embedding di immagini.
Gestore della cache
Il Gestore della cache è il modulo centrale di GPTCache. Memorizza le richieste degli utenti e le risposte degli LLM ed è composto da tre componenti:
Un archivio vettoriale per l'archiviazione dei vettori di embedding e le ricerche di similarità
Un archivio cache per memorizzare le richieste degli utenti e le corrispondenti risposte degli LLM
Una policy di eviction per controllare la capacità della cache secondo la policy di eviction Least Recently Used (LRU) o First In, First Out (FIFO).
Attualmente, GPTCache supporta SQLite, PostgreSQL, MySQL, MariaDB, SQL Server e Oracle per l'archiviazione della cache, e Milvus, Zilliz Cloud e Weaviate per l'archiviazione e il recupero vettoriale. Gli utenti possono scegliere l'archivio vettoriale, l'archivio cache e la policy di eviction preferiti per soddisfare le proprie esigenze, bilanciando prestazioni, scalabilità e costi.
Valutatore di similarità
Il Valutatore di similarità determina se la risposta in cache corrisponde alla query di input. GPTCache offre un'interfaccia standardizzata che combina molteplici strategie di similarità, consentendo agli utenti di personalizzare le corrispondenze della cache in base alle proprie esigenze specifiche e ai casi d'uso.
Post-processore
Il Post-processore prepara la risposta finale da restituire all'utente quando si verifica un hit della cache. Se la risposta non è nella cache, l'Adattatore LLM richiede risposte all'LLM e le riscrive nel Gestore della cache.
Vantaggi di GPTCache
Drastica riduzione dei costi nelle chiamate API LLM
Gli LLM addebitano ogni chiamata API. GPTCache aiuta gli sviluppatori a memorizzare semanticamente nella cache le risposte degli LLM per domande simili e poste ripetutamente, riducendo i costi API a zero se si verifica un hit della cache. GPTCache riduce il numero complessivo di chiamate API, riducendo drasticamente i costi. È particolarmente vantaggioso per applicazioni con traffico estremamente elevato.
Risposte 100 volte più veloci
GPTCache può ridurre significativamente il tempo di risposta per le applicazioni LLM. Durante i momenti di picco di ChatGPT, le risposte possono richiedere fino a diversi secondi. Tuttavia, con GPTCache, le applicazioni possono recuperare risposte richieste in precedenza in meno di 100 millisecondi, il che è almeno 100 volte più veloce.
Scalabilità migliorata
La memorizzazione nella cache delle risposte degli LLM riduce il carico sul servizio LLM, migliorando la scalabilità della tua app e prevenendo colli di bottiglia durante la gestione di richieste crescenti.
Migliore disponibilità
I servizi LLM spesso impostano limiti di frequenza, limitando il numero di volte in cui la tua app può accedere al server entro un intervallo di tempo specifico. GPTCache riduce il numero complessivo di chiamate API e consente alla tua app di scalare rapidamente per gestire un volume crescente di query. Questo approccio garantisce prestazioni costanti man mano che la base utenti della tua applicazione cresce.
Per maggiori dettagli su come puoi trarre vantaggio da GPTCache, consulta la pagina What is GPTCache.
OSS Chat, un chatbot AI che utilizza GPTCache e lo stack CVP
GPTCache è utile per la Retrieval-Augmented Generation (RAG), in cui le applicazioni implementano uno stack CVP (ChatGPT/LLMs+database vettoriale+prompt as code) per risultati più accurati. OSS Chat, un chatbot AI in grado di rispondere a domande sui progetti GitHub, è il miglior esempio che illustra come GPTCache e lo stack CVP funzionano nello scenario RAG.
Architettura di OSS Chat
OSS Chat utilizza Towhee, una pipeline di machine learning, per trasformare le informazioni e le pagine di documentazione correlate dei progetti GitHub in embedding. Quindi archivia gli embedding in Zilliz Cloud, un servizio di database vettoriale completamente gestito. Quando un utente pone una domanda tramite OSS Chat, Zilliz Cloud cerca i primi k risultati più pertinenti a quella query. Questi risultati vengono quindi combinati con la domanda originale per creare un prompt con un contesto più ampio.
Prima di inviare il prompt a ChatGPT, Zilliz Cloud controlla innanzitutto GPTCache per trovare risposte; se la cache viene centrata, GPTCache restituisce la risposta direttamente all'utente. Se la cache non viene centrata, GPTCache invia il prompt originale a ChatGPT per ottenere risposte e lo archivia nuovamente nella cache per usi futuri. GPTCache consente a OSS Chat di offrire un'eccellente esperienza utente con costi inferiori, latenza di risposta inferiore e minori sforzi di sviluppo.
Riepilogo
Creare applicazioni basate su LLM è una tendenza in crescita che porta benefici a tutti nell'ecosistema. Tuttavia, gli sviluppatori di app affrontano due sfide chiave: l'elevato costo delle chiamate API e l'elevata latenza di risposta. GPTCache è una soluzione open-source perfetta che affronta queste sfide e offre molti altri vantaggi, tra cui latenza di rete ridotta, disponibilità migliorata e migliore scalabilità.
Per un tutorial pratico su come iniziare con GPTCache, consulta la documentazione di GPTCache. Puoi porre domande o condividere le tue idee durante i nostri Community Office Hours. Sei anche il benvenuto a contribuire a GPTCache.
Continua a leggere

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

Why Context Engineering Is Becoming the Full Stack of AI Agents
Discover how context engineering unifies prompts, RAG, and tools to build smarter, production-ready AI agents powered by Milvus.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.



