Basear com a Pesquisa Google

Esta página explica como embasar as respostas de um modelo usando a Pesquisa Google, que usa dados da Web disponíveis publicamente.

Se você quiser conectar seu modelo ao conhecimento mundial, a uma ampla variedade de tópicos possíveis ou a informações atualizadas na Internet, use o Embasamento com a Pesquisa Google.

A integração com a Pesquisa Google oferece suporte à recuperação dinâmica, que permite gerar respostas com embasamento na pesquisa. Portanto, a configuração de recuperação dinâmica avalia se um comando exige conhecimento sobre eventos recentes e ativa a integração com a Pesquisa Google. Para mais informações, consulte Recuperação dinâmica.

Para saber mais sobre o embasamento de modelo na Vertex AI, consulte a Visão geral de embasamento.

Modelos compatíveis

Esta seção lista os modelos que oferecem suporte ao embasamento com a Pesquisa. Para saber como cada modelo gera respostas com base em dados, siga estas instruções:

  1. Teste um modelo listado nesta tabela no console do Google Cloud.

  2. Clique no botão Embassamento para ativar esse recurso.

Modelo Descrição Testar um modelo
Gemini 1.5 Pro
Somente entrada de texto Testar o modelo Gemini 1.5 Pro
Gemini 1.5 Flash
Somente entrada de texto Testar o modelo Flash do Gemini 1.5
Gemini 1.0 Pro
Somente entrada de texto Testar o modelo Gemini 1.0 Pro
Flash 2.0 do Gemini

Texto, código, imagens, áudio, vídeo, vídeo com áudio, PDF

Não oferece suporte à recuperação dinâmica. Para mais informações, consulte Considerações.

Teste o modelo Gemini 2.0 Flash

Idiomas disponíveis

Para conferir a lista de idiomas compatíveis, consulte Idiomas.

Use as instruções a seguir para embasar um modelo com dados da Web disponíveis publicamente.

Recuperação dinâmica

Você pode usar a recuperação dinâmica na sua solicitação para escolher quando desativar o embasamento com a Pesquisa Google. Isso é útil quando o comando não exige uma resposta com embasamento na Pesquisa Google e os modelos compatíveis podem fornecer uma resposta com base no conhecimento sem embasamento. Isso ajuda a gerenciar a latência, a qualidade e o custo com mais eficiência.

Antes de invocar a configuração de recuperação dinâmica na solicitação, entenda a seguinte terminologia:

  • Pontuação da previsão: quando você solicita uma resposta com embasamento, a Vertex AI atribui uma pontuação de previsão ao comando. A pontuação de previsão é um valor de ponto flutuante no intervalo [0,1]. O valor depende se a instrução pode se beneficiar ao basear a resposta com as informações mais atualizadas da Pesquisa Google. Portanto, uma instrução que exige uma resposta com base nos fatos mais recentes da Web tem uma pontuação de previsão mais alta. Um comando para o qual uma resposta gerada pelo modelo é suficiente tem uma pontuação de previsão mais baixa.

    Confira exemplos de algumas solicitações e as notas de previsão delas.

    Comando Pontuação de previsão Comentário
    "Escreva um poema sobre peônias" 0,13 O modelo pode confiar no próprio conhecimento, e a resposta não precisa de embasamento.
    "Sugira um brinquedo para uma criança de 2 anos" 0.36 O modelo pode confiar no próprio conhecimento, e a resposta não precisa de embasamento.
    "Você pode dar uma receita de guacamole de inspiração asiática?" 0,55 A Pesquisa Google pode dar uma resposta com embasamento, mas o embasamento não é estritamente necessário. O conhecimento do modelo pode ser suficiente
    "O que é o Agent Builder? Como o embasamento é cobrado no Agent Builder?" 0,72 Requer que a Pesquisa Google gere uma resposta com bom embasamento
    "Quem ganhou o último Grande Prêmio de F1?" 0.97 Requer que a Pesquisa Google gere uma resposta com bom embasamento
  • Limite: na solicitação, é possível especificar uma configuração de recuperação dinâmica com um limite. O limite é um valor de ponto flutuante no intervalo [0,1] e tem o valor padrão 0,7. Se o valor de limite for zero, a resposta será sempre com embasamento com a Pesquisa Google. Para todos os outros valores de limite, o seguinte é aplicável:

    • Se a pontuação da previsão for maior ou igual ao limite, a resposta será baseada na Pesquisa Google. Um limite mais baixo implica que mais comandos têm respostas geradas usando o Embasamento com a Pesquisa Google.
    • Se a pontuação da previsão for menor que o limite, o modelo ainda poderá gerar a resposta, mas ela não será baseada na Pesquisa Google.

Para encontrar um bom limite que atenda às necessidades da sua empresa, crie um conjunto representativo de consultas que você espera encontrar. Em seguida, você pode classificar as consultas de acordo com a pontuação de previsão na resposta e selecionar um limite adequado para seu caso de uso.

Considerações

  • Para usar o embasamento com a Pesquisa Google, ative as Sugestões de pesquisa. Saiba mais em Sugestões da Pesquisa Google.

  • Para resultados ideais, use uma temperatura de 0.0. Para saber mais sobre como definir essa configuração, consulte o Corpo da solicitação da API Gemini na referência do modelo.

  • O embasamento na Pesquisa Google tem um limite de um milhão de consultas por dia. Se você precisar de mais consultas, entre em contato com o Google Cloud suporte para receber ajuda.

  • Somente os modelos Gemini 1.0 e Gemini 1.5 oferecem suporte à recuperação dinâmica. Os modelos Gemini 2.0 não oferecem suporte à recuperação dinâmica.

Console

Para usar o Embasamento com a Pesquisa Google no Vertex AI Studio, siga estas etapas:

  1. No console do Google Cloud, acesse a página Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Clique na guia Formato livre.
  3. No painel lateral, clique no botão Embasar respostas do modelo.
  4. Clique em Personalizar e defina a Pesquisa Google como a origem.
  5. Insira o comando na caixa de texto e clique em Enviar.

Agora, suas respostas aos comandos serão embasadas com a Pesquisa Google.

Node.js

Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • LOCATION: a região para processar a solicitação.

  • PROJECT_ID: o ID do projeto.

  • MODEL_ID: o ID do modelo multimodal. Somente os modelos Gemini 1.0 e Gemini 1.5 oferecem suporte à recuperação dinâmica. Os modelos Gemini 2.0 não oferecem suporte à recuperação dinâmica.

  • TEXT: as instruções de texto a serem incluídas no comando.

  • DYNAMIC_THRESHOLD: um campo opcional para definir o limite para invocar a configuração de recuperação dinâmica. É um valor de ponto flutuante no intervalo [0,1]. Se você não definir o campo dynamicThreshold, o valor de limite será 0.7.

  const {VertexAI} = require('@google-cloud/vertexai');

  // Initialize Vertex with your Cloud project and location
  const vertex_ai = new VertexAI({project: PROJECT_ID, location: LOCATION});
  const model = MODEL_ID;

  // Instantiate the models
  const generativeModel = vertex_ai.preview.getGenerativeModel({
    model: model,
    generationConfig: {
      'maxOutputTokens': 8192,
      'temperature': 1,
      'topP': 0.95,
    },
    safetySettings: [
      {
        'category': 'HARM_CATEGORY_HATE_SPEECH',
        'threshold': 'OFF',
      },
      {
        'category': 'HARM_CATEGORY_DANGEROUS_CONTENT',
        'threshold': 'OFF',
      },
      {
        'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT',
        'threshold': 'OFF',
      },
      {
        'category': 'HARM_CATEGORY_HARASSMENT',
        'threshold': 'OFF',
      }
    ],
    tools: [
      {
        googleSearchRetrieval: {
          dynamicRetrievalConfig: {
              mode: "MODE_DYNAMIC",
              dynamicThreshold: DYNAMIC_THRESHOLD
          }
        },
      },
    ],
  });

  async function generateContent() {
    const req = {
      contents: [
        {role: 'user', parts: [{text: `TEXT`}]}
      ],
    };

    const streamingResp = await generativeModel.generateContentStream(req);

    for await (const item of streamingResp.stream) {
      process.stdout.write('stream chunk: ' + JSON.stringify(item) + '\n');
    }

    process.stdout.write('aggregated response: ' + JSON.stringify(await streamingResp.response));
  }

  generateContent();

SDK da Vertex AI para Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.

import vertexai

from vertexai.generative_models import (
    GenerationConfig,
    GenerativeModel,
    Tool,
    grounding,
)

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-001")

# Use Google Search for grounding
tool = Tool.from_google_search_retrieval(
    grounding.GoogleSearchRetrieval(
        # Optional: For Dynamic Retrieval
        dynamic_retrieval_config=grounding.DynamicRetrievalConfig(
            dynamic_threshold=0.7,
        )
    )
)

prompt = "When is the next total solar eclipse in US?"
response = model.generate_content(
    prompt,
    tools=[tool],
    generation_config=GenerationConfig(
        temperature=0.0,
    ),
)

print(response.text)
# Example response:
# The next total solar eclipse visible from the contiguous United States will be on **August 23, 2044**.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION: a região para processar a solicitação.
  • PROJECT_ID: o ID do projeto.
  • MODEL_ID: o ID do modelo multimodal. Somente os modelos Gemini 1.0 e Gemini 1.5 oferecem suporte à recuperação dinâmica. Os modelos do Gemini 2.0 não oferecem suporte à recuperação dinâmica.
  • TEXT: as instruções de texto a serem incluídas no comando.
  • DYNAMIC_THRESHOLD: um campo opcional para definir o limite para invocar a configuração de recuperação dinâmica. É um valor de ponto flutuante no intervalo [0,1]. Se você não definir o campo dynamicThreshold, o valor de limite será 0,7.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent

Corpo JSON da solicitação:

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "googleSearchRetrieval": {
      "dynamicRetrievalConfig": {
        "mode": "MODE_DYNAMIC",
        "dynamicThreshold": DYNAMIC_THRESHOLD
      }
    }
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
   "candidates": [
     {
       "content": {
         "role": "model",
         "parts": [
           {
             "text": "Chicago weather changes rapidly, so layers let you adjust easily. Consider a base layer, a warm mid-layer (sweater-fleece), and a weatherproof outer layer."
           }
         ]
       },
       "finishReason": "STOP",
       "safetyRatings":[
       "..."
    ],
       "groundingMetadata": {
         "webSearchQueries": [
           "What's the weather in Chicago this weekend?"
         ],
         "searchEntryPoint": {
            "renderedContent": "....................."
         }
         "groundingSupports": [
            {
              "segment": {
                "startIndex": 0,
                "endIndex": 65,
                "text": "Chicago weather changes rapidly, so layers let you adjust easily."
              },
              "groundingChunkIndices": [
                0
              ],
              "confidenceScores": [
                0.99
              ]
            },
          ]
          "retrievalMetadata": {
              "webDynamicRetrievalScore": 0.96879
            }
       }
     }
   ],
   "usageMetadata": { "..."
   }
 }

Entender a resposta

Se o comando do modelo embasar corretamente com a Pesquisa Google pelo Vertex AI Studio ou pela API, as respostas vão incluir metadados com links de origem (URLs da Web). No entanto, há vários motivos para esses metadados não serem fornecidos e a resposta ao comando não ser embasada. Esses motivos incluem baixa relevância de fonte ou informações incompletas na resposta do modelo.

Citações

É altamente recomendável exibir citações. Elas ajudam os usuários a validarem as respostas dos próprios editores e oferecem caminhos para mais aprendizado.

As citações das respostas nas fontes da Pesquisa Google precisam ser exibidas inline e de forma agregada. Confira a imagem abaixo como uma sugestão de como fazer isso.

Exemplos de citação

Uso de opções alternativas de mecanismo de pesquisa

O uso da integração com a Pesquisa do Google pelo cliente não impede que ele ofereça opções de mecanismo de pesquisa alternativas, tornando as opções de pesquisa alternativas a opção padrão para os aplicativos do cliente ou exibindo as próprias sugestões de pesquisa ou resultados de pesquisa de terceiros nos aplicativos do cliente, desde que esses serviços que não são do Google ou resultados associados sejam exibidos separadamente dos resultados e sugestões de pesquisa e não possam ser atribuídos ou confundidos com resultados fornecidos pelo Google.

A seguir