Gemini 3 Pro + Milvus : construire un RAG plus robuste avec un raisonnement avancé et une puissance multimodale
Gemini 3 Pro de Google a débarqué avec le rare type de version qui modifie réellement les attentes des développeurs - pas seulement un battage médiatique, mais des capacités qui étendent matériellement ce que les interfaces en langage naturel peuvent faire. Il transforme "décrire l'application que vous voulez" en un flux de travail exécutable : acheminement dynamique des outils, planification en plusieurs étapes, orchestration des API et génération d'une interface utilisateur interactive, le tout assemblé de manière transparente. C'est le modèle le plus proche du codage vibratoire de la production.
Et les chiffres le confirment. Gemini 3 Pro affiche des résultats remarquables dans presque tous les principaux points de référence :
Dernier examen de l'humanité : 37,5 % sans outils, 45,8 % avec outils - le concurrent le plus proche se situe à 26,5 %.
MathArena Apex : 23,4 %, alors que la plupart des modèles ne dépassent pas les 2 %.
ScreenSpot-Pro : 72,7 % de précision, soit près du double du modèle suivant (36,2 %).
Vending-Bench 2 : Valeur nette moyenne de 5 478,16 $, soit environ 1,4 fois plus que la deuxième place.
Le tableau ci-dessous présente d'autres résultats de référence.
Cette combinaison de raisonnement profond, d'utilisation intensive d'outils et de fluidité multimodale fait de Gemini 3 Pro un outil naturel pour la génération augmentée par récupération (RAG). Associez-le à Milvus, la base de données vectorielle open-source haute performance conçue pour la recherche sémantique à l'échelle du milliard, et vous obtiendrez une couche de recherche qui permet d'ancrer les réponses, d'évoluer proprement et de rester fiable en production, même en cas de charge de travail élevée.
Dans ce billet, nous présenterons les nouveautés de Gemini 3 Pro, les raisons pour lesquelles elles améliorent les flux de travail RAG et la manière de construire un pipeline RAG propre et efficace en utilisant Milvus comme colonne vertébrale de recherche.
Principales mises à jour de Gemini 3 Pro
Gemini 3 Pro introduit un ensemble d'améliorations substantielles qui remodèlent la façon dont le modèle raisonne, crée, exécute des tâches et interagit avec les utilisateurs. Ces améliorations se répartissent en quatre grands domaines de compétences :
Compréhension et raisonnement multimodaux
Gemini 3 Pro établit de nouveaux records dans d'importants benchmarks multimodaux, notamment ARC-AGI-2 pour le raisonnement visuel, MMMU-Pro pour la compréhension multimodale et Video-MMMU pour la compréhension vidéo et l'acquisition de connaissances. Le modèle introduit également Deep Think, un mode de raisonnement étendu qui permet un traitement logique structuré en plusieurs étapes. Il en résulte une précision nettement supérieure pour les problèmes complexes pour lesquels les modèles traditionnels de raisonnement en chaîne ont tendance à échouer.
Génération de code
Le modèle porte le codage génératif à un niveau supérieur. Gemini 3 Pro peut produire des SVG interactifs, des applications web complètes, des scènes 3D et même des jeux fonctionnels - y compris des environnements de type Minecraft et des billards sur navigateur - le tout à partir d'une seule invite en langage naturel. Le développement frontal en bénéficie particulièrement : le modèle peut recréer des conceptions d'interface utilisateur existantes avec une grande fidélité ou traduire une capture d'écran directement en code prêt à la production, ce qui accélère considérablement le travail itératif sur l'interface utilisateur.
Agents d'IA et utilisation d'outils
Avec l'autorisation de l'utilisateur, Gemini 3 Pro peut accéder aux données de l'appareil Google de l'utilisateur pour effectuer des tâches à long terme et en plusieurs étapes, telles que la planification de voyages ou la réservation de voitures de location. Cette capacité agentique se reflète dans ses excellentes performances sur Vending-Bench 2, un benchmark spécialement conçu pour tester l'utilisation d'outils à long terme. Le modèle prend également en charge des flux de travail d'agent de niveau professionnel, y compris l'exécution de commandes de terminal et l'interaction avec des outils externes par le biais d'API bien définies.
Interface utilisateur générative
Gemini 3 Pro dépasse le modèle conventionnel "une question - une réponse" et introduit une interface utilisateur générative, dans laquelle le modèle peut construire des expériences interactives entières de manière dynamique. Au lieu de renvoyer un texte statique, il peut générer des interfaces entièrement personnalisées - par exemple, un planificateur de voyage riche et ajustable - directement en réponse aux instructions de l'utilisateur. Les LLM passent ainsi du statut de répondeurs passifs à celui de générateurs actifs d'interfaces.
Mise à l'épreuve de Gemini 3 Pro
Au-delà des résultats des tests de référence, nous avons effectué une série de tests pratiques pour comprendre comment Gemini 3 Pro se comporte dans les flux de travail réels. Les résultats soulignent comment son raisonnement multimodal, ses capacités génératives et sa planification à long terme se traduisent par une valeur pratique pour les développeurs.
Compréhension multimodale
Gemini 3 Pro fait preuve d'une polyvalence impressionnante en matière de texte, d'images, de vidéo et de code. Lors de notre test, nous avons téléchargé une vidéo de Zilliz directement depuis YouTube. Le modèle a traité l'intégralité du clip - y compris la narration, les transitions et le texte à l'écran - en 40 secondes environ, ce qui est exceptionnellement rapide pour un contenu multimodal de longue durée.
Les évaluations internes de Google montrent un comportement similaire : Gemini 3 Pro a traité des recettes manuscrites en plusieurs langues, les a transcrites et traduites, puis les a compilées dans un livre de recettes familiales partageable.
Tâches en un clin d'œil
Gemini 3 Pro peut générer des interfaces web entièrement interactives sans aucun exemple ou échafaudage préalable. Lorsqu'on lui a demandé de créer un jeu Web rétro-futuriste en 3D avec des vaisseaux spatiaux, le modèle a produit une scène interactive complète : une grille violet néon, des vaisseaux de style cyberpunk, des effets de particules lumineuses et des contrôles de caméra fluides, le tout en une seule réponse zéro-coup.
Planification de tâches complexes
Le modèle fait également preuve d'une meilleure planification des tâches à long terme que la plupart de ses homologues. Lors de notre test d'organisation de la boîte de réception, Gemini 3 Pro s'est comporté comme un assistant administratif IA : il a classé les courriels désordonnés dans des catégories de projets, a rédigé des suggestions exploitables (réponse, suivi, archivage) et a présenté un résumé propre et structuré. Une fois le plan du modèle établi, la totalité de la boîte de réception pouvait être vidée d'un simple clic de confirmation.
Comment construire un système RAG avec Gemini 3 Pro et Milvus
Le raisonnement amélioré, la compréhension multimodale et les fortes capacités d'utilisation des outils de Gemini 3 Pro en font une excellente base pour des systèmes RAG performants.
Associé à Milvus, la base de données vectorielles open-source haute performance conçue pour la recherche sémantique à grande échelle, vous bénéficiez d'une répartition claire des responsabilités : Gemini 3 Pro se charge de l'interprétation, du raisonnement et de la génération, tandis que Milvus fournit une couche d'extraction rapide et évolutive qui maintient les réponses ancrées dans les données de votre entreprise. Cette association est bien adaptée aux applications de production telles que les bases de connaissances internes, les assistants documentaires, les copilotes d'assistance à la clientèle et les systèmes experts spécifiques à un domaine.
Conditions préalables
Avant de construire votre pipeline RAG, assurez-vous que les bibliothèques Python suivantes sont installées ou mises à jour dans leurs dernières versions :
pymilvus - le SDK officiel Milvus Python
google-generativeai - la bibliothèque client Gemini 3 Pro
requests - pour gérer les appels HTTP si nécessaire
tqdm - pour les barres de progression pendant l'ingestion des ensembles de données
! pip install --upgrade pymilvus google-generativeai requests tqdm
Ensuite, connectez-vous à Google AI Studio pour obtenir votre clé API.
import os
os.environ["GEMINI_API_KEY"] = "**********"
Préparation du jeu de données
Pour ce tutoriel, nous utiliserons la section FAQ de la documentation Milvus 2.4.x comme base de connaissances privée pour notre système RAG.
Téléchargez l'archive de la documentation et extrayez-la dans un dossier nommé milvus_docs.
! wget https://github.com/milvus-io/milvus-docs/releases/download/v2.4.6-preview/milvus_docs_2.4.x_en.zip
! unzip -q milvus_docs_2.4.x_en.zip -d milvus_docs
Chargez tous les fichiers Markdown à partir du chemin milvus_docs/en/faq. Pour chaque document, nous appliquons une division simple basée sur les titres # pour séparer grossièrement les sections principales dans chaque fichier Markdown.
from glob import glob
text_lines = []
for file_path in glob("milvus_docs/en/faq/*.md", recursive=True):
with open(file_path, "r") as file:
file_text = file.read()
text_lines += file_text.split("# ")
Configuration du LLM et du modèle d'intégration
Pour ce tutoriel, nous utiliserons gemini-3-pro-preview comme LLM et text-embedding-004 comme modèle d'intégration.
import google.generativeai as genai
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
gemini_model = genai.GenerativeModel("gemini-3-pro-preview")
response = gemini_model.generate_content("who are you")
print(response.text)
Réponse du modèle : Je suis Gemini, un grand modèle de langage construit par Google.
Vous pouvez effectuer une vérification rapide en générant un test d'intégration et en imprimant sa dimensionnalité ainsi que les premières valeurs :
test_embeddings = genai.embed_content(
model="models/text-embedding-004", content=["This is a test1", "This is a test2"]
)["embedding"]
embedding_dim = len(test_embeddings[0])
print(embedding_dim)
print(test_embeddings[0][:10])
Sortie du vecteur de test :
768
[0.013588584, -0.004361838, -0.08481652, -0.039724775, 0.04723794, -0.0051557426, 0.026071774, 0.045514572, -0.016867816, 0.039378334]
Chargement des données dans Milvus
Créer une collection
from pymilvus import MilvusClient
milvus_client = MilvusClient(uri="./milvus_demo.db")
collection_name = "my_rag_collection"
Lors de la création d'une collection ( MilvusClient), vous avez le choix entre trois options de configuration, en fonction de votre échelle et de votre environnement :
Mode local (Milvus Lite) : Définissez l'URI sur un chemin de fichier local (par exemple,
./milvus.db). Il s'agit de la manière la plus simple de démarrer - Milvus Lite stockera automatiquement toutes les données dans ce fichier.Milvus auto-hébergé (Docker ou Kubernetes) : Pour les ensembles de données plus importants ou les charges de travail de production, exécutez Milvus sur Docker ou Kubernetes. Définissez l'URI sur le point d'extrémité de votre serveur Milvus, tel que
http://localhost:19530.Zilliz Cloud (le service Milvus entièrement géré) : Si vous préférez une solution gérée, utilisez Zilliz Cloud. Définissez l'URI sur votre point de terminaison public et fournissez votre clé API comme jeton d'authentification.
Avant de créer une nouvelle collection, vérifiez d'abord si elle existe déjà. Si c'est le cas, supprimez-la et recréez-la pour garantir une configuration propre.
if milvus_client.has_collection(collection_name):
milvus_client.drop_collection(collection_name)
Créez une nouvelle collection avec les paramètres spécifiés.
Si aucun schéma n'est fourni, Milvus génère automatiquement un champ ID par défaut comme clé primaire et un champ vectoriel pour le stockage des embeddings. Il fournit également un champ dynamique JSON réservé, qui capture tous les champs supplémentaires qui ne sont pas définis dans le schéma.
milvus_client.create_collection(
collection_name=collection_name,
dimension=embedding_dim,
metric_type="COSINE",
consistency_level="Strong", # Strong consistency level
)
Insérer des données
Parcourez chaque entrée de texte, générez son vecteur d'intégration et insérez les données dans Milvus. Dans cet exemple, nous incluons un champ supplémentaire appelé text. Comme il n'est pas prédéfini dans le schéma, Milvus le stocke automatiquement à l'aide du champ JSON dynamique sous le capot - aucune configuration supplémentaire n'est requise.
from tqdm import tqdm
data = []
doc_embeddings = genai.embed_content(
model="models/text-embedding-004", content=text_lines
)["embedding"]
for i, line in enumerate(tqdm(text_lines, desc="Creating embeddings")):
data.append({"id": i, "vector": doc_embeddings[i], "text": line})
milvus_client.insert(collection_name=collection_name, data=data)
Exemple de sortie :
Creating embeddings: 100%|█████████████████████████| 72/72 [00:00<00:00, 431414.13it/s]
{'insert_count': 72, 'ids': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71], 'cost': 0}
Construction du flux de travail RAG
Récupérer les données pertinentes
Pour tester la récupération, nous posons une question courante sur Milvus.
question = "How is data stored in milvus?"
Recherchez la requête dans la collection et renvoyez les 3 résultats les plus pertinents.
question_embedding = genai.embed_content(
model="models/text-embedding-004", content=question
)["embedding"]
search_res = milvus_client.search(
collection_name=collection_name,
data=[question_embedding],
limit=3, # Return top 3 results
search_params={"metric_type": "COSINE", "params": {}}, # Inner product distance
output_fields=["text"], # Return the text field
)
import json
retrieved_lines_with_distances = [
(res["entity"]["text"], res["distance"]) for res in search_res[0]
]
print(json.dumps(retrieved_lines_with_distances, indent=4))
Les résultats sont renvoyés par ordre de similarité, du plus proche au moins similaire.
[
[
" Where does Milvus store data?\n\nMilvus deals with two types of data, inserted data and metadata. \n\nInserted data, including vector data, scalar data, and collection-specific schema, are stored in persistent storage as incremental log. Milvus supports multiple object storage backends, including [MinIO](
https://min.io/
), [AWS S3](
https://aws.amazon.com/s3/?nc1=h_ls
), [Google Cloud Storage](
https://cloud.google.com/storage?hl=en#object-storage-for-companies-of-all-sizes
) (GCS), [Azure Blob Storage](
https://azure.microsoft.com/en-us/products/storage/blobs
), [Alibaba Cloud OSS](
https://www.alibabacloud.com/product/object-storage-service
), and [Tencent Cloud Object Storage](
https://www.tencentcloud.com/products/cos
) (COS).\n\nMetadata are generated within Milvus. Each Milvus module has its own metadata that are stored in etcd.\n\n###",
0.8048489093780518
],
[
"Does the query perform in memory? What are incremental data and historical data?\n\nYes. When a query request comes, Milvus searches both incremental data and historical data by loading them into memory. Incremental data are in the growing segments, which are buffered in memory before they reach the threshold to be persisted in storage engine, while historical data are from the sealed segments that are stored in the object storage. Incremental data and historical data together constitute the whole dataset to search.\n\n###",
0.757495105266571
],
[
"What is the maximum dataset size Milvus can handle?\n\n \nTheoretically, the maximum dataset size Milvus can handle is determined by the hardware it is run on, specifically system memory and storage:\n\n- Milvus loads all specified collections and partitions into memory before running queries. Therefore, memory size determines the maximum amount of data Milvus can query.\n- When new entities and and collection-related schema (currently only MinIO is supported for data persistence) are added to Milvus, system storage determines the maximum allowable size of inserted data.\n\n###",
0.7453694343566895
]
]
Générer une réponse RAG avec le LLM
Après avoir récupéré les documents, convertissez-les dans un format de chaîne de caractères
context = "\n".join(
[line_with_distance[0] for line_with_distance in retrieved_lines_with_distances]
)
Fournir au LLM une invite système et une invite utilisateur, toutes deux construites à partir des documents récupérés de Milvus.
SYSTEM_PROMPT = """
Human: You are an AI assistant. You are able to find answers to the questions from the contextual passage snippets provided.
"""
USER_PROMPT = f"""
Use the following pieces of information enclosed in <context> tags to provide an answer to the question enclosed in <question> tags.
<context>
{context}
</context>
<question>
{question}
</question>
"""
Utilisez le modèle gemini-3-pro-preview avec ces invites pour générer la réponse finale.
gemini_model = genai.GenerativeModel(
"gemini-3-pro-preview", system_instruction=SYSTEM_PROMPT
)
response = gemini_model.generate_content(USER_PROMPT)
print(response.text)
Le résultat montre que Gemini 3 Pro produit une réponse claire et bien structurée basée sur les informations extraites.
Based on the provided documents, Milvus stores data in the following ways:
* **Inserted Data:** Vector data, scalar data, and collection-specific schema are stored in persistent storage as an incremental log. Milvus supports multiple object storage backends for this purpose, including:
* MinIO
* AWS S3
* Google Cloud Storage (GCS)
* Azure Blob Storage
* Alibaba Cloud OSS
* Tencent Cloud Object Storage (COS)
* **Metadata:** Metadata generated within Milvus modules is stored in **etcd**.
* **Memory Buffering:** Incremental data (growing segments) are buffered in memory before being persisted, while historical data (sealed segments) resides in object storage but is loaded into memory for querying.
Remarque: Gemini 3 Pro n'est pas encore disponible pour les utilisateurs free-tier. Cliquez ici pour plus de détails.
Vous pouvez y accéder via OpenRouter:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="<OPENROUTER_API_KEY>",
)
response2 = client.chat.completions.create(
model="google/gemini-3-pro-preview",
messages=[
{
"role": "system",
"content": SYSTEM_PROMPT
},
{
"role": "user",
"content": USER_PROMPT
}
],
extra_body={"reasoning": {"enabled": True}}
)
response_message = response2.choices[0].message
print(response_message.content)
Encore une chose : Vibe Coding avec Google Antigravity
Parallèlement à Gemini 3 Pro, Google a présenté Google Antigravity, une plateforme de codage vidéo qui interagit de manière autonome avec votre éditeur, votre terminal et votre navigateur. Contrairement aux outils antérieurs assistés par l'IA qui géraient des instructions ponctuelles, Antigravity fonctionne à un niveau orienté vers les tâches - permettant aux développeurs de spécifier ce qu' ils veulent construire tandis que le système gère le comment, orchestrant le flux de travail complet de bout en bout.
Les flux de codage d'IA traditionnels généraient généralement des bribes isolées que les développeurs devaient encore examiner, intégrer, déboguer et exécuter manuellement. Antigravity change cette dynamique. Vous pouvez simplement décrire une tâche - par exemple, "Créer un jeu simple d'interaction avec les animaux de compagnie " - et le système décomposera la demande, générera le code, exécutera les commandes terminales, ouvrira un navigateur pour tester le résultat, et itérera jusqu'à ce que cela fonctionne. L'IA n'est plus un moteur d'autocomplétion passif, mais un partenaire d'ingénierie actif, qui apprend vos préférences et s'adapte à votre style de développement personnel au fil du temps.
À l'avenir, l'idée d'un agent coordonnant directement avec une base de données n'est pas farfelue. Grâce à l'appel d'outils via MCP, une IA pourrait éventuellement lire une base de données Milvus, assembler une base de connaissances et même maintenir son propre pipeline de recherche de manière autonome. À bien des égards, ce changement est encore plus important que la mise à niveau du modèle lui-même : une fois qu'une IA peut prendre une description au niveau du produit et la convertir en une séquence de tâches exécutables, l'effort humain se déplace naturellement vers la définition des objectifs, des contraintes et de ce à quoi ressemble la "justesse" - la réflexion de haut niveau qui stimule véritablement le développement de produits.
Prêt à construire ?
Si vous êtes prêt à l'essayer, suivez notre tutoriel étape par étape et construisez un système RAG avec Gemini 3 Pro + Milvus dès aujourd'hui.
Vous avez des questions ou souhaitez approfondir une fonctionnalité ? Rejoignez notre canal Discord ou déposez des questions sur GitHub. Vous pouvez également réserver une session individuelle de 20 minutes pour obtenir des informations, des conseils et des réponses à vos questions dans le cadre des Heures de bureau Milvus.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



