Milvus
Zilliz
  • Home
  • Blog
  • Gemini 3 Pro + Milvus: creación de un GAR más robusto con razonamiento avanzado y potencia multimodal

Gemini 3 Pro + Milvus: creación de un GAR más robusto con razonamiento avanzado y potencia multimodal

  • Tutorial
November 20, 2025
Lumina Wang

Gemini 3 Pro de Google aterrizó con el raro tipo de lanzamiento que realmente cambia las expectativas de los desarrolladores: no sólo bombo y platillo, sino capacidades que amplían materialmente lo que las interfaces de lenguaje natural pueden hacer. Convierte "describe la aplicación que quieres" en un flujo de trabajo ejecutable: enrutamiento dinámico de herramientas, planificación en varios pasos, orquestación de API y generación interactiva de UX, todo ello cosido a la perfección. Este es el modelo que más se ha acercado a hacer que la codificación vibe parezca viable en producción.

Y las cifras respaldan esta afirmación. Gemini 3 Pro obtiene resultados sobresalientes en casi todas las pruebas principales:

  • Humanity's Last Exam: 37,5% sin herramientas, 45,8% con herramientas; el competidor más cercano se sitúa en el 26,5%.

  • MathArena Apex: 23,4%, mientras que la mayoría de los modelos no superan el 2%.

  • ScreenSpot-Pro: 72,7% de precisión, casi el doble que el siguiente, con un 36,2%.

  • Vending-Bench 2: valor neto medio de 5.478,16 dólares, aproximadamente 1,4 veces por encima del segundo puesto.

Consulte la tabla siguiente para ver más resultados de pruebas comparativas.

Esta combinación de razonamiento profundo, uso intensivo de herramientas y fluidez multimodal convierte a Gemini 3 Pro en una solución natural para la generación aumentada por recuperación (RAG). Combínelo con Milvus, la base de datos vectorial de código abierto de alto rendimiento creada para la búsqueda semántica a escala de miles de millones, y obtendrá una capa de recuperación que fundamenta las respuestas, se escala limpiamente y se mantiene fiable en producción incluso con cargas de trabajo pesadas.

En este artículo, desglosaremos las novedades de Gemini 3 Pro, por qué eleva los flujos de trabajo RAG y cómo crear una canalización RAG limpia y eficiente utilizando Milvus como columna vertebral de recuperación.

Principales actualizaciones de Gemini 3 Pro

Gemini 3 Pro introduce un conjunto de mejoras sustanciales que reconfiguran la forma en que el modelo razona, crea, ejecuta tareas e interactúa con los usuarios. Estas mejoras se dividen en cuatro áreas principales:

Comprensión y razonamiento multimodal

Gemini 3 Pro establece nuevos récords en importantes pruebas multimodales, como ARC-AGI-2 para razonamiento visual, MMMU-Pro para comprensión multimodal y Video-MMMU para comprensión de vídeo y adquisición de conocimientos. El modelo también introduce Deep Think, un modo de razonamiento ampliado que permite el procesamiento lógico estructurado en varios pasos. El resultado es una precisión significativamente mayor en problemas complejos en los que los modelos tradicionales de cadena de pensamiento tienden a fallar.

Generación de código

El modelo lleva la codificación generativa a un nuevo nivel. Gemini 3 Pro puede producir SVG interactivos, aplicaciones web completas, escenas en 3D e incluso juegos funcionales -incluidos entornos tipo Minecraft y billares basados en navegador-, todo ello a partir de una única instrucción en lenguaje natural. El desarrollo front-end se beneficia especialmente: el modelo puede recrear diseños de interfaz de usuario existentes con alta fidelidad o traducir una captura de pantalla directamente en código listo para producción, lo que agiliza enormemente el trabajo iterativo de interfaz de usuario.

Agentes de IA y uso de herramientas

Con el permiso del usuario, Gemini 3 Pro puede acceder a los datos del dispositivo Google del usuario para realizar tareas de larga duración y de varios pasos, como planificar viajes o reservar coches de alquiler. Esta capacidad de agente se refleja en su excelente rendimiento en Vending-Bench 2, una prueba de rendimiento diseñada específicamente para probar el uso de herramientas en horizontes largos. El modelo también admite flujos de trabajo de agente de nivel profesional, incluida la ejecución de comandos de terminal y la interacción con herramientas externas a través de API bien definidas.

Interfaz de usuario generativa

Gemini 3 Pro va más allá del modelo convencional de una pregunta, una respuesta e introduce la interfaz de usuario generativa, en la que el modelo puede crear experiencias interactivas completas de forma dinámica. En lugar de devolver texto estático, puede generar interfaces totalmente personalizadas -por ejemplo, un planificador de viajes rico y ajustable- directamente en respuesta a las instrucciones del usuario. De este modo, los LLM pasan de ser respondedores pasivos a generadores activos de interfaces.

Puesta a prueba de Gemini 3 Pro

Además de los resultados de las pruebas comparativas, realizamos una serie de pruebas prácticas para comprender cómo se comporta Gemini 3 Pro en flujos de trabajo reales. Los resultados ponen de relieve cómo su razonamiento multimodal, sus capacidades generativas y su planificación a largo plazo se traducen en un valor práctico para los desarrolladores.

Comprensión multimodal

Gemini 3 Pro muestra una versatilidad impresionante en texto, imágenes, vídeo y código. En nuestra prueba, cargamos un vídeo de Zilliz directamente desde YouTube. El modelo procesó el clip completo -incluida la narración, las transiciones y el texto en pantalla- en unos 40 segundos, un tiempo inusualmente rápido para un contenido multimodal de formato largo.

Las evaluaciones internas de Google muestran un comportamiento similar: Gemini 3 Pro procesó recetas escritas a mano en varios idiomas, transcribió y tradujo cada una de ellas y las compiló en un recetario familiar que se puede compartir.

Tareas de disparo cero

Gemini 3 Pro puede generar interfaces de usuario web totalmente interactivas sin ejemplos ni andamiaje previos. Cuando se le pidió que creara un pulido juego web retrofuturista de naves espaciales en 3D, el modelo produjo una escena interactiva completa: una cuadrícula púrpura neón, naves de estilo cyberpunk, efectos de partículas brillantes y controles de cámara suaves, todo ello en una única respuesta de cero disparos.

Planificación de tareas complejas

El modelo también demuestra una mayor capacidad de planificación de tareas a largo plazo que muchos de sus competidores. En nuestra prueba de organización de la bandeja de entrada, Gemini 3 Pro se comportó como un asistente administrativo de inteligencia artificial: clasificando los correos electrónicos desordenados en cubos de proyectos, redactando sugerencias procesables (respuesta, seguimiento, archivo) y presentando un resumen limpio y estructurado. Una vez trazado el plan del modelo, toda la bandeja de entrada podía borrarse con un solo clic de confirmación.

Cómo construir un sistema RAG con Gemini 3 Pro y Milvus

El razonamiento mejorado de Gemini 3 Pro, la comprensión multimodal y las sólidas capacidades de uso de herramientas lo convierten en una base excelente para los sistemas GAR de alto rendimiento.

Cuando se combina con Milvus, la base de datos vectorial de código abierto de alto rendimiento creada para la búsqueda semántica a gran escala, se obtiene una clara división de responsabilidades: Gemini 3 Pro se encarga de la interpretación, el razonamiento y la generación, mientras que Milvus proporciona una capa de recuperación rápida y escalable que mantiene las respuestas basadas en los datos de su empresa. Esta combinación es idónea para aplicaciones de producción como bases de conocimiento internas, asistentes de documentos, copilotos de atención al cliente y sistemas expertos en dominios específicos.

Requisitos previos

Antes de construir su canalización RAG, asegúrese de que estas bibliotecas básicas de Python están instaladas o actualizadas a sus últimas versiones:

  • pymilvus - el SDK Python oficial de Milvus

  • google-generativeai - la biblioteca cliente Gemini 3 Pro

  • requests - para gestionar llamadas HTTP cuando sea necesario

  • tqdm - para las barras de progreso durante la ingestión del conjunto de datos

! pip install --upgrade pymilvus google-generativeai requests tqdm

A continuación, inicia sesión en Google AI Studio para obtener tu clave API.

import os
os.environ["GEMINI_API_KEY"] = "**********"

Preparación del conjunto de datos

Para este tutorial, utilizaremos la sección de preguntas frecuentes de la documentación de Milvus 2.4.x como base de conocimiento privada para nuestro sistema RAG.

Descargue el archivo de documentación y extráigalo en una carpeta llamada 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

Cargue todos los archivos Markdown de la ruta milvus_docs/en/faq. Para cada documento, aplicamos una división simple basada en los encabezados de # para separar aproximadamente las secciones principales dentro de cada archivo 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("# ")

Configuración del LLM y del modelo de incrustación

Para este tutorial, utilizaremos gemini-3-pro-preview como LLM y text-embedding-004 como modelo de incrustación.

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)

Respuesta del modelo: Soy Gemini, un gran modelo lingüístico creado por Google.

Puede realizar una comprobación rápida generando una incrustación de prueba e imprimiendo su dimensionalidad junto con los primeros valores:

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])

Salida del vector de prueba:

768

[0.013588584, -0.004361838, -0.08481652, -0.039724775, 0.04723794, -0.0051557426, 0.026071774, 0.045514572, -0.016867816, 0.039378334]

Cargar datos en Milvus

Crear una colección

from pymilvus import MilvusClient
milvus_client = MilvusClient(uri="./milvus_demo.db")
collection_name = "my_rag_collection"

Al crear una MilvusClient, puede elegir entre tres opciones de configuración, dependiendo de su escala y entorno:

  • Modo local (Milvus Lite): Establezca el URI en una ruta de archivo local (por ejemplo, ./milvus.db). Esta es la forma más fácil de empezar - Milvus Lite almacenará automáticamente todos los datos en ese archivo.

  • Milvus autoalojado (Docker o Kubernetes): Para conjuntos de datos más grandes o cargas de trabajo de producción, ejecute Milvus en Docker o Kubernetes. Establezca el URI a su punto final del servidor Milvus, como http://localhost:19530.

  • Zilliz Cloud (el servicio Milvus totalmente gestionado): Si prefiere una solución gestionada, utilice Zilliz Cloud. Establezca el URI en su punto final público y proporcione su clave API como token de autenticación.

Antes de crear una nueva colección, compruebe si ya existe. Si es así, elimínela y vuelva a crearla para garantizar una configuración limpia.

if milvus_client.has_collection(collection_name):
    milvus_client.drop_collection(collection_name)

Cree una nueva colección con los parámetros especificados.

Si no se proporciona ningún esquema, Milvus genera automáticamente un campo ID por defecto como clave primaria y un campo vectorial para almacenar incrustaciones. También proporciona un campo dinámico JSON reservado, que captura cualquier campo adicional que no esté definido en el esquema.

milvus_client.create_collection(
    collection_name=collection_name,
    dimension=embedding_dim,
    metric_type="COSINE",
    consistency_level="Strong",  # Strong consistency level
)

Insertar datos

Recorra cada entrada de texto, genere su vector de incrustación e inserte los datos en Milvus. En este ejemplo, incluimos un campo adicional llamado text. Como no está predefinido en el esquema, Milvus lo almacena automáticamente utilizando el campo JSON dinámico - no requiere configuración adicional.

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)

Ejemplo de salida:

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}

Creación del flujo de trabajo RAG

Recuperar datos relevantes

Para probar la recuperación, hacemos una pregunta común sobre Milvus.

question = "How is data stored in milvus?"

Busca la consulta en la colección y devuelve los 3 resultados más relevantes.

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))

Los resultados se devuelven por orden de similitud, del más parecido al menos parecido.

[
    [
        " 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
    ]
]

Generar una respuesta RAG con el LLM

Tras recuperar los documentos, conviértalos a un formato de cadena

context = "\n".join(
    [line_with_distance[0] for line_with_distance in retrieved_lines_with_distances]
)

Proporcionar al LLM un prompt de sistema y un prompt de usuario, ambos construidos a partir de los documentos recuperados 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>
"""

Utilice el modelo gemini-3-pro-preview junto con estas instrucciones para generar la respuesta final.

gemini_model = genai.GenerativeModel(
    "gemini-3-pro-preview", system_instruction=SYSTEM_PROMPT
)
response = gemini_model.generate_content(USER_PROMPT)
print(response.text)

A partir de la salida, puede ver que Gemini 3 Pro produce una respuesta clara y bien estructurada basada en la información recuperada.

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.

Nota: Gemini 3 Pro no está disponible actualmente para los usuarios de la versión gratuita. Haga clic aquí para obtener más información.

Puede acceder a él a través de 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)

Una cosa más: Vibe Coding con Google Antigravity

Junto con Gemini 3 Pro, Google presentó Google Antigravity, una plataforma de codificación en vídeo que interactúa de forma autónoma con tu editor, terminal y navegador. A diferencia de las anteriores herramientas asistidas por IA que gestionaban instrucciones puntuales, Antigravity opera a un nivel orientado a tareas, permitiendo a los desarrolladores especificar lo que quieren construir mientras que el sistema gestiona el cómo, orquestando el flujo de trabajo completo de principio a fin.

Los flujos de trabajo de codificación de IA tradicionales solían generar fragmentos aislados que los desarrolladores tenían que revisar, integrar, depurar y ejecutar manualmente. Antigravity cambia esta dinámica. Basta con describir una tarea -por ejemplo, "Crear un juego sencillo de interacción con mascotas "- y el sistema descompondrá la petición, generará el código, ejecutará comandos de terminal, abrirá un navegador para probar el resultado e iterará hasta que funcione. De este modo, la IA pasa de ser un motor pasivo de autocompletado a convertirse en un socio activo de ingeniería que aprende tus preferencias y se adapta a tu estilo personal de desarrollo con el paso del tiempo.

De cara al futuro, la idea de que un agente se coordine directamente con una base de datos no es descabellada. Con la llamada a herramientas a través de MCP, una IA podría llegar a leer de una base de datos Milvus, reunir una base de conocimientos e incluso mantener su propia canalización de recuperación de forma autónoma. En muchos sentidos, este cambio es incluso más significativo que la propia actualización del modelo: una vez que una IA puede tomar una descripción a nivel de producto y convertirla en una secuencia de tareas ejecutables, el esfuerzo humano se desplaza naturalmente hacia la definición de objetivos, restricciones y lo que parece "correcto" - el pensamiento de alto nivel que realmente impulsa el desarrollo de productos.

¿Listo para construir?

Si está listo para probarlo, siga nuestro tutorial paso a paso y construya un sistema RAG con Gemini 3 Pro + Milvus hoy mismo.

¿Tiene preguntas o desea profundizar en alguna función? Únase a nuestro canal Discord o presente incidencias en GitHub. También puede reservar una sesión individual de 20 minutos para obtener información, orientación y respuestas a sus preguntas a través de Milvus Office Hours.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Sigue Leyendo