Cómo mejorar los resultados de la búsqueda

Puedes especificar condiciones de boosting en tu solicitud de búsqueda para promover o degradar ciertos documentos en los resultados de la búsqueda. Cuando un documento cumple con las condiciones especificadas, se le aplican valores de mejora y los resultados se ordenan en consecuencia. También puedes especificar valores numéricos y de marcas de tiempo personalizados que te permitan ordenar los resultados según parámetros como la popularidad y la actualidad.

La especificación de aumento en una solicitud de búsqueda es diferente de un control de aumento que se adjunta a una configuración de entrega. La especificación de refuerzo en el campo boostSpec anula el control de refuerzo definido en el campo boostAction de una configuración de entrega. Para obtener más información sobre los controles de amplificación, consulta Acerca de los controles de amplificación.

En esta página, se describen los siguientes tipos de especificaciones de refuerzo:

Puedes aplicar estas especificaciones de refuerzo a las apps de búsqueda de contenido multimedia y a las apps de búsqueda personalizadas que contienen datos estructurados, no estructurados y de sitios web. Estas especificaciones no se aplican a las apps de búsqueda de atención médica.

Mejora con una condición fija

Para aumentar los resultados en una cantidad fija según si cumplen con una condición, haz lo siguiente:

  1. Especifica la especificación de refuerzo en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
          "condition": "BOOST_CONDITION",
          "boost": BOOST_VALUE
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: Es una expresión de filtro de texto para seleccionar los documentos a los que se aplica el refuerzo. El filtro debe evaluarse como un valor booleano.
    • BOOST_VALUE: un número de punto flotante en el rango [-1,1]. Cuando el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Cuando el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados).

Ejemplo de caso de uso

Supongamos que tu almacén de datos contiene información sobre hoteles y sus calificaciones por estrellas. Quieres potenciar los hoteles con calificaciones de estrellas mayores o iguales a tres. La calificación por estrellas está disponible en el campo numérico star_rating. Puedes especificar condition en boostSpec como star_rating >= 3.0 y un valor de refuerzo de 0.7 para reforzar todos los hoteles con un star_rating de 3.0 o más en la misma cantidad.

{
  "boostSpec": {
    "conditionBoostSpecs": {
      "condition": "star_rating>=3.0",
      "boost": 0.7
    }
  }
}

Potencia el modelo con atributos numéricos personalizados

Puedes potenciar los resultados en función de atributos numéricos personalizados de forma lineal por tramos especificando puntos de control y sus valores de potenciación correspondientes.

Para especificar una especificación de aumento con atributos numéricos personalizados, haz lo siguiente:

  1. Especifica la especificación de refuerzo en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
            "condition": "BOOST_CONDITION",
            "boostControlSpec": {
              "attributeType": "NUMERICAL",
              "interpolationType": "LINEAR",
              "fieldName": "CUSTOM_ATTRIBUTE_FIELD_NAME",
              "controlPoints": [
                {
                  "attributeValue": "CUSTOM_ATTRIBUTE_VALUE_1",
                  "boostAmount": BOOST_AMOUNT_1
                },
                {
                  "attributeValue": "CUSTOM_ATTRIBUTE_VALUE_2",
                  "boostAmount": BOOST_AMOUNT_2
                }
              ]
            }
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: Es una expresión de filtro de texto para seleccionar los documentos a los que se aplica el refuerzo. El filtro debe evaluarse como un valor booleano.
    • CUSTOM_ATTRIBUTE_FIELD_NAME: Es el nombre del campo del atributo numérico personalizado cuyo valor determina el importe del aumento.
    • CUSTOM_ATTRIBUTE_VALUE: Es el valor numérico del atributo personalizado para un punto de control determinado con un tipo de datos de cadena. Por ejemplo, "3.3""12". Para obtener más información, consulta ControlPoint.
    • BOOST_AMOUNT: un número de punto flotante en el rango [-1,1]. Cuando el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Cuando el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados). Indica el importe del aumento asociado al atributo personalizado para un punto de control determinado.

Cuando un documento en el resultado de la búsqueda cumple con la condición especificada, se aplica un importe de refuerzo de la siguiente manera:

Valor de atributo Importe de la potenciación
Menor que el primer punto de control Es igual al importe de la potenciación del primer punto de control.
Igual al punto de control Es igual al importe del aumento asignado.
Entre los puntos de control Se calcula con interpolación lineal.
Mayor que el último punto de control Es igual al importe de refuerzo del último punto de control.

Ejemplo de caso de uso

Supongamos que tu almacén de datos contiene información sobre hoteles y sus calificaciones por estrellas. Quieres potenciar los resultados de la búsqueda de hoteles en proporción a su clasificación por estrellas. Puedes definir la especificación de refuerzo de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": "star_rating >= 3.0",
        "boostControlSpec": {
          "attributeType": "NUMERICAL",
          "interpolationType": "LINEAR",
          "fieldName": "star_rating",
          "controlPoints": [
            {
              "attributeValue": "3.5",
              "boostAmount": 0.25
            },
            {
              "attributeValue": "4.0",
              "boostAmount": 0.30
            },
            {
              "attributeValue": "4.5",
              "boostAmount": 0.32
            }
          ]
        }
    }
  }
}

En este caso, los resultados de la búsqueda se potencian de la siguiente manera:

Calificación por estrellas Importe de la potenciación
menor o igual a 3.5 0.25
entre 3.5 y 4.0 Entre 0.25 y 0.30, calculado con interpolación lineal
igual a 4.0 0.30
entre 4.0 y 4.5 Entre 0.30 y 0.32, calculado con interpolación lineal
mayor o igual a 4.5 0.32

Potenciar según la actualidad

Puedes potenciar los resultados en función de los atributos de fecha y hora de forma lineal por tramos especificando los puntos de control y sus valores de potenciación correspondientes.

Para especificar una especificación de refuerzo con atributos de fecha y hora personalizados, haz lo siguiente:

  1. Especifica la especificación de refuerzo en el campo boostSpec cuando envíes una solicitud servingConfigs.search.

    {
      "boostSpec": {
        "conditionBoostSpecs": {
            "condition": "BOOST_CONDITION",
            "boostControlSpec": {
              "fieldName": "DATETIME_FIELD_NAME",
              "attributeType": "FRESHNESS",
              "interpolationType": "LINEAR",
              "controlPoints": [
                {
                  "attributeValue": "DURATION_VALUE_1",
                  "boostAmount": BOOST_AMOUNT_1
                },
                {
                  "attributeValue": "DURATION_VALUE_2",
                  "boostAmount": BOOST_AMOUNT_2
                }
              ]
            }
        }
      }
    }
    

    La especificación contiene los siguientes parámetros:

    • BOOST_CONDITION: Es una expresión de filtro de texto para seleccionar los documentos a los que se aplica el refuerzo. El filtro debe evaluarse como un valor booleano.
    • DATETIME_FIELD_NAME: Es el nombre del campo de un atributo personalizado DATETIME, como la fecha de publicación o la fecha de la última actualización, o un atributo predefinido inferido por Google, como datePublished.
    • DURATION_VALUE: Es el valor de duración en el tipo de datos dayTimeDuration que determina la actualidad de un documento. Se calcula como la duración entre la fecha y hora en que se realiza la búsqueda y la fecha y hora del atributo de fecha y hora personalizado de un documento. El valor de duración se debe especificar según el formato ISO 8601 en el patrón [nD][T[nH][nM][nS]]. Por ejemplo, la duración entre el 1 de enero de 2024 y el 1 de marzo de 2024 se puede expresar como 59D. Del mismo modo, la duración de dos días y medio se puede expresar como 2DT12H. Para obtener más información, consulta ControlPoint.
    • BOOST_AMOUNT: un número de punto flotante en el rango [-1,1]. Cuando el valor es negativo, los resultados se degradan (aparecen más abajo en los resultados). Cuando el valor es positivo, los resultados se promocionan (aparecen más arriba en los resultados). Indica el importe del aumento asociado al atributo de fecha y hora personalizado para un punto de control determinado.

Cuando un documento en el resultado de la búsqueda cumple con la condición especificada, se aplica un importe de refuerzo de la siguiente manera:

Valor de duración Importe de la potenciación
Menor que el primer punto de control Es igual al importe de la potenciación del primer punto de control.
Igual a un punto de control determinado Es igual al importe del aumento asignado.
Entre los puntos de control Se calcula con interpolación lineal.
Mayor que el último punto de control Es igual al importe de refuerzo del último punto de control.

Ejemplo de caso de uso con un atributo de fecha y hora personalizado

Supongamos que tu almacén de datos contiene datos estructurados en los que cada documento tiene una fecha de publicación. Quieres aumentar la clasificación de los resultados de la búsqueda en proporción a su actualidad. Puedes definir la especificación de refuerzo de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": true,
        "boostControlSpec": {
          "fieldName": "publication_date",
          "attributeType": "FRESHNESS",
          "interpolationType": "LINEAR",
          "controlPoints": [
            {
              "attributeValue": "7D",
              "boostAmount": 0.40
            },
            {
              "attributeValue": "30D",
              "boostAmount": 0.37
            },
            {
              "attributeValue": "60D",
              "boostAmount": 0.32
            },
            {
              "attributeValue": "90D",
              "boostAmount": 0
            }
          ]
        }
    }
  }
}

En este caso, los resultados de la búsqueda se potencian de la siguiente manera:

Actualidad Importe de la potenciación
Menor o igual a 7 días 0.40
entre 7 y 30 días entre 0.40 y 0.37, calculado con interpolación lineal
igual a 30 días 0.37
entre 30 y 60 días entre 0.37 y 0.32, calculado con interpolación lineal
igual a 60 días 0.32
entre 60 y 90 días entre 0.32 y 0.0, calculado con interpolación lineal
mayor o igual a 90 días 0.0

Ejemplo de caso de uso con una fecha de página inferida por Google

Cuando rastrea las páginas web en el almacén de datos de tu sitio web, Google infiere los datos de la página con las propiedades que se aplican a tu contenido. Vertex AI Search agrega estas propiedades de datos de la página inferidas a tu esquema. Estos datos inferidos incluyen las siguientes propiedades de fecha predefinidas:

  • datePublished: La fecha y hora en que se publicó la página por primera vez
  • dateModified: La fecha y hora en la que se modificó la página por última vez

Estas propiedades se indexan automáticamente. Puedes usar directamente estas propiedades de fecha para enriquecer tu búsqueda sin agregarlas a tu esquema. Puedes usar estas propiedades predefinidas para potenciar tu página. Por ejemplo, puedes definir la especificación de refuerzo configurando el campo fieldName en pageModified de la siguiente manera:

{
  "boostSpec": {
    "conditionBoostSpecs": {
        "condition": true,
        "boostControlSpec": {
          "fieldName": "dateModified",
          "attributeType": "FRESHNESS",
          "interpolationType": "LINEAR",
          "controlPoints": [
            {
              "attributeValue": "7D",
              "boostAmount": 0.35
            },
            {
              "attributeValue": "30D",
              "boostAmount": 0.30
            }
          ]
        }
    }
  }
}

Google infiere estas fechas de la mejor manera posible, y es posible que no coincidan con las fechas reales. Estos campos solo se propagan cuando Google tiene un alto nivel de confianza. Cuando faltan estos valores de fecha, estos campos se vuelven anulables.

Como práctica recomendada, Google sugiere que el propietario del dominio o el administrador del sitio web actualicen estas propiedades para tus páginas web y que actualices manualmente tu almacén de datos del sitio web de Vertex AI Search después de la actualización. Para obtener más información, consulta la entrada de blog Ayuda a la Búsqueda de Google a saber cuál es la mejor fecha para tu página web y descubre cómo funcionan los datos estructurados en la Búsqueda de Google.

Para agregar atributos de datos estructurados personalizados y enriquecer tu índice, consulta Cómo agregar atributos de datos estructurados personalizados al esquema del almacén de datos.

Ajuste del importe de la potenciación

Además de los factores que influyen en la clasificación de un resultado, como la concordancia de palabras clave, la concordancia de contexto y la relevancia, la condición de refuerzo afecta significativamente la clasificación de un resultado. Por lo tanto, debes calibrar con cuidado el importe del aumento. Google recomienda que comiences con un importe de aumento bajo y preciso, como 0.1 o menos, y que lo ajustes según los resultados de la búsqueda.

Ejemplo de caso de uso con filtro de relevancia

La regulación de la cantidad de refuerzo es especialmente importante cuando se usa el campo boostSpec con el filtro de relevancia. Para obtener más información sobre el filtro de relevancia, consulta Cómo filtrar búsquedas por relevancia a nivel del documento.

Supongamos que tienes diferentes documentos con diferentes fechas de publicación. Para una búsqueda en particular, la siguiente tabla representa la clasificación absoluta sin implementar ninguna condición de refuerzo ni filtro de relevancia, y muestra la relevancia de los documentos para la búsqueda.

Documento Fecha de publicación Relevancia Clasificación
A 1 de febrero de 2024 Alta N.º 1
B 1 de marzo de 2024 Alta N.º 2
C 1 de abril de 2024 El más bajo #3
D 1 de mayo de 2024 Medio #4
E 1 de junio de 2024 Baja #5

El 6 de junio de 2024, agregas las siguientes condiciones de búsqueda a tu solicitud:

  • El filtro de relevancia se estableció en LOW.
  • Valor de refuerzo tal que los documentos publicados durante los últimos 31 días se refuerzan con un valor de 0.7 y los documentos de más de una semana, pero de menos de 60 días, se refuerzan con un valor de 0.6.

En los resultados de la búsqueda, primero se filtran los resultados por relevancia y, luego, se aplica el importe de la potenciación. Por lo tanto, las condiciones aplicadas alteran la clasificación de las páginas en los resultados de la siguiente manera:

Documento Fecha de publicación Relevancia Clasificación
E 1 de junio de 2024 Baja N.º 1
D 1 de mayo de 2024 Medio N.º 2
A 1 de febrero de 2024 Alta #3
B 1 de marzo de 2024 Alta #4

El resultado con la relevancia más baja se filtra debido al filtro de relevancia. Los documentos que son menos relevantes para una búsqueda se clasifican como los principales resultados porque se les aplica un aumento grande. Los resultados más pertinentes se clasifican en una posición inferior.

Por lo tanto, Google recomienda que comiences con un valor de aumento bajo y preciso, y que lo ajustes según los resultados de la búsqueda. En este ejemplo, comenzar con importes de refuerzo de 0.1 o menos podría recuperar resultados más relevantes en la parte superior.

¿Qué sigue?