Préparez-vous à GPT-4 avec GPTCache et Milvus, économisez gros sur l’IA multimodale
Introduction
Alors que le monde devient de plus en plus numérique, la demande de solutions d’intelligence artificielle (IA) capables de comprendre et d’analyser d’immenses quantités de données augmente. ChatGPT d’OpenAI, propulsé par GPT-3.5, a déjà révolutionné le domaine du traitement automatique du langage naturel (NLP) et suscité un intérêt considérable pour les grands modèles de langage (LLMs). Alors que l’adoption des LLMs continue d’attirer l’attention et de se développer dans divers secteurs, le besoin de grands modèles d’IA plus avancés, capables de traiter des données multimodales, augmente également. Le monde de la technologie est déjà en effervescence dans l’attente de GPT-4, qui promet d’être encore plus puissant et polyvalent en permettant les entrées visuelles. La collaboration de GPT-4 avec des modèles de génération d’images recèle également un immense potentiel. Pour se préparer à cette révolution à venir, Zilliz a introduit GPTCache intégré à Milvus - une solution révolutionnaire qui peut aider les entreprises à économiser une fortune sur l’IA multimodale.
L’IA multimodale désigne l’intégration de plusieurs modes de perception et de communication, tels que la parole, la vision, le langage et les gestes, afin de créer des systèmes d’IA plus intelligents et plus efficaces. Cette approche permet aux modèles d’IA de mieux comprendre et interpréter les interactions et les environnements humains, et de générer des réponses plus précises et nuancées. L’IA multimodale trouve des applications dans divers domaines, notamment la santé, l’éducation, le divertissement et les transports. Parmi les exemples de systèmes d’IA multimodale figurent des assistants virtuels comme Siri et Alexa, des véhicules autonomes et des outils de diagnostic médical qui analysent conjointement des images et des données patient.
Dans cet article, nous examinerons en détail GPTCache et explorerons son fonctionnement conjoint avec Milvus afin d’offrir une expérience utilisateur plus fluide et plus puissante dans les scénarios multimodaux.
Cache sémantique pour l’IA multimodale
Dans la plupart des cas, obtenir les résultats souhaités dans les applications d’IA multimodale nécessite l’utilisation de grands modèles. Cependant, le traitement de tels modèles ou appels peut être long et coûteux. C’est là que GPTCache s’avère utile : il permet au système de rechercher d’abord des réponses potentielles dans le cache avant d’envoyer une requête à un grand modèle. GPTCache accélère l’ensemble du processus et contribue à réduire les coûts d’exécution des grands modèles.
Explorer le cache sémantique avec GPTCache
Le cache sémantique stocke et récupère des représentations de connaissances de concepts. Il est conçu pour stocker et récupérer des informations ou des connaissances sémantiques de manière structurée. Ainsi, un système d’IA peut mieux comprendre les requêtes ou demandes et y répondre. L’idée derrière un cache sémantique est de fournir un accès plus rapide aux informations pertinentes en proposant des réponses précalculées aux questions ou requêtes fréquemment posées, ce qui peut contribuer à améliorer les performances et l’efficacité des applications d’IA.
GPTCache est un projet développé pour optimiser le temps de réponse et réduire les dépenses liées aux appels d’API associés aux grands modèles. Nous avons conçu GPTcache pour créer un cache sémantique, qui stocke les réponses des modèles et exploite la puissance de Milvus. La technologie repose sur Milvus, intégrant plusieurs composants essentiels, tels que l’adaptateur de grand modèle, le gestionnaire de contexte, le générateur d’embeddings, le gestionnaire de cache, l’évaluateur de similarité et les pré/post-processeurs.
Architecture de GPTCache
L’adaptateur garantit que GPTCache fonctionne parfaitement avec n’importe quel grand modèle. Le gestionnaire de contexte offre davantage de flexibilité, permettant au système de gérer diverses données à différentes étapes. Le générateur d’embeddings convertit les données en embeddings pour le stockage vectoriel et la recherche sémantique. Tous les vecteurs et autres données précieuses sont stockés dans le cache. Milvus prend non seulement en charge le stockage d’un grand volume de données, mais aide également à accélérer et à améliorer les performances de la recherche de similarité. Enfin, l’évaluateur est chargé d’évaluer si les réponses potentielles récupérées depuis le cache sont suffisamment bonnes pour les besoins de l’utilisateur. L’extrait de code suivant montre comment initialiser un cache avec différents modules dans 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
)
Mise en cache des données sémantiques dans une base de données vectorielle
L’une des pierres angulaires d’un cache sémantique tel que GPTCache est la base de données vectorielle. Plus précisément, le générateur d’embeddings de GPTCache convertit les données en embeddings pour le stockage vectoriel et la recherche sémantique. Stocker des vecteurs dans une base de données vectorielle, telle que Milvus, prend non seulement en charge le stockage d’un grand volume de données, mais aide également à accélérer et à améliorer les performances de la recherche de similarité. Cela permet une récupération plus efficace des réponses potentielles depuis le cache.
Un modèle multimodal préentraîné apprend un espace vectoriel pour représenter différents types d’entrées. Par conséquent, il peut capturer les informations complémentaires fournies par d’autres modalités. Ce paradigme permet au système d’interpréter des données aux modalités variées de manière unifiée, permettant un traitement plus précis et plus efficace via la recherche sémantique. Les bases de données vectorielles permettent la recherche sémantique pour les entrées multimodales via des algorithmes de similarité vectorielle. Contrairement aux bases de données traditionnelles qui stockent les données en lignes et en colonnes, les bases de données vectorielles stockent et récupèrent les données non structurées sous forme de vecteurs. Les bases de données vectorielles gèrent des données de haute dimension, courantes dans les applications d’IA multimodale qui traitent différents types de données sous forme de vecteurs.
Avantages de l’utilisation de Milvus
L’écosystème Milvus fournit des outils utiles pour la surveillance des bases de données, la migration des données et l’estimation de la taille des données. Pour une mise en œuvre et une maintenance plus simples de Milvus, il existe un service cloud-native Zilliz Cloud. La combinaison de Milvus avec GPTCache offre une solution puissante pour améliorer les fonctionnalités et les performances des applications d’IA multimodale. Que vous travailliez avec de grandes quantités de données, des modèles complexes ou divers types de données, cette approche peut aider à rationaliser le traitement des données et à améliorer la précision et la rapidité des résultats. L’intégration de Milvus avec GPTCache dans l’IA multimodale peut offrir plusieurs avantages puissants. Voici quelques-uns des plus notables :
- Stockage et récupération efficaces des données
Milvus est spécialement conçu pour stocker et récupérer des données vectorielles à grande échelle. De plus, un vecteur est le « langage général » parlé par les modèles d’apprentissage profond. Milvus peut facilement gérer les vecteurs, offrant un accès rapide et efficace aux données multimodales. L’utilisation de Milvus peut entraîner des temps de réponse plus rapides et une meilleure expérience utilisateur.
- Flexibilité et évolutivité améliorées
À mesure que la quantité de données traitées par les applications d’IA augmente, le besoin d’une solution évolutive augmente également. En intégrant Milvus, le système peut évoluer de manière transparente pour répondre aux demandes croissantes. De plus, Milvus fournit un large éventail de fonctionnalités qui peuvent améliorer la flexibilité et la fonctionnalité globales de l’IA multimodale.
- Précision et performances améliorées
Grâce au stockage et à la récupération unifiés des données fournis par Milvus, les applications d’IA multimodale peuvent traiter plus rapidement et plus précisément les entrées provenant de divers types de données. Cela peut conduire à des résultats plus précis et à une amélioration des performances globales du système.
- Facilité d’utilisation
Milvus propose différentes options de déploiement local, notamment un démarrage rapide avec pip. Il fournit également un service cloud via Zilliz Cloud, qui permet aux utilisateurs de démarrer et de faire évoluer rapidement leurs instances Milvus. Milvus prend également en charge plusieurs SDK de langage, notamment Python, Java et Go (d’autres sont en cours de développement), ce qui facilite son intégration dans les applications existantes. De plus, Milvus fournit une API Restful pour une interaction facile avec le serveur.
- Popularité et fiabilité
Milvus a acquis une immense popularité grâce à sa grande évolutivité et à ses performances. Avec plus de 1 000 utilisateurs en entreprise et une communauté open source active, Milvus s’est imposé comme une solution fiable pour gérer d’énormes volumes de données structurées et non structurées. En tant que projet diplômé de la LF AI & Data Foundation, Milvus bénéficie également d’un soutien institutionnel, renforçant davantage sa position de base de données incontournable pour les organisations à la recherche de solutions de gestion des données efficaces et fiables.
Surmonter les contraintes du cache pour accroître la diversité des sorties
Une IA multimodale capable de produire des sorties diverses est essentielle pour fournir une solution complète et efficace pouvant répondre aux besoins d’un large éventail d’utilisateurs. La diversité des sorties contribue à améliorer l’expérience utilisateur et améliore la fonctionnalité globale du système d’IA. En outre, la diversité des sorties est cruciale pour les applications nécessitant un large éventail de types de sorties, telles que les assistants virtuels, les chatbots et les systèmes de reconnaissance vocale.
Bien que le cache sémantique soit un moyen efficace de récupérer des données, il peut limiter la diversité des réponses des utilisateurs. Il privilégie les réponses mises en cache plutôt que la génération de nouvelles réponses à partir d’un grand modèle. Cela signifie que le système peut continuer à produire des sorties identiques ou similaires, en s’appuyant fortement sur les informations précédemment mises en cache. Par conséquent, la sortie peut devenir répétitive et manquer de nouveauté, ce qui peut poser problème dans des contextes où des réponses diverses et créatives sont nécessaires.
Pour résoudre ce problème, la température en apprentissage automatique est devenue un outil précieux. La température détermine le caractère aléatoire ou la diversité du contenu de la réponse, une valeur de température plus élevée permettant une plus grande exploration des possibilités au-delà de la sortie la plus probable. Cela peut conduire à des sorties créatives et inattendues, répondant à un éventail plus large de préférences et de styles. À l’inverse, une valeur de température plus faible génère des réponses plus ciblées et déterministes, produisant des résultats précis et cohérents. En surmontant les contraintes du cache grâce à l’ajustement de la température, les applications d’IA multimodale peuvent produire des solutions plus complètes et efficaces qui répondent aux besoins d’un éventail plus large d’utilisateurs.
Température dans GPTCache
Le choix d’une valeur de température appropriée est essentiel dans l’IA multimodale pour équilibrer l’aléatoire et la cohérence, et s’aligner sur les besoins et préférences spécifiques de l’utilisateur ou de l’application. La température dans GPTCache conserve principalement le concept général de température en apprentissage automatique. Elle est mise en œuvre au moyen de 3 options dans le flux de travail :
- Sélectionner après évaluation
L’activation Softmax sur les logits du modèle est une technique courante impliquant la température en apprentissage profond. GPTCache utilise de manière similaire une fonction softmax pour convertir les scores de similarité des réponses candidates en une liste de probabilités. Plus le score est élevé, plus il est probable qu’elle soit sélectionnée comme réponse finale. La température contrôle la netteté de la distribution des probabilités. Cela signifie qu’une réponse avec un score plus élevé a plus de chances d’être sélectionnée. Le post-processeur temperature_softmax dans GPTCache suit cet algorithme pour sélectionner un élément dans une liste de candidats, étant donné leurs scores ou niveaux de confiance.
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)
- Appeler le modèle sans cache
Nous appliquons la possibilité d’appeler directement de grands modèles sans rechercher dans le cache. Cette possibilité est influencée par la température. Une température plus élevée signifie qu’il est plus probable d’ignorer la recherche dans le cache, tandis qu’une température plus basse diminue la possibilité d’ignorer la recherche dans le cache. Voici un exemple, utilisant temperatuer_softmax pour contrôler, par la température, la décision d’ignorer ou de vérifier le 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
- Modifier le résultat depuis le cache
En utilisant un petit modèle ou certains outils pour modifier la réponse, cette option nécessite un éditeur capable de convertir le type de données de sortie.
Applications multimodales
De plus en plus de personnes recherchent l’aide de GPT-4 au lieu de se contenter de ChatGPT et de s’appuyer uniquement sur GPT-3.5. En outre, la tendance actuelle évolue des LLM purs vers les applications multimodales. L’IA multimodale interagit principalement avec plusieurs modalités de données, englobant le texte, les visuels et l’audio. À mesure que les technologies d’IA évoluent, GPTCache et Milvus représentent une approche passionnante et innovante pour construire des systèmes multimodaux intelligents. Les exemples suivants montrent comment GPTCache et Milvus ont été mis en œuvre dans des situations multimodales.
1. Texte-vers-image : génération d’images
La génération d’images par l’IA est un sujet très en vogue ces dernières années. Elle consiste à générer des images à partir de descriptions ou d’instructions textuelles en utilisant un modèle multimodal texte-image pré-entraîné. Cette technologie a beaucoup progressé ces dernières années. Nous avons vu des avancées incroyables dans les modèles et applications de génération d’images, capables de produire des images convaincantes qu’il est souvent difficile de distinguer de photographies prises par des humains.
Prompt | a white siamese cat
Le processus de génération d’images consiste à utiliser des prompts textuels comme entrée. Avec GPTCache, la génération d’images est facilitée grâce à sa fonctionnalité de recherche sémantique pour les prompts. Le système utilise Milvus pour comparer les embeddings de texte et détecter les prompts similaires stockés dans le cache. Il récupère ensuite les images correspondantes depuis le cache. Si le cache ne contient pas de résultats satisfaisants, GPTCache appellera le modèle de génération d’images. Les sorties image et texte du modèle sont enregistrées par GPTCache, ce qui enrichit sa base de données. Le générateur d’embeddings convertit chaque prompt textuel en vecteur, puis le stocke dans Milvus afin de faciliter le stockage et la récupération.
L’exemple de code ci-dessous appelle le service OpenAI adapté avec GPTCache pour générer une image à partir du texte « a whilte siamese cat ». La requête régule la diversité des images générées à chaque occasion grâce aux valeurs temperature et top_k. En modifiant la température de sa valeur par défaut de 0.0 à une valeur plus élevée de 0.8, la requête est plus susceptible d’obtenir une image différente à chaque fois pour le même texte.
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 dispose actuellement d’adaptateurs intégrés pour la plupart des modèles ou services populaires de génération d’images, notamment OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace. Le bootcamp propose un tutoriel sur la génération d’images utilisant OpenAI.
2. Image-vers-texte : légendage d’images
Le légendage d’images génère une description textuelle d’une image, généralement à l’aide d’un modèle multimodal image-texte pré-entraîné. Cette technologie permet aux ordinateurs de comprendre le contenu des images et de les décrire en langage naturel pour que les humains puissent les interpréter. Le légendage d’images peut également fournir une solution beaucoup plus robuste en l’intégrant à un chatbot. Il permet une transition fluide entre les aspects visuels et conversationnels d’un produit, améliorant ainsi l’expérience utilisateur globale.
Un grand chien brun allongé sur un lit
Concernant le légendage d’images, GPTCache commence par parcourir son cache à la recherche d’images ressemblant à l’image d’entrée, telles que mesurées par les embeddings d’image. Ensuite, afin de garantir la qualité des légendes renvoyées, un évaluateur effectue une évaluation supplémentaire de la pertinence ou de la similarité entre l’image d’entrée et les images ou légendes récupérées depuis le cache. Par exemple, des modèles visuels pré-entraînés tels que ResNets ou ViTs peuvent évaluer la similarité des images. De plus, un modèle texte-image comme CLIP peut être appliqué pour mesurer la similarité entre l’image et le texte. S’il n’y a aucune correspondance dans le cache, le système utilise un modèle multimodal pour générer des légendes pour l’image donnée. Par la suite, GPTCache stocke à la fois l’image et ses légendes correspondantes, les images et les légendes étant enregistrées sous forme de vecteurs dans Milvus.
GPTCache a déjà adapté des services populaires de légendage d’images tels que Replicate BLIP et miniGPT-4. Il prévoit de prendre en charge davantage de services image-vers-texte et de modèles multimodaux hébergés localement.
3. Audio-vers-texte : transcription de la parole
L’audio vers texte, également connu sous le nom de transcription vocale, convertit le contenu audio, tel que des conversations enregistrées, des réunions ou des cours, en texte écrit. Cette technologie permet aux personnes qui peuvent avoir des difficultés à entendre ou qui préfèrent lire plutôt qu’écouter le contenu, d’accéder aux informations et de les comprendre plus facilement. En plus de transmettre des transcriptions à un chatbot comme ChatGPT, les utilisateurs peuvent utiliser les transcriptions pour explorer davantage.
Fichier audio | One bourbon, one scotch, one bill
Un fichier audio sert généralement d’entrée initiale pour la transcription vocale. En activant GPTCache, la première étape consiste à créer un embedding audio pour chaque entrée. Le système utilise ensuite Milvus pour la recherche de similarité, récupérant les transcriptions potentielles depuis le cache. Enfin, un modèle ou service de reconnaissance automatique de la parole (ASR) est appelé lorsqu’aucune réponse correspondante n’est trouvée après l’évaluation. Toutes les paires d’audio et de transcriptions générées par le modèle ASR sont stockées dans le cache. L’utilisation de Milvus pour stocker les données audio sous forme de vecteurs garantit qu’il est possible de faire correspondre des audios similaires depuis le cache. Elle permet également l’évolutivité à mesure que la quantité de données audio augmente.
GPTCache et Milvus réduisent considérablement le besoin de multiples appels ASR, améliorant ainsi la vitesse et l’efficacité. Le bootcamp GPTCache de Speech to Text fournit un exemple de tutoriel pour activer GPTCache et appliquer Milvus aux OpenAI Transcriptions.
Conclusion
L’utilisation de modèles d’IA multimodaux gagne en popularité, permettant une analyse et une compréhension plus complètes de données complexes. Grâce à sa prise en charge des données non structurées, Milvus est une solution idéale pour créer et faire évoluer des applications multimodales. De plus, l’ajout de fonctionnalités supplémentaires dans GPTCache, telles que la gestion des sessions, la sensibilité au contexte et la prise en charge serveur, renforce encore les capacités de l’IA multimodale. Avec ces avancées, les modèles d’IA multimodaux ont davantage d’utilisations et de scénarios potentiels. Restez à l’écoute du GPTCache Bootcamp pour plus d’informations sur les applications d’IA multimodale.
Continuer à lire

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



