Preparati a GPT-4 con GPTCache e Milvus, risparmia alla grande sull'IA multimodale
Introduzione
Man mano che il mondo diventa sempre più digitale, cresce la domanda di soluzioni di intelligenza artificiale (AI) in grado di comprendere e analizzare enormi quantità di dati. ChatGPT di OpenAI, alimentato da GPT-3.5, ha già rivoluzionato il campo dell'elaborazione del linguaggio naturale (NLP) e suscitato un notevole interesse per i modelli linguistici di grandi dimensioni (LLM). Poiché l'adozione degli LLM continua ad attirare attenzione e a crescere in vari settori, aumenta anche la necessità di modelli AI di grandi dimensioni più avanzati, capaci di elaborare dati multimodali. Il mondo tecnologico è già in fermento nell'attesa di GPT-4, che promette di essere ancora più potente e versatile abilitando input visivi. Anche la collaborazione di GPT-4 con modelli di generazione di immagini racchiude un potenziale immenso. Per prepararsi a questa imminente rivoluzione, Zilliz ha introdotto GPTCache integrato con Milvus - una soluzione rivoluzionaria che può aiutare le aziende a risparmiare una fortuna sull'AI multimodale.
L'AI multimodale si riferisce all'integrazione di molteplici modalità di percezione e comunicazione, come voce, visione, linguaggio e gesti, per creare sistemi AI più intelligenti ed efficaci. Questo approccio consente ai modelli AI di comprendere meglio e interpretare le interazioni e gli ambienti umani e di generare risposte più accurate e sfumate. L'AI multimodale trova applicazione in vari campi, tra cui sanità, istruzione, intrattenimento e trasporti. Alcuni esempi di sistemi AI multimodali includono assistenti virtuali come Siri e Alexa, veicoli autonomi e strumenti diagnostici medici che analizzano insieme immagini e dati dei pazienti.
In questo articolo, approfondiremo i dettagli di GPTCache ed esploreremo come funziona insieme a Milvus per offrire un'esperienza utente più fluida e potente in scenari multimodali.
Cache semantica per l'AI multimodale
Nella maggior parte dei casi, ottenere i risultati desiderati nelle applicazioni di AI multimodale richiede l'uso di modelli di grandi dimensioni. Tuttavia, l'elaborazione di tali modelli o chiamate può richiedere molto tempo ed essere costosa. È qui che GPTCache si rivela utile: consente al sistema di cercare prima potenziali risposte nella cache prima di inviare una richiesta a un modello di grandi dimensioni. GPTCache accelera l'intero processo e aiuta a ridurre i costi di esecuzione dei modelli di grandi dimensioni.
Esplorare la cache semantica con GPTCache
La cache semantica archivia e recupera rappresentazioni della conoscenza dei concetti. È progettata per archiviare e recuperare informazioni semantiche o conoscenza in modo strutturato. Pertanto, un sistema AI può comprendere meglio e rispondere a query o richieste. L'idea alla base di una cache semantica è fornire un accesso più rapido alle informazioni pertinenti offrendo risposte precomputate a domande o query frequenti, il che può contribuire a migliorare le prestazioni e l'efficienza delle applicazioni AI.
GPTCache è un progetto sviluppato per ottimizzare i tempi di risposta e ridurre le spese per le chiamate API associate ai modelli di grandi dimensioni. Abbiamo progettato GPTcache per creare una cache semantica, che archivia le risposte dei modelli e sfrutta la potenza di Milvus. La tecnologia è basata su Milvus e incorpora diversi componenti vitali, come l'adattatore del modello di grandi dimensioni, il gestore del contesto, il generatore di embedding, il gestore della cache, il valutatore di similarità e i pre/post processori.
Architettura GPTCache
L'adapter garantisce che GPTCache funzioni perfettamente con qualsiasi modello di grandi dimensioni. Il context manager offre maggiore flessibilità, consentendo al sistema di gestire vari dati in diverse fasi. Il generatore di embedding converte i dati in embedding per l'archiviazione vettoriale e la ricerca semantica. Tutti i vettori e gli altri dati preziosi vengono archiviati nella cache. Milvus non solo supporta l'archiviazione di dati su larga scala, ma contribuisce anche ad accelerare e migliorare le prestazioni della ricerca per similarità. Infine, l'evaluator è responsabile della valutazione di eventuali risposte potenziali recuperate dalla cache, verificando se siano sufficientemente valide per le esigenze degli utenti. Il seguente frammento di codice mostra come inizializzare una cache con diversi moduli in GPTCache.
from gptcache import cache
from gptcache.manager import get_data_manager, CacheBase, VectorBase, ObjectBase
from gptcache.processor.pre import get_prompt
from gptcache.processor.post import temperature_softmax
from gptcache.embedding import Onnx
from gptcache.similarity_evaluation.distance import SearchDistanceEvaluation
onnx = Onnx()
cache_base = CacheBase('sqlite')
vector_base = VectorBase(
'milvus',
host='localhost',
port='19530',
dimension=onnx.dimension
)
object_base = ObjectBase('local', path='./objects')
data_manager = get_data_manager(cache_base, vector_base, object_base)
cache.init(
pre_embedding_func=get_prompt, # Pre-process
embedding_func=onnx.to_embeddings, # Embedding generator
data_manager=data_manager, # Cache manager
similarity_evaluation=SearchDistanceEvaluation() # Evaluator
post_process_messages_func=temperature_softmax # Post-process
)
Memorizzazione nella cache di dati semantici in un database vettoriale
Uno dei pilastri di una cache semantica come GPTCache è il database vettoriale. In particolare, il generatore di embedding di GPTCache converte i dati in embedding per l'archiviazione vettoriale e la ricerca semantica. L'archiviazione dei vettori in un database vettoriale, come Milvus, non solo supporta l'archiviazione di dati su larga scala, ma contribuisce anche ad accelerare e migliorare le prestazioni della ricerca per similarità. Ciò consente un recupero più efficiente delle potenziali risposte dalla cache.
Un modello multimodale preaddestrato apprende uno spazio vettoriale per rappresentare diversi tipi di input. Di conseguenza, può catturare informazioni complementari fornite da altre modalità. Questo paradigma consente al sistema di interpretare dati con modalità variabili in modo unificato, permettendo un'elaborazione più accurata ed efficiente tramite la ricerca semantica. I database vettoriali abilitano la ricerca semantica per input multimodali tramite algoritmi di similarità vettoriale. A differenza dei database tradizionali che memorizzano i dati in righe e colonne, i database vettoriali archiviano e recuperano dati non strutturati sotto forma di vettori. I database vettoriali gestiscono dati ad alta dimensionalità, diffusi nelle applicazioni di IA multimodale che elaborano diversi tipi di dati come vettori.
Vantaggi dell'utilizzo di Milvus
L'ecosistema Milvus fornisce strumenti utili per il monitoraggio dei database, la migrazione dei dati e la stima delle dimensioni dei dati. Per un'implementazione e una manutenzione più semplici di Milvus, esiste un servizio cloud-native Zilliz Cloud. La combinazione di Milvus con GPTCache offre una potente soluzione per migliorare la funzionalità e le prestazioni delle applicazioni di IA multimodale. Che tu stia lavorando con grandi quantità di dati, modelli complessi o tipi di dati diversi, questo approccio può aiutare a semplificare l'elaborazione dei dati e a migliorare l'accuratezza e la velocità dei risultati. L'integrazione di Milvus con GPTCache nell'IA multimodale può offrire diversi potenti vantaggi. Ecco alcuni dei più rilevanti:
- Archiviazione e recupero efficienti dei dati
Milvus è progettato appositamente per archiviare e recuperare dati vettoriali su larga scala. Inoltre, un vettore è il "linguaggio generale" parlato dai modelli di deep learning. Milvus può gestire facilmente i vettori, fornendo un accesso rapido ed efficiente ai dati multimodali. L'uso di Milvus può portare a tempi di risposta più rapidi e a una migliore esperienza utente.
- Flessibilità e scalabilità migliorate
Con l'aumentare della quantità di dati elaborati dalle applicazioni di IA, cresce anche la necessità di una soluzione scalabile. Incorporando Milvus, il sistema può scalare senza soluzione di continuità per soddisfare le richiestei crescenti. Inoltre, Milvus fornisce un'ampia gamma di funzionalità che possono migliorare la flessibilità e la funzionalità complessive dell'IA multimodale.
- Accuratezza e prestazioni migliorate
Grazie all'archiviazione e al recupero unificati dei dati forniti da Milvus, le applicazioni di IA multimodale possono elaborare più rapidamente e accuratamente input provenienti da vari tipi di dati. Ciò può portare a risultati più accurati e a migliori prestazioni complessive del sistema.
- Facilità d'uso
Milvus offre diverse opzioni per il deployment locale, incluso un avvio rapido con pip. Fornisce inoltre un servizio cloud tramite Zilliz Cloud, che consente agli utenti di avviare e scalare rapidamente le proprie istanze Milvus. Milvus supporta anche diversi SDK linguistici, tra cui Python, Java e Go (altri in fase di sviluppo), rendendo semplice l'integrazione nelle applicazioni esistenti. Inoltre, Milvus fornisce una Restful API per una facile interazione con il server.
- Popolarità e affidabilità
Milvus ha ottenuto un'enorme popolarità grazie alla sua elevata scalabilità e alle sue prestazioni. Con oltre 1.000 utenti aziendali e una community open-source attiva, Milvus si è posizionato come una soluzione affidabile per la gestione di enormi quantità di dati strutturati e non strutturati. In quanto progetto graduate della LF AI & Data Foundation, Milvus beneficia anche del supporto istituzionale, consolidando ulteriormente la sua posizione come database di riferimento per le organizzazioni alla ricerca di soluzioni di gestione dei dati efficienti e affidabili.
Superare i vincoli della cache per una maggiore diversità dell'output
Un'IA multimodale in grado di produrre output diversificati è essenziale per fornire una soluzione completa ed efficace che possa soddisfare le esigenze di un'ampia gamma di utenti. La diversità degli output contribuisce a migliorare l'esperienza utente e migliora la funzionalità complessiva del sistema di IA. Inoltre, la diversità dell'output è cruciale per le applicazioni che richiedono un'ampia gamma di tipi di output, come assistenti virtuali, chatbot e sistemi di riconoscimento vocale.
Sebbene la cache semantica sia un modo efficiente per recuperare i dati, può limitare la diversità delle risposte degli utenti. Dà priorità alle risposte memorizzate nella cache rispetto alla generazione di nuove risposte da un modello di grandi dimensioni. Ciò significa che il sistema potrebbe continuare a produrre output uguali o simili, facendo molto affidamento su informazioni precedentemente memorizzate nella cache. Di conseguenza, l'output può diventare ripetitivo e mancare di novità, il che può essere problematico in contesti in cui sono necessarie risposte diverse e creative.
Per affrontare questo problema, la temperatura nel machine learning è diventata uno strumento prezioso. La temperatura determina la casualità o la diversità del contenuto della risposta, con un valore di temperatura più elevato che consente una maggiore esplorazione delle possibilità oltre l'output più probabile. Ciò può portare a output creativi e inaspettati, adattandosi a una gamma più ampia di preferenze e stili. D'altra parte, un valore di temperatura più basso genera risposte più focalizzate e deterministiche, producendo risultati precisi e coerenti. Superando i vincoli della cache attraverso la regolazione della temperatura, le applicazioni di IA multimodale possono produrre soluzioni più complete ed efficaci che soddisfano le esigenze di una gamma più ampia di utenti.
Temperatura in GPTCache
Scegliere un valore di temperatura appropriato è essenziale nell'IA multimodale per bilanciare casualità e coerenza e allinearsi alle esigenze e preferenze specifiche dell'utente o dell'applicazione. La temperatura in GPTCache mantiene principalmente il concetto generale di temperatura nel machine learning. Viene realizzata tramite 3 opzioni nel workflow:
- Seleziona dopo la valutazione
L'attivazione softmax sui logits del modello è una tecnica comune che coinvolge la temperatura nel deep learning. GPTCache utilizza in modo simile una funzione softmax per convertire i punteggi di similarità delle risposte candidate in un elenco di probabilità. Più alto è il punteggio, più è possibile che venga selezionata come risposta finale. La temperatura controlla la nitidezza della distribuzione delle possibilità. Ciò significa che una risposta con un punteggio più alto ha maggiori probabilità di essere selezionata. Il post-processor temperature_softmax in GPTCache segue questo algoritmo per selezionare un elemento da un elenco di candidati dati i loro punteggi o livelli di confidenza.
from gptcache.processor.post import temperature_softmax
messages = ["message 1", "message 2", "message 3"]
scores = [0.9, 0.5, 0.1]
answer = temperature_softmax(messages, scores, temperature=0.5)
- Chiama il modello senza cache
Applichiamo la possibilità di chiamare direttamente modelli di grandi dimensioni senza cercare nella cache. Questa possibilità è influenzata dalla temperatura. Una temperatura più alta significa che è più probabile saltare la ricerca nella cache, mentre una temperatura più bassa diminuisce la possibilità di saltare la ricerca nella cache. Ecco un esempio, usando temperatuer_softmax per controllare tramite la temperatura la decisione di saltare o controllare la cache.
from gptcache.processor.post import temperature_softmax
def skip_cache(temperature):
if 0 < temperature < 2:
cache_skip_options = [True, False]
prob_cache_skip = [0, 1]
cache_skip = temperature_softmax(
messages=cache_skip_options,
scores=prob_cache_skip,
temperature=temperature)
)
elif temperature >= 2:
cache_skip = True
else: # temperature <= 0
cache_skip = False
return cache_skip
- Modifica il risultato dalla cache
Usando un piccolo modello o alcuni strumenti per modificare la risposta, questa opzione richiede un editor con la capacità di convertire il tipo di dati dell'output.
Applicazioni multimodali
Sempre più persone cercano assistenza da GPT-4 invece di accontentarsi di ChatGPT e affidarsi esclusivamente a GPT-3.5. Inoltre, la tendenza attuale si sta spostando dai LLM puri alle applicazioni multimodali. L'IA multimodale interagisce principalmente con molteplici modalità di dati, tra cui testo, immagini e audio. Con l'evolversi delle tecnologie di IA, GPTCache e Milvus rappresentano un approccio entusiasmante e innovativo alla creazione di sistemi multimodali intelligenti. Gli esempi seguenti mostrano come GPTCache e Milvus siano stati implementati in situazioni multimodali.
1. Text-to-Image: generazione di immagini
La generazione di immagini tramite IA è stata un argomento molto discusso negli ultimi anni. Si riferisce alla generazione di immagini basate su descrizioni o istruzioni testuali utilizzando un modello multimodale testo-immagine pre-addestrato. Questa tecnologia ha fatto molta strada negli ultimi anni. Abbiamo assistito a progressi incredibili nei modelli e nelle applicazioni di generazione di immagini che possono produrre immagini convincenti, spesso difficili da distinguere dalle fotografie scattate dagli esseri umani.
Prompt | a white siamese cat
Il processo di generazione delle immagini prevede l'uso di prompt testuali come input. Con GPTCache, la generazione di immagini è resa più semplice dalla sua funzione di ricerca semantica per i prompt. Il sistema utilizza Milvus per confrontare gli embedding di testo e rilevare prompt simili memorizzati nella cache. Quindi recupera le immagini corrispondenti dalla cache. Se la cache non ha risultati soddisfacenti, GPTCache chiamerà il modello di generazione delle immagini. Gli output di immagine e testo del modello vengono salvati da GPTCache, che arricchisce il suo database. Il generatore di embedding converte ogni prompt testuale in un vettore, quindi lo memorizza in Milvus per facilitare l'archiviazione e il recupero.
Il codice di esempio seguente chiama il servizio OpenAI adattato con GPTCache per generare un'immagine dato il testo "a whilte siamese cat." La richiesta regola la diversità delle immagini generate in ogni occasione tramite il valore temperature e top_k. Modificando la temperatura dal suo valore predefinito di 0.0 a un valore più alto di 0.8, è più probabile che la richiesta ottenga ogni volta un'immagine diversa dato lo stesso testo.
from gptcache.adapter import openai
cache.set_openai_key()
response = openai.Image.create(
prompt="a white siamese cat",
temperature=0.8, # optional, defaults to 0.0.
top_k=10 # optional, defaults to 5 if temperature>0.0 else 1.
)
GPTCache attualmente dispone di adattatori integrati per i modelli o servizi di generazione di immagini più popolari, tra cui OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace. Il bootcamp fornisce un tutorial di Image Generation utilizzando OpenAI.
2. Da immagine a testo: didascalia delle immagini
La didascalia delle immagini genera una descrizione testuale per un'immagine, in genere utilizzando un modello multimodale immagine-testo pre-addestrato. Questa tecnologia consente ai computer di comprendere il contenuto delle immagini e descriverlo in linguaggio naturale affinché gli esseri umani lo interpretino. La didascalia delle immagini può anche fornire una soluzione molto più robusta incorporandola in un chatbot. Consente una transizione fluida tra gli aspetti visivi e conversazionali di un prodotto, migliorando l'esperienza utente complessiva.
Un grande cane marrone sdraiato sopra un letto
Per quanto riguarda la didascalia delle immagini, GPTCache inizia esaminando la sua cache alla ricerca di immagini che assomiglino all'immagine di input, come misurato dagli embedding delle immagini. Quindi, per garantire la qualità delle didascalie restituite, un valutatore esegue un'ulteriore valutazione della pertinenza o somiglianza tra l'immagine di input e le immagini o didascalie recuperate dalla cache. Ad esempio, modelli visivi pre-addestrati come ResNets o ViTs possono valutare la somiglianza delle immagini. Inoltre, un modello testo-immagine come CLIP può essere applicato per misurare la somiglianza tra immagine e testo. Se non c'è corrispondenza nella cache, il sistema utilizza un modello multimodale per generare didascalie per l'immagine fornita. Successivamente, GPTCache memorizza sia l'immagine sia le sue didascalie corrispondenti, con immagini e didascalie salvate come vettori in Milvus.
GPTCache ha già adattato servizi popolari di didascalia delle immagini come Replicate BLIP e miniGPT-4. Prevede di supportare più servizi da immagine a testo e modelli multimodali ospitati localmente.
3. Da audio a testo: trascrizione vocale
Audio-to-text, noto anche come trascrizione vocale, converte contenuti audio, come conversazioni registrate, riunioni o lezioni, in testo scritto. Questa tecnologia consente alle persone che potrebbero avere difficoltà a sentire o preferire leggere piuttosto che ascoltare il contenuto, di accedere alle informazioni e comprenderle più facilmente. Oltre a passare le trascrizioni a un chatbot come ChatGPT, gli utenti possono utilizzare le trascrizioni per esplorare ulteriormente.
File audio | One bourbon, one scotch, one bill
Un file audio funge in genere da input iniziale per la trascrizione vocale. Abilitando GPTCache, il primo passaggio prevede la creazione di un embedding audio per ciascun input. Il sistema utilizza quindi Milvus per la ricerca di similarità, recuperando potenziali trascrizioni dalla cache. Infine, un modello o servizio di riconoscimento vocale automatico (ASR) viene chiamato quando non vengono trovate risposte corrispondenti dopo la valutazione. Tutte le coppie di audio e trascrizioni generate dal modello ASR vengono archiviate nella cache. L’utilizzo di Milvus per archiviare i dati audio come vettori garantisce che sia possibile abbinare audio simili dalla cache. Consente inoltre la scalabilità man mano che aumenta la quantità di dati audio.
GPTCache e Milvus riducono significativamente la necessità di più chiamate ASR, migliorando velocità ed efficienza. Il bootcamp GPTCache di Speech to Text fornisce un tutorial di esempio per abilitare GPTCache e applicare Milvus per le OpenAI Transcriptions.
Conclusione
L’uso di modelli di IA multimodale sta guadagnando popolarità, consentendo un’analisi e una comprensione più complete di dati complessi. Con il suo supporto per i dati non strutturati, Milvus è una soluzione ideale per creare e scalare applicazioni multimodali. Inoltre, l’aggiunta di ulteriori funzionalità in GPTCache, come la gestione delle sessioni, la consapevolezza del contesto e il supporto server, migliora ulteriormente le capacità dell’IA multimodale. Con questi progressi, i modelli di IA multimodale hanno più potenziali usi e scenari. Rimanete sintonizzati sul GPTCache Bootcamp per ulteriori approfondimenti sulle applicazioni di IA multimodale.
Continua a leggere

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

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.



