Milvus
Zilliz
  • Home
  • Blog
  • Gemini 3 Pro + Milvus: Construir um RAG mais robusto com raciocínio avançado e poder multimodal

Gemini 3 Pro + Milvus: Construir um RAG mais robusto com raciocínio avançado e poder multimodal

  • Tutorial
November 20, 2025
Lumina Wang

O Gemini 3 Pro da Google chegou com o raro tipo de lançamento que muda genuinamente as expectativas dos programadores - não apenas uma propaganda, mas capacidades que expandem materialmente o que as interfaces de linguagem natural podem fazer. Transforma a frase "descreva a aplicação que pretende" num fluxo de trabalho executável: encaminhamento dinâmico de ferramentas, planeamento em várias etapas, orquestração de API e geração de UX interactiva, tudo isto perfeitamente integrado. Este é o modelo que mais se aproxima de tornar a codificação de vibração viável para a produção.

E os números confirmam a narrativa. O Gemini 3 Pro apresenta resultados de destaque em quase todos os principais benchmarks:

  • Humanity's Last Exam: 37,5% sem ferramentas, 45,8% com ferramentas - o concorrente mais próximo fica em 26,5%.

  • MathArena Apex: 23,4%, enquanto a maioria dos modelos não consegue ultrapassar os 2%.

  • ScreenSpot-Pro: 72,7% de precisão, quase o dobro do segundo melhor, com 36,2%.

  • Vending-Bench 2: Valor líquido médio de $5.478,16, cerca de 1,4× acima do segundo lugar.

Consulte a tabela abaixo para obter mais resultados de benchmark.

Esta combinação de raciocínio profundo, forte uso de ferramentas e fluência multimodal faz do Gemini 3 Pro um ajuste natural para a geração aumentada por recuperação (RAG). Junte-o ao Milvus, o banco de dados vetorial de código aberto de alto desempenho criado para a pesquisa semântica em escala de bilhões, e você terá uma camada de recuperação que fundamenta as respostas, escala de forma limpa e permanece confiável para a produção, mesmo sob cargas de trabalho pesadas.

Neste post, vamos explicar o que há de novo no Gemini 3 Pro, por que ele melhora os fluxos de trabalho RAG e como criar um pipeline RAG limpo e eficiente usando o Milvus como sua espinha dorsal de recuperação.

Principais atualizações no Gemini 3 Pro

O Gemini 3 Pro apresenta um conjunto de atualizações substanciais que reformulam a forma como o modelo raciocina, cria, executa tarefas e interage com os usuários. Essas melhorias se dividem em quatro grandes áreas de capacidade:

Compreensão e raciocínio multimodais

O Gemini 3 Pro estabelece novos recordes em importantes benchmarks multimodais, incluindo ARC-AGI-2 para raciocínio visual, MMMU-Pro para compreensão multimodal e Video-MMMU para compreensão de vídeo e aquisição de conhecimento. O modelo também introduz o Deep Think, um modo de raciocínio alargado que permite o processamento lógico estruturado e em várias etapas. Isto resulta numa precisão significativamente maior em problemas complexos em que os modelos tradicionais de cadeia de pensamento tendem a falhar.

Geração de código

O modelo leva a codificação generativa a um novo nível. O Gemini 3 Pro pode produzir SVGs interactivos, aplicações Web completas, cenas 3D e até jogos funcionais - incluindo ambientes do tipo Minecraft e bilhares baseados no browser - tudo a partir de um único comando em linguagem natural. O desenvolvimento front-end é especialmente beneficiado: o modelo pode recriar designs de IU existentes com alta fidelidade ou traduzir uma captura de tela diretamente em código pronto para produção, tornando o trabalho iterativo de IU muito mais rápido.

Agentes de IA e utilização de ferramentas

Com a permissão do utilizador, o Gemini 3 Pro pode aceder a dados do dispositivo Google de um utilizador para realizar tarefas de longo prazo e em várias etapas, como planear viagens ou reservar carros de aluguer. Esta capacidade agêntica reflecte-se no seu forte desempenho no Vending-Bench 2, um benchmark especificamente concebido para testar o uso de ferramentas de longo prazo. O modelo também suporta fluxos de trabalho de agentes de nível profissional, incluindo a execução de comandos de terminal e a interação com ferramentas externas através de APIs bem definidas.

Interface de utilizador generativa

O Gemini 3 Pro ultrapassa o modelo convencional de uma pergunta e uma resposta e introduz a IU generativa, em que o modelo pode criar experiências interactivas inteiras de forma dinâmica. Em vez de devolver texto estático, pode gerar interfaces totalmente personalizadas - por exemplo, um planeador de viagens rico e ajustável - diretamente em resposta às instruções do utilizador. Isto faz com que os LLM passem de respondedores passivos a geradores activos de interfaces.

Colocando o Gemini 3 Pro à prova

Para além dos resultados dos testes de referência, realizámos uma série de testes práticos para compreender o comportamento do Gemini 3 Pro em fluxos de trabalho reais. Os resultados destacam como o raciocínio multimodal, as capacidades generativas e o planeamento a longo prazo se traduzem em valor prático para os programadores.

Compreensão multimodal

O Gemini 3 Pro mostra uma versatilidade impressionante em texto, imagens, vídeo e código. No nosso teste, carregámos um vídeo do Zilliz diretamente do YouTube. O modelo processou todo o clipe - incluindo a narração, as transições e o texto no ecrã - em cerca de 40 segundos, um tempo de resposta invulgarmente rápido para conteúdos multimodais de formato longo.

As avaliações internas da Google mostram um comportamento semelhante: O Gemini 3 Pro processou receitas escritas à mão em vários idiomas, transcreveu e traduziu cada uma delas e compilou-as num livro de receitas de família partilhável.

Tarefas de tiro zero

O Gemini 3 Pro pode gerar interfaces de utilizador web totalmente interactivas sem exemplos prévios ou andaimes. Quando lhe foi pedido que criasse um jogo web de naves espaciais 3D retro-futurista, o modelo produziu uma cena interactiva completa: uma grelha roxa néon, naves de estilo cyberpunk, efeitos de partículas brilhantes e controlos de câmara suaves - tudo numa única resposta de zero disparos.

Planeamento de tarefas complexas

O modelo também demonstra um planeamento de tarefas a longo prazo mais forte do que muitos dos seus pares. No nosso teste de organização da caixa de entrada, o Gemini 3 Pro comportou-se como um assistente administrativo com IA: categorizou os e-mails desordenados em grupos de projectos, elaborou sugestões acionáveis (resposta, seguimento, arquivo) e apresentou um resumo limpo e estruturado. Com o plano do modelo definido, toda a caixa de entrada podia ser limpa com um único clique de confirmação.

Como criar um sistema RAG com o Gemini 3 Pro e o Milvus

O raciocínio aprimorado do Gemini 3 Pro, a compreensão multimodal e as fortes capacidades de uso de ferramentas fazem dele uma excelente base para sistemas RAG de alto desempenho.

Quando emparelhado com o Milvus, o banco de dados vetorial de código aberto de alto desempenho criado para pesquisa semântica em larga escala, obtém-se uma divisão clara de responsabilidades: O Gemini 3 Pro lida com a interpretação, o raciocínio e a geração, enquanto o Milvus fornece uma camada de recuperação rápida e escalável que mantém as respostas baseadas nos dados da sua empresa. Esse emparelhamento é adequado para aplicações de nível de produção, como bases de conhecimento internas, assistentes de documentos, copilotos de suporte ao cliente e sistemas especialistas em domínios específicos.

Pré-requisitos

Antes de construir o seu pipeline RAG, certifique-se de que estas bibliotecas Python essenciais estão instaladas ou actualizadas para as suas versões mais recentes:

  • pymilvus - o SDK oficial do Milvus Python

  • google-generativeai - a biblioteca cliente Gemini 3 Pro

  • requests - para lidar com chamadas HTTP quando necessário

  • tqdm - para barras de progresso durante a ingestão de conjuntos de dados

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

Em seguida, inicie sessão no Google AI Studio para obter a sua chave de API.

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

Preparar o conjunto de dados

Para este tutorial, vamos utilizar a secção FAQ da documentação do Milvus 2.4.x como base de conhecimento privada para o nosso sistema RAG.

Baixe o arquivo de documentação e extraia-o para uma pasta chamada 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

Carregue todos os ficheiros Markdown a partir do caminho milvus_docs/en/faq. Para cada documento, aplicamos uma divisão simples com base nos títulos de # para separar aproximadamente as secções principais de cada ficheiro 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("# ")

Configuração do LLM e do modelo de incorporação

Para este tutorial, usaremos gemini-3-pro-preview como o LLM e text-embedding-004 como o modelo de incorporação.

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)

Resposta do modelo: Eu sou o Gemini, um modelo de linguagem grande criado pelo Google.

Pode fazer uma verificação rápida gerando uma incorporação de teste e imprimindo a sua dimensionalidade juntamente com os primeiros 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])

Saída do vetor de teste:

768

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

Carregando dados no Milvus

Criar uma coleção

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

Ao criar uma MilvusClient, pode escolher entre três opções de configuração, dependendo da sua escala e ambiente:

  • Modo Local (Milvus Lite): Definir o URI para um caminho de ficheiro local (por exemplo, ./milvus.db). Esta é a maneira mais fácil de começar - o Milvus Lite armazenará automaticamente todos os dados nesse ficheiro.

  • Milvus auto-hospedado (Docker ou Kubernetes): Para conjuntos de dados maiores ou cargas de trabalho de produção, execute o Milvus no Docker ou Kubernetes. Defina o URI para o ponto de extremidade do seu servidor Milvus, como http://localhost:19530.

  • Zilliz Cloud (o serviço Milvus totalmente gerido): Se preferir uma solução gerida, utilize o Zilliz Cloud. Defina o URI para o seu Public Endpoint e forneça a sua chave API como token de autenticação.

Antes de criar uma nova coleção, verifique primeiro se ela já existe. Se existir, elimine-a e recrie-a para garantir uma configuração limpa.

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

Crie uma nova coleção com os parâmetros especificados.

Se não for fornecido um esquema, o Milvus gera automaticamente um campo de ID predefinido como chave primária e um campo de vetor para armazenar embeddings. Também fornece um campo dinâmico JSON reservado, que captura quaisquer campos adicionais que não estejam definidos no esquema.

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

Inserir dados

Itere através de cada entrada de texto, gere o seu vetor de incorporação e insira os dados no Milvus. Neste exemplo, incluímos um campo extra chamado text. Uma vez que não está pré-definido no esquema, o Milvus armazena-o automaticamente utilizando o campo JSON dinâmico, sem necessidade de qualquer configuração 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)

Exemplo de saída:

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}

Criação do fluxo de trabalho RAG

Recuperar dados relevantes

Para testar a recuperação, fazemos uma pergunta comum sobre o Milvus.

question = "How is data stored in milvus?"

Pesquise a coleção para a consulta e devolva os 3 principais resultados mais 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))

Os resultados são devolvidos por ordem de semelhança, do mais próximo ao menos semelhante.

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

Gerar uma resposta RAG com o LLM

Depois de obter os documentos, converta-os para um formato de cadeia

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

Fornecer ao LLM uma solicitação do sistema e uma solicitação do utilizador, ambas construídas a partir dos documentos obtidos do 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>
"""

Utilize o modelo gemini-3-pro-preview juntamente com estas solicitações para gerar a resposta 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 do resultado, é possível ver que o Gemini 3 Pro produz uma resposta clara e bem estruturada com base nas informações obtidas.

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: O Gemini 3 Pro não está atualmente disponível para utilizadores de nível gratuito. Clique aqui para obter mais detalhes.

Você pode acessá-lo através do 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)

Mais uma coisa: Vibe Coding com o Google Antigravity

Juntamente com o Gemini 3 Pro, o Google apresentou o Google Antigravity, uma plataforma de codificação de vídeo que interage de forma autónoma com o seu editor, terminal e navegador. Ao contrário das anteriores ferramentas assistidas por IA que tratavam de instruções pontuais, o Antigravity funciona a um nível orientado para as tarefas - permitindo aos programadores especificar o que pretendem construir enquanto o sistema gere o como, orquestrando o fluxo de trabalho completo de ponta a ponta.

Os fluxos de trabalho tradicionais de codificação de IA normalmente geravam trechos isolados que os desenvolvedores ainda tinham que revisar, integrar, depurar e executar manualmente. O Antigravity muda essa dinâmica. Pode simplesmente descrever uma tarefa - por exemplo, "Criar um jogo simples de interação com animais de estimação " - e o sistema decompõe o pedido, gera o código, executa comandos de terminal, abre um browser para testar o resultado e repete até funcionar. Isto eleva a IA de um motor de autocompletar passivo para um parceiro de engenharia ativo - que aprende as suas preferências e se adapta ao seu estilo de desenvolvimento pessoal ao longo do tempo.

Olhando para o futuro, a ideia de um agente que se coordena diretamente com uma base de dados não é rebuscada. Com a chamada de ferramentas via MCP, uma IA poderia eventualmente ler a partir de uma base de dados Milvus, montar uma base de conhecimentos e até manter o seu próprio pipeline de recuperação de forma autónoma. Em muitos aspectos, esta mudança é ainda mais significativa do que a própria atualização do modelo: uma vez que uma IA pode pegar numa descrição ao nível do produto e convertê-la numa sequência de tarefas executáveis, o esforço humano passa naturalmente para a definição de objectivos, restrições e o que é a "correção" - o pensamento de nível superior que realmente impulsiona o desenvolvimento do produto.

Pronto para construir?

Se estiver pronto para experimentar, siga o nosso tutorial passo a passo e construa um sistema RAG com o Gemini 3 Pro + Milvus hoje mesmo.

Tem dúvidas ou quer um mergulho profundo em qualquer recurso? Junte-se ao nosso canal Discord ou registe problemas no GitHub. Também pode reservar uma sessão individual de 20 minutos para obter informações, orientação e respostas às suas perguntas através do 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

    Continue Lendo