Exploiter les boucles de rétroaction génératives dans les systèmes d’IA avec Milvus
Une boucle de rétroaction générative est un processus cyclique dans lequel la sortie générée par un modèle d’IA est réinjectée dans le système comme données d’entraînement. Cela permet au modèle d’apprendre et d’améliorer continuellement ses capacités au fil du temps. Ce cycle se répète, permettant à l’IA d’optimiser progressivement ses résultats.
Les Large Language Models (LLMs) peuvent bénéficier de manière significative des boucles de rétroaction génératives. Les LLMs sont entraînés sur d’immenses quantités de données textuelles, ce qui leur permet de comprendre et de générer du texte semblable à celui produit par un humain. Cependant, leurs connaissances de base sont statiques, et ils n’apprennent pas automatiquement à partir de nouvelles informations. C’est là que Milvus intervient.
Milvus est une base de données vectorielle open-source conçue pour stocker, indexer et rechercher d’énormes quantités de données vectorielles en temps réel. Dans le contexte des LLMs, Milvus peut stocker et récupérer efficacement les représentations vectorielles des données textuelles qui encodent leur signification sémantique. L’intégration de Milvus avec des LLMs dans une boucle de rétroaction générative nous permet de créer un système dynamique qui apprend et s’améliore continuellement.
Pour mieux comprendre comment ces composants fonctionnent ensemble, voyons d’abord le concept de boucles de rétroaction génératives dans le contexte de l’IA et du Machine Learning.
Comprendre les boucles de rétroaction génératives
Dans le contexte de l’IA et du machine learning, une boucle de rétroaction est un mécanisme qui utilise les données de sortie du modèle pour améliorer le modèle lui-même. Ce processus itératif permet au modèle d’apprendre en continu et d’affiner ses performances. Les éléments essentiels impliqués dans une boucle de rétroaction générative sont :
Entraînement du modèle : L’étape initiale consiste à entraîner le modèle d’IA à l’aide d’un jeu de données d’exemples étiquetés. Ce jeu de données fournit la base permettant au modèle d’apprendre les schémas et relations sous-jacents au sein des données.
Sortie du modèle : Une fois entraîné, le modèle génère de nouvelles sorties, qui peuvent être des prédictions, des classifications ou des formats de texte créatifs, par exemple.
Évaluation et rétroaction : Les sorties générées sont ensuite évaluées selon un ensemble de critères prédéfini. Cette évaluation peut impliquer des experts humains évaluant leur qualité et leur précision, ou les comparant à des données de référence.
Intégration des données : Les sorties évaluées et les données de rétroaction associées sont ensuite incorporées dans le jeu de données d’entraînement. Ce jeu de données enrichi permet au modèle d’apprendre de ses performances passées et d’affiner son processus de génération de sorties lors des itérations suivantes.
Les boucles de rétroaction génératives sont essentielles pour assurer l’amélioration continue des sorties des modèles dans les systèmes d’IA. Voici comment ces boucles facilitent cet affinement continu, décomposé en avantages spécifiques :
Adaptabilité aux nouvelles données
La boucle incorpore de nouvelles entrées de données et interactions dans les données d’entraînement.
Cela permet au modèle de s’ajuster à l’évolution des schémas et des tendances, améliorant la pertinence et la précision des sorties futures.
Réduction des biais et des erreurs
La boucle aide à identifier et à atténuer les biais présents dans les données d’entraînement initiales.
- L’évaluation humaine ou les données de vérité terrain peuvent signaler les sorties qui s’écartent des résultats souhaités.
Cela facilite les ajustements des données d’entraînement et des paramètres du modèle, réduisant les biais et les erreurs au fil du temps.
Sorties de modèle personnalisées
Les retours ou préférences des utilisateurs peuvent être intégrés dans la boucle de rétroaction.
- Le modèle personnalise les sorties afin de mieux répondre aux besoins et contextes spécifiques des utilisateurs.
Par exemple, un modèle de description de produits pourrait être affiné en fonction des taux de clics des utilisateurs, aboutissant à des descriptions plus engageantes et convaincantes.
Créativité et innovation renforcées
Les boucles de rétroaction permettent aux modèles d’explorer de nouvelles voies créatives dans les applications d’IA générative.
Le modèle analyse les sorties passées réussies et les préférences des utilisateurs.
Cela guide le modèle vers la génération de contenus créatifs plus innovants et pertinents.
Cet apprentissage continu favorise un cycle d’exploration créative et d’affinement.
Voyons maintenant comment les boucles de rétroaction améliorent les LLM.
Le rôle des boucles de rétroaction dans les LLM
Les grands modèles de langage (LLM) sont des systèmes d’IA avancés qui comprennent et génèrent du texte semblable à celui produit par des humains. Ils sont entraînés sur d’immenses ensembles de données, ce qui leur permet d’effectuer diverses tâches liées au langage, de la traduction à la création de contenu. Leur capacité à comprendre le contexte et les nuances leur permet de participer à des conversations, de répondre à des questions et même d’imiter certains styles d’écriture.
Les boucles de rétroaction sont essentielles pour améliorer les performances des LLM. Elles utilisent les sorties générées par le modèle comme entrées pour un apprentissage ultérieur, permettant au modèle d’affiner ses prédictions et sa génération de texte. Voici comment les boucles de rétroaction peuvent améliorer les LLM :
Apprentissage continu : En intégrant les retours des utilisateurs, les LLM peuvent apprendre de leurs interactions. Cela peut être explicite, comme des corrections ou des suggestions, ou implicite, comme les réponses avec lesquelles les utilisateurs interagissent le plus.
Adaptation aux préférences des utilisateurs : Au fil du temps, les boucles de rétroaction aident les LLM à s’adapter aux préférences individuelles des utilisateurs, en personnalisant le style et le contenu du texte généré afin de répondre aux attentes des utilisateurs.
Correction des erreurs : Lorsque des erreurs sont identifiées, les boucles de rétroaction permettent aux LLM d’ajuster leurs paramètres internes, réduisant ainsi la probabilité de répéter les mêmes erreurs.
Précision prédictive : En analysant quelles prédictions ont réussi et lesquelles n’ont pas réussi, les LLM peuvent améliorer leur précision dans la compréhension et l’anticipation des besoins des utilisateurs.
Capacités génératives : Les boucles de rétroaction peuvent guider les LLM pour générer un contenu plus créatif et plus varié, qu’il s’agisse d’écrire une histoire, de composer un poème ou de créer des articles informatifs.
Les LLM deviennent plus efficaces, précis, conviviaux et adaptés aux utilisateurs en tirant parti des boucles de rétroaction. C’est un parcours d’amélioration continue, visant à offrir aux utilisateurs une expérience à la fois intuitive et résolument humaine.
Intégration de Milvus pour une gestion améliorée des données
Milvus est une base de données vectorielle distribuée à hautes performances, particulièrement bénéfique pour la gestion de données vectorielles à grande échelle, essentielle dans les scénarios de boucles de rétroaction pour les LLM. Voici quelques-unes des fonctionnalités essentielles de Milvus qui le rendent adapté à de telles applications :
Embeddings vectoriels : Milvus est spécialisé dans la gestion des embeddings vectoriels, des représentations numériques dérivées de modèles d’apprentissage automatique. Ces embeddings encapsulent la signification sémantique des données non structurées, permettant des recherches nuancées qui capturent l’essence des données.
Traitement efficace des requêtes : Il prend en charge un traitement avancé des requêtes au-delà de la simple recherche de similarité vectorielle. Cela signifie qu’il peut gérer des données dynamiques pour des mises à jour rapides tout en garantissant un traitement efficace des requêtes, ce qui est crucial pour les LLM qui apprennent et s’adaptent en continu.
Scalabilité et disponibilité : Milvus distribue les données sur plusieurs nœuds afin d’atteindre une scalabilité et une haute disponibilité. C’est important pour les boucles de rétroaction où le volume de données peut augmenter rapidement à mesure que de nouvelles informations sont continuellement intégrées.
Calcul hétérogène : Le système est optimisé pour les plateformes de calcul hétérogènes avec des CPU et GPU modernes, ce qui bénéficie aux tâches intensives en calcul impliquées dans l’entraînement des LLM et la génération de réponses.
Interfaces faciles à utiliser : Milvus fournit des interfaces applicatives faciles à utiliser, notamment des SDK et des API RESTful, facilitant l’intégration avec les LLM et d’autres applications d’IA.
En ce qui concerne la prise en charge de l’indexation et de la récupération efficaces des données nécessaires à l’entraînement dynamique des LLM et à la génération de réponses, Milvus offre :
Génération augmentée par récupération (RAG) : Milvus peut être utilisé pour créer des systèmes RAG qui combinent un système de récupération avec un modèle génératif. Cela permet de générer un nouveau texte à partir de documents récupérés, un composant clé de l’entraînement dynamique des LLM.
Magasin vectoriel : Il met en place un magasin vectoriel pour enregistrer les embeddings vectoriels, essentiels pour les recherches de similarité texte-à-texte. Cette fonctionnalité permet au LLM de consulter des documents lors de la préparation des réponses, améliorant ainsi la qualité de la génération des réponses.
Framework d’indexation et de recherche : Milvus s’intègre à des frameworks comme NVIDIA Merlin pour fournir des capacités efficaces d’indexation et de recherche dans les bases de données vectorielles. Celles-ci sont essentielles pour les workflows de recommandation et peuvent être appliquées aux LLMs afin d’améliorer la précision des prédictions et des réponses.
Ces fonctionnalités font de Milvus un outil efficace pour améliorer les capacités de gestion des données des LLMs, en particulier dans les scénarios où des boucles de rétroaction sont utilisées pour affiner les précisions prédictives et génératives.
Voyons maintenant comment Milvus peut être utilisé pour mettre en place un système de boucle de rétroaction générative.
Mise en place d’un système de rétroaction générative avec Milvus et les LLMs
Nous commencerons par installer les packages requis comme indiqué ci-dessous. Nous utiliserons le modèle Claude d’Anthropic pour la génération de texte. Pour plus d’informations sur l’installation de Milvus, veuillez consulter la documentation officielle : documentation Milvus.
# Install Milvus, pymilvus with model extra, and the specified grpcio version
pip install pymilvus[model] grpcio==1.50.0 milvus
# Install the anthropic package for using Anthropic LLM
pip install anthropic
# Install the sentence-transformers package for text embedding
pip install sentence-transformers
Ensuite, nous démarrerons un serveur Milvus selon les étapes ci-dessous :
Importer le module
default_serverdepuis le packagemilvus.Importer les modules
connectionsetutilitydepuis le packagepymilvus.(Facultatif) Nettoyer les données précédentes à l’aide de la méthode
cleanup()dedefault_server.Démarrer le serveur Milvus à l’aide de la méthode
start()dedefault_server.Se connecter au serveur Milvus à l’aide de la méthode
connect()deconnectionsavec l’hôte et le port spécifiés.Vérifier si le serveur est prêt en affichant la version du serveur à l’aide de la méthode
get_server_version()deutility.
Le code ci-dessous montre toutes les étapes que nous avons effectuées.
from milvus import default_server
from pymilvus import connections, utility
# (OPTIONAL) Clean up any previous data
default_server.cleanup()
# Start the Milvus server
default_server.start()
# Connect to the Milvus server
connections.connect(host='127.0.0.1', port=default_server.listen_port)
# Check if the server is ready by printing the server version
print(utility.get_server_version())
Ensuite, nous faisons ce qui suit :
Importer la classe
MilvusClientdepuis le packagepymilvus.Créer une instance du client Milvus nommée
client1à l’aide du constructeurMilvusClient().
from pymilvus import MilvusClient
# Create an instance of the Milvus client
client1 = MilvusClient()
Après cela, nous créons un schéma et une collection ainsi que leurs paramètres d’index. Nous nommons la collection taverns10. Nous le faisons avec pymilvus comme indiqué ci-dessous.
from pymilvus import Collection, FieldSchema, CollectionSchema, DataType
# Define the fields for the "Taverns" collection
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name="name", dtype=DataType.VARCHAR, max_length=255, description="Tavern name"),
FieldSchema(name="description", dtype=DataType.VARCHAR, max_length=3000, description="Tavern description", is_vector=False),
FieldSchema(name="location", dtype=DataType.VARCHAR, max_length=255, description="Location in Middle-Earth"),
FieldSchema(name="famous_visitor", dtype=DataType.VARCHAR, max_length=255, description="Famous visitors in the tavern"),
FieldSchema(name="vector_embedding", dtype=DataType.FLOAT_VECTOR, dim=384, description="Vector embedding for semantic search")
]
# Define the index parameters for similarity search
index_params = {
"metric_type": "IP",
"index_type": "HNSW",
"params": {"M": 48, "efConstruction": 200}
}
# Create a CollectionSchema object using the defined fields and description
schema = CollectionSchema(fields=fields, description="LOTR Taverns")
# Create a Collection object with the specified name, schema, and index parameters
taverns10 = Collection(name="taverns10", schema=schema, index_params=index_params)
# Create an index on the "vector_embedding" field using the specified index parameters
taverns10.create_index("vector_embedding", index_params)
Nous allons maintenant ajouter des documents à la base de données avec leurs embeddings vectoriels. Nous allons créer les descriptions des documents à l’aide de claude opus, puis nous créerons leurs embeddings à l’aide de sentence transformers. Tout d’abord, nous initialisons le client Anthropic et le modèle d’embedding sentence transformers comme indiqué ci-dessous
import anthropic
from pymilvus import model
# Create an instance of the SentenceTransformerEmbeddingFunction for text embedding
sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(
model_name='all-MiniLM-L6-v2',
device='cpu'
)
# Create an instance of the Anthropic client with the provided API key
client = anthropic.Anthropic(
api_key="your_api_key_here"
)
Ensuite, nous créons une fonction generate pour générer des descriptions à l’aide du modèle claude opus. Nous utilisons ensuite cette fonction pour générer des descriptions, créer des embeddings, puis nous les ajouterons à la collection
def generate_description(name, location, famous_visitor):
# Construct a prompt for generating a vivid description of the tavern
prompt = f"Write a vivid description for a tavern named {name}, located in {location}, known for a visit by {famous_visitor}."
# Use the Anthropic client to create a message by sending the prompt to the specified model
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1000,
temperature=0,
messages=[{"role": "user", "content": prompt}]
)
# Return the generated description from the message content
return message.content[0].text
# Define a list of example tavern data
tavern_data = [
{"name": "The Prancing Pony", "location": "Bree", "famous_visitor": "Aragorn"},
{"name": "Green Dragon", "location": "Bywater", "famous_visitor": "Frodo Baggins"}
]
# Iterate over each tavern in the tavern_data list
for tavern in tavern_data:
# Generate a description for the tavern using the generate_description function
description = generate_description(tavern["name"], tavern["location"], tavern["famous_visitor"])
# Encode the generated description into a vector embedding using the encode_documents method
vector_embedding = sentence_transformer_ef.encode_documents([description])[0]
# Insert the tavern data and vector embedding into the taverns10 collection
taverns10.insert([
[tavern["name"]],
[description],
[tavern["location"]],
[tavern["famous_visitor"]],
[vector_embedding]
])
Nous avons maintenant créé une collection et ajouté des embeddings vectoriels à la base de données. Pour l’utiliser, nous devons charger la collection à l’aide de la méthode load_collection comme indiqué ci-dessous
# Load the "taverns10" collection into memory using the load_collection method
client1.load_collection(collection_name="taverns10")
# Retrieve the load state of the "taverns10" collection using the get_load_state method
res = client1.get_load_state(collection_name="taverns10")
# Print the load state
print(res)
Sortie
{'state': <LoadState: Loaded>}
Maintenant, créons une fonction qui effectue la recherche sémantique à l’aide de n’importe quelle requête d’entrée. Nous faisons cela comme indiqué ci-dessous
def search_taverns(query):
# Encode the query string into a vector using the encode_documents method
vector = sentence_transformer_ef.encode_documents([query])[0]
# Effectuer une recherche de similarité sur la collection "taverns10" à l’aide de la méthode search
results = taverns10.search(
data=[vector],
anns_field="vector_embedding",
param={"metric_type": "IP", "params": {"nprobe": 10}},
limit=3,
output_fields=["name", "description", "location", "famous_visitor"]
)
# Renvoyer les résultats de recherche
return results
Interrogeons à l’aide de la fonction search et récupérons la première réponse générée.
# Appeler la fonction search_taverns avec un exemple de requête et affecter les résultats à search_results
search_results = search_taverns("Un endroit chaleureux fréquenté par de célèbres hobbits")
search_results[0][0]
Sortie
id: 449415822381617057, distance: 0.4701901376247406, entity: {'location': 'Bree', 'famous_visitor': 'Aragorn', 'name': 'The Prancing Pony', 'description': "The Prancing Pony est une taverne chaleureuse et rustique nichée au cœur du village animé de Bree. À mesure que vous approchez de la porte en bois patiné, la lueur chaude des lanternes vacillantes et les joyeux sons des rires et des chopes qui s’entrechoquent vous invitent à entrer.\n\nEn franchissant le seuil, vous êtes accueilli par l’arôme invitant d’un ragoût copieux mijotant dans un chaudron au-dessus de la cheminée crépitante. L’intérieur de la taverne est une tapisserie de poutres en bois brut, de tables usées et de bancs polis par d’innombrables clients au fil des ans. Les murs sont ornés de bannières colorées et de curieux bibelots, chacun évoquant une histoire qui ne demande qu’à être racontée.\n\nLes habitués de The Prancing Pony forment un groupe vivant et éclectique, allant des hobbits et fermiers locaux aux nains errants et aux mystérieux rôdeurs. Au milieu des conversations et des réjouissances, les murmures au sujet d’une récente visite de l’énigmatique Aragorn, un homme de légende, ajoutent une aura d’intrigue à l’atmosphère déjà enchanteresse.\n\nAlors que vous vous installez dans un coin confortable, l’aubergiste attentionné, un joyeux gaillard à l’œil pétillant, vous apporte une chope mousseuse de la célèbre bière de la taverne et une assiette de pain brûlant, tout juste sorti du four. The Prancing Pony est bien plus qu’un simple endroit où reposer vos pieds fatigués ; c’est un sanctuaire où les histoires se partagent, les liens se forgent et l’esprit d’aventure prospère, ce qui en fait un véritable joyau au cœur de Bree."}
Nous avons obtenu une réponse plus proche de nos attentes. Nous pouvons utiliser cette réponse pour affiner davantage les réponses suivantes, déclenchant ainsi une boucle de rétroaction. Cela peut effectivement accroître la précision des sorties.
Applications pratiques et avantages
Milvus améliore les applications d’IA telles que les recommandations personnalisées en permettant des recherches de similarité pour l’appariement utilisateur-élément, garantissant ainsi la diffusion de contenus adaptés. Les systèmes d’apprentissage adaptatif facilitent la récupération rapide de ressources éducatives et s’adaptent aux rythmes d’apprentissage individuels. Pour la génération de contenu en temps réel, l’indexation efficace de Milvus prend en charge la création de contenu dynamique.
Les avantages de l’utilisation de Milvus incluent l’évolutivité pour gérer des volumes de données croissants, la rapidité pour obtenir des réponses instantanées aux requêtes et la précision pour trouver les points de données les plus pertinents, ce qui en fait une base robuste pour les applications pilotées par l’IA.
Défis et considérations
La mise en œuvre de boucles de rétroaction génératives avec des LLM et Milvus présente plusieurs défis :
Exigences computationnelles : Les LLM nécessitent des ressources de calcul importantes, qui peuvent être coûteuses et complexes à gérer.
Confidentialité des données : Garantir la confidentialité et l’intégrité des données au sein de ces systèmes est primordial, en particulier lors du traitement d’informations sensibles.
Pour relever ces défis, envisagez les solutions et bonnes pratiques suivantes :
Optimiser l’utilisation des ressources : Utilisez des services cloud dotés d’une infrastructure évolutive pour gérer efficacement les charges de calcul.
Anonymisation des données : Mettez en œuvre des techniques robustes d’anonymisation des données afin de protéger la confidentialité des utilisateurs.
Audits réguliers : Réalisez fréquemment des audits de sécurité et de confidentialité afin d’identifier et d’atténuer les vulnérabilités potentielles.
Meilleures pratiques : Pour rationaliser les processus et maintenir l’intégrité du système, appliquez les meilleures pratiques en matière d’opérations de machine learning (MLOps).
Avenir de l’IA avec les boucles de rétroaction génératives
L’avenir de l’IA est promis à une forte croissance grâce aux avancées des boucles de rétroaction génératives et à leur intégration avec les grands modèles de langage (LLMs) et les bases de données vectorielles comme Milvus. Voici à quoi s’attendre :
Méthodologies de boucle de rétroaction : Des boucles de rétroaction améliorées permettront à l’IA d’apprendre et de s’adapter de manière plus dynamique, favorisant une amélioration continue dans les applications en temps réel.
Bases de données vectorielles : Les innovations dans les bases de données vectorielles, en particulier Milvus, faciliteront la gestion efficace de données complexes, renforçant la capacité de l’IA à effectuer des recherches de similarité et une récupération basée sur le contenu.
Architectures LLM : Les améliorations des architectures LLM conduiront à une compréhension et une génération du langage plus nuancées, ouvrant de nouvelles voies pour l’interaction et la créativité de l’IA.
Points clés :
Les boucles de rétroaction génératives amélioreront considérablement les capacités d’apprentissage de l’IA.
Milvus et les bases de données vectorielles similaires fourniront l’épine dorsale d’applications d’IA évolutives et précises.
Les avancées des LLM pousseront l’IA vers des opérations plus sophistiquées et sensibles au contexte.
L’expérimentation avec ces technologies est cruciale. En tirant parti des boucles de rétroaction génératives, de Milvus et de LLM améliorés, les développeurs et les chercheurs peuvent libérer de nouveaux potentiels dans les applications pilotées par l’IA, des assistants numériques personnalisés aux outils avancés d’analyse de données. La synergie de ces technologies affinera les applications existantes et ouvrira la voie à des solutions innovantes auparavant inimaginables.
Si vous souhaitez explorer les capacités de Milvus et des grands modèles de langage (LLMs), Zilliz propose une multitude de ressources et de forums communautaires. Voici comment vous pouvez vous impliquer :
Explorer les ressources : Zilliz propose une variété de livres blancs, de webinaires et de formations pour vous aider à comprendre la recherche vectorielle et les technologies d’IA.
Rejoindre la communauté : Échangez avec une communauté croissante de développeurs et d’utilisateurs sur le Zilliz Cloud Developer Hub.
Essayez Milvus : Commencez à créer avec Milvus et découvrez sa puissance dans vos applications d’IA. Inscrivez-vous pour un compte gratuit et expérimentez avec les SDK disponibles.
Que vous soyez développeur ou débutant, ces ressources et forums sont un excellent moyen de vous connecter, d’apprendre et de contribuer à l’avenir de l’IA avec Milvus et les LLMs.
Continuer à lire

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.

How to Build RAG with Milvus, QwQ-32B and Ollama
Hands-on tutorial on how to create a streamlined, powerful RAG pipeline that balances efficiency, accuracy, and scalability using the QwQ-32B and Milvus.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.


