Fundamentación con la Búsqueda de Google

En esta página, se explica cómo fundamentar las respuestas de un modelo con la Búsqueda de Google, que usa datos web disponibles públicamente.

Si deseas conectar tu modelo con el conocimiento mundial, una amplia variedad de temas o información actualizada en Internet, usa la Fundamentación con la Búsqueda de Google.

La fundamentación con la Búsqueda de Google admite la recuperación dinámica, que te brinda la opción de generar respuestas fundamentadas con la Búsqueda de Google. Por lo tanto, la configuración de recuperación dinámica evalúa si una instrucción requiere conocimiento sobre eventos recientes y habilita la vinculación con la Búsqueda de Google. Para obtener más información, consulta Recuperación dinámica.

Para obtener más información sobre los fundamentos de modelos en Vertex AI, consulta la descripción general de Grounding.

Modelos compatibles

En esta sección, se enumeran los modelos que admiten la fundamentación con la Búsqueda. Para explorar cómo cada modelo genera respuestas fundamentadas, sigue estas instrucciones:

  1. Prueba un modelo que aparezca en esta tabla en la consola de Google Cloud.

  2. Haz clic en el botón de activación Fundamentación para llevarlo a la posición activada.

Modelo Descripción Cómo probar un modelo
Gemini 1.5 Pro
Solo entrada de texto Prueba el modelo Gemini 1.5 Pro
Gemini 1.5 Flash
Solo entrada de texto Prueba el modelo Gemini 1.5 Flash
Gemini 1.0 Pro
Solo entrada de texto Prueba el modelo Gemini 1.0 Pro
Gemini 2.0 Flash

Texto, código, imágenes, audio, video, video con audio, PDF

No admite la recuperación dinámica. Para obtener más información, consulta Consideraciones.

Prueba el modelo Gemini 2.0 Flash

Idiomas compatibles

Para obtener una lista de los idiomas admitidos, consulta Idiomas.

Usa las siguientes instrucciones para fundamentar un modelo con datos web disponibles públicamente.

Recuperación dinámica

Puedes usar la recuperación dinámica en tu solicitud para elegir cuándo desactivar la fundamentación con la Búsqueda de Google. Esto es útil cuando la instrucción no requiere una respuesta basada en la Búsqueda de Google y los modelos compatibles pueden proporcionar una respuesta basada en su conocimiento sin fundamentación. Esto te ayuda a administrar la latencia, la calidad y el costo de manera más eficaz.

Antes de invocar la configuración de recuperación dinámica en tu solicitud, ten en cuenta la siguiente terminología:

  • Puntuación de predicción: Cuando solicitas una respuesta fundamentada, Vertex AI asigna una puntuación de predicción a la instrucción. La puntuación de la predicción es un valor de punto flotante en el rango [0,1]. Su valor depende de si la instrucción puede beneficiarse de fundamentar la respuesta con la información más actualizada de la Búsqueda de Google. Por lo tanto, una instrucción que requiere una respuesta basada en los hechos más recientes de la Web tiene una puntuación de predicción más alta. Una instrucción para la que una respuesta generada por un modelo es suficiente tiene una puntuación de predicción más baja.

    Estos son ejemplos de algunas instrucciones y sus puntuaciones de predicción.

    Instrucción Puntuación de predicción Comentario
    "Escribe un poema sobre las peonías" 0.13 El modelo puede basarse en su conocimiento y la respuesta no necesita fundamentación.
    "Sugiere un juguete para un niño de 2 años" 0.36 El modelo puede basarse en su conocimiento y la respuesta no necesita fundamentación.
    "¿Puedes darme la receta de un guacamole inspirado en la cocina asiática?" 0.55 La Búsqueda de Google puede dar una respuesta fundamentada, pero no es estrictamente necesaria la fundamentación; el conocimiento del modelo podría ser suficiente.
    "¿Qué es Agent Builder? "¿Cómo se factura la conexión a tierra en Agent Builder?" 0.72 Requiere que la Búsqueda de Google genere una respuesta fundamentada
    "¿Quién ganó el último Gran Premio de Fórmula 1?" 0.97 Requiere que la Búsqueda de Google genere una respuesta fundamentada
  • Umbral: En tu solicitud, puedes especificar una configuración de recuperación dinámica con un umbral. El umbral es un valor de punto flotante en el rango [0,1] y su valor predeterminado es 0.7. Si el valor del umbral es cero, la respuesta siempre se fundamenta con la Búsqueda de Google. Para todos los demás valores del umbral, se aplica lo siguiente:

    • Si la puntuación de predicción es mayor o igual que el umbral, la respuesta se basa en la Búsqueda de Google. Un umbral más bajo implica que más instrucciones tienen respuestas que se generan con la fundamentación en la Búsqueda de Google.
    • Si la puntuación de la predicción es inferior al umbral, es posible que el modelo genere la respuesta, pero no se basa en la Búsqueda de Google.

Para encontrar un buen umbral que se adapte a las necesidades de tu empresa, puedes crear un conjunto representativo de las búsquedas que esperas encontrar. Luego, puedes ordenar las consultas según la puntuación de predicción en la respuesta y seleccionar un buen umbral para tu caso de uso.

Consideraciones

  • Para usar la fundamentación con la Búsqueda de Google, debes habilitar las sugerencias de la Búsqueda de Google. Obtén más información en Sugerencias de la Búsqueda de Google.

  • Para obtener resultados ideales, usa una temperatura de 0.0. Para obtener más información sobre cómo establecer esta configuración, consulta el cuerpo de la solicitud a la API de Gemini de la referencia del modelo.

  • La verificación de la conexión a tierra con la Búsqueda de Google tiene un límite de un millón de consultas por día. Si necesitas realizar más consultas, comunícate con el equipo de asistencia deGoogle Cloud para obtener ayuda.

  • Solo los modelos Gemini 1.0 y Gemini 1.5 admiten la recuperación dinámica. Los modelos de Gemini 2.0 no admiten la recuperación dinámica.

Console

Para usar Grounding with Google Search con Vertex AI Studio, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Generative AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en la pestaña Freeform.
  3. En el panel lateral, haz clic en el botón de activación Fundamentar las respuestas del modelo.
  4. Haz clic en Personalizar y establece la Búsqueda de Google como la fuente.
  5. Ingresa el mensaje en el cuadro de texto y haz clic en Enviar.

Tus respuestas a las instrucciones ahora se basan en la Búsqueda de Google.

Node.js

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Es la región para procesar la solicitud.

  • PROJECT_ID: Es el ID de tu proyecto.

  • MODEL_ID: El ID del modelo multimodal. Solo los modelos Gemini 1.0 y Gemini 1.5 admiten la recuperación dinámica. Los modelos de Gemini 2.0 no admiten la recuperación dinámica.

  • TEXT: Las instrucciones de texto que se incluirán en el mensaje.

  • DYNAMIC_THRESHOLD: Es un campo opcional para establecer el umbral que invoca la configuración de recuperación dinámica. Es un valor de punto flotante en el rango [0,1]. Si no estableces el campo dynamicThreshold, el valor del umbral se establece de forma predeterminada en 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 de Vertex AI para Python

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: La región para procesar la solicitud.
  • PROJECT_ID: El ID del proyecto.
  • MODEL_ID: El ID del modelo multimodal. Solo los modelos Gemini 1.0 y Gemini 1.5 admiten la recuperación dinámica. Los modelos de Gemini 2.0 no admiten la recuperación dinámica.
  • TEXT: Las instrucciones de texto que se incluirán en el mensaje.
  • DYNAMIC_THRESHOLD: Es un campo opcional para establecer el umbral para invocar la configuración de recuperación dinámica. Es un valor de punto flotante en el rango [0,1]. Si no estableces el campo dynamicThreshold, el valor del umbral predeterminado es 0.7.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
   "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": { "..."
   }
 }

Comprende tu respuesta

Si la instrucción de tu modelo se fundamenta correctamente en la Búsqueda de Google desde Vertex AI Studio o desde la API, las respuestas incluirán metadatos con vínculos de origen (URLs web). Sin embargo, existen varios motivos por los que es posible que no se proporcionen estos metadatos, y la respuesta a la instrucción no se basará en ellos. Entre estos motivos, se incluyen la baja relevancia de la fuente o la información incompleta en la respuesta del modelo.

Citas

Se recomienda mostrar citas. Ayudan a los usuarios a validar las respuestas de los propios editores y agregan vías para obtener más información.

Las citas de las respuestas de las fuentes de la Búsqueda de Google deben mostrarse intercaladas y de manera no individualizada. Consulta la siguiente imagen como sugerencia para hacerlo.

Ejemplos de citas

Uso de opciones de motores de búsqueda alternativos

El uso de la vinculación con la Búsqueda de Google por parte del Cliente no le impide ofrecer opciones alternativas de motor de búsqueda, establecerlas como la opción predeterminada para las Aplicaciones del Cliente o mostrar sus propias sugerencias de búsqueda o resultados de búsqueda de terceros en las Aplicaciones del Cliente, siempre que dichos servicios o resultados asociados que no sean de la Búsqueda de Google se muestren por separado de los Resultados Vinculados y las Sugerencias de Búsqueda, y no se puedan atribuir de manera razonable a Google ni confundirse con los resultados que proporciona Google.

¿Qué sigue?