提升搜索结果

您可以在搜索请求中指定升位条件,以提升或降级搜索结果中的某些文档。当文档满足指定条件时,系统会向其应用提升值,并相应地对结果进行排序。您还可以指定自定义数值和时间戳值,以便根据热度和新鲜度等参数对结果进行排序。

搜索请求中的升位规范与附加到服务配置的升位控制不同。boostSpec 字段中的提升规范会替换服务配置的 boostAction 字段中定义的提升控制。如需详细了解提升控制,请参阅提升控制简介

本页介绍了以下类型的加权规范:

您可以将这些加权规范应用于包含结构化数据、非结构化数据和网站数据的查询媒体搜索应用和自定义搜索应用。这些规范不适用于医疗保健搜索应用。

使用固定条件进行提升

如需根据结果是否满足条件按固定量提升结果,请执行以下操作:

  1. 发送 servingConfigs.search 请求时,在 boostSpec 字段中指定提升规范。

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

    规范包含以下参数:

    • BOOST_CONDITION:用于选择应用加权的文档的文本过滤表达式。过滤条件必须解析为布尔值。
    • BOOST_VALUE:[-1,1] 范围内的浮点数。如果该值为负值,则结果会被降级(显示在结果中更靠下的位置)。如果值为正,则结果会得到提升(显示在结果中更靠上的位置)。

用例示例

假设您的数据存储区包含有关酒店及其星级的数据。您希望提高星级评分大于或等于 3 的酒店的曝光度。星级可在 star_rating 数字字段中找到。您可以在 boostSpec 中将 condition 指定为 star_rating >= 3.0,并将提升值指定为 0.7,以同等程度提升所有 star_rating 为 3.0 或更高的酒店。

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

使用自定义数值属性进行提升

您可以指定控制点及其对应的提升值,以分段线性方式根据自定义数值属性提升结果。

如需使用自定义数值属性指定加权规范,请执行以下操作:

  1. 发送 servingConfigs.search 请求时,在 boostSpec 字段中指定提升规范。

    {
      "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
                }
              ]
            }
        }
      }
    }
    

    规范包含以下参数:

    • BOOST_CONDITION:用于选择应用加权的文档的文本过滤表达式。过滤条件必须解析为布尔值。
    • CUSTOM_ATTRIBUTE_FIELD_NAME:自定义数值属性的字段名称,该属性的值决定了提升幅度。
    • CUSTOM_ATTRIBUTE_VALUE:具有字符串数据类型的给定控制点的自定义属性的数值。例如 "3.3""12"。如需了解详情,请参阅 ControlPoint
    • BOOST_AMOUNT:[-1,1] 范围内的浮点数。如果该值为负值,则结果会被降级(显示在结果中更靠下的位置)。如果值为正,则结果会得到提升(显示在结果中更靠上的位置)。 表示映射到给定控制点的自定义属性的加推量。

当搜索结果中的文档满足指定条件时,系统会应用以下提升量:

特性值 提升金额
小于第一个控制点 等于第一个控制点的升幅
等于控制点 等于映射的加推金额
控制点之间 通过线性插值计算得出
大于最后一个控制点 等于最后一个控制点的升幅

用例示例

假设您的数据存储区包含有关酒店及其星级的数据。您希望按星级比例提升酒店搜索结果。您可以按如下方式定义加权规范:

{
  "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
            }
          ]
        }
    }
  }
}

在此场景中,搜索结果的提升效果如下:

星级 提升金额
小于或等于 3.5 0.25
介于 3.5 和 4.0 之间 介于 0.25 和 0.30 之间,使用线性插值法计算得出
等于 4.0 0.30
介于 4.0 和 4.5 之间 介于 0.30 和 0.32 之间,使用线性插值法计算得出
大于或等于 4.5 0.32

根据新鲜度提高出价

您可以通过指定控制点及其对应的提升值,以分段线性方式提升基于日期时间属性的结果。

如需使用自定义日期时间属性指定加权规范,请执行以下操作:

  1. 发送 servingConfigs.search 请求时,在 boostSpec 字段中指定提升规范。

    {
      "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
                }
              ]
            }
        }
      }
    }
    

    规范包含以下参数:

    • BOOST_CONDITION:用于选择应用加权的文档的文本过滤表达式。过滤条件必须解析为布尔值。
    • DATETIME_FIELD_NAME:自定义 DATETIME 属性的字段名称,例如发布日期或上次更新日期,或者预定义的 Google 推断属性,例如 datePublished
    • DURATION_VALUE:以 dayTimeDuration 数据类型表示的时长值,用于确定文档的新鲜度。此值是指执行搜索时的日期时间与文档的自定义日期时间属性的日期时间之间的时长。时长值必须按照 ISO 8601 格式以 [nD][T[nH][nM][nS]] 模式指定。例如,2024 年 1 月 1 日至 2024 年 3 月 1 日之间的时长可以表示为 59D。同样,两天半的时长可以表示为 2DT12H。如需了解详情,请参阅 ControlPoint
    • BOOST_AMOUNT:[-1,1] 范围内的浮点数。如果该值为负值,则结果会被降级(显示在结果中更靠下的位置)。如果值为正,则结果会得到提升(显示在结果中更靠上的位置)。 表示与给定控制点的自定义日期时间属性对应的提升幅度。

当搜索结果中的文档满足指定条件时,系统会应用以下提升量:

时长值 提升金额
小于第一个控制点 等于第一个控制点的升幅
等于给定的控制点 等于映射的加推金额
控制点之间 通过线性插值计算得出
大于最后一个控制点 等于最后一个控制点的升幅

使用自定义日期时间属性的示例用例

假设您的数据存储区包含结构化数据,其中每个文档都有发布日期。您希望按新鲜度比例提升搜索结果。您可以按如下方式定义加权规范:

{
  "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
            }
          ]
        }
    }
  }
}

在此场景中,搜索结果的提升效果如下:

时效性 提升金额
小于或等于 7 天 0.40
7 至 30 天 介于 0.40 和 0.37 之间,使用线性插值法计算得出
等于 30 天 0.37
30 至 60 天 介于 0.37 和 0.32 之间,使用线性插值法计算得出
等于 60 天 0.32
60 至 90 天 介于 0.32 和 0.0 之间,使用线性插值法计算得出
大于或等于 90 天 0.0

使用 Google 推断的网页日期的示例用例

在抓取网站数据存储区中的网页时,Google 会使用适用于您内容的属性来推断网页数据。Vertex AI Search 会将这些推断出的网页数据属性添加到您的架构中。此类推断数据包括以下预定义日期属性:

  • datePublished:网页的首次发布日期和时间
  • dateModified:网页最近一次修改的日期和时间

系统会自动为这些属性编制索引。您可以直接使用这些日期属性来丰富搜索,而无需将它们添加到架构中。您可以使用这些预定义属性来提升网页。例如,您可以通过将 fieldName 字段设置为 pageModified 来定义提升规范,如下所示:

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

Google 会尽力推断这些日期,但推断出的日期可能与实际日期不符。只有在 Google 具有较高可信度时,系统才会填充这些字段。如果缺少这些日期值,这些字段将变为可为 null。

作为最佳实践,Google 建议您的网域所有者或网站管理员为您的网页更新这些属性,并在更新后手动刷新 Vertex AI Search 网站数据存储区。如需了解详情,请参阅帮助 Google 搜索确定您网页的最准确日期这篇博文,并了解结构化数据在 Google 搜索中的运作方式

如需添加自定义结构化数据属性以丰富您的索引,请参阅向数据存储区架构添加自定义结构化数据属性

提升金额调整

除了影响结果排名的因素(例如关键字匹配、上下文匹配和相关性)之外,提升条件也会对结果排名产生重大影响。因此,您必须仔细校准升压量。Google 建议您先设置较低且精确的加推金额(例如 0.1 或更低),然后根据搜索结果进行调整。

使用相关性过滤器的示例用例

当将 boostSpec 字段与相关性过滤条件搭配使用时,调节提升量尤为重要。如需详细了解相关性过滤条件,请参阅按文档级相关性过滤搜索结果

假设您有发布日期不同的多份文档。对于特定查询,下表表示在未实现任何提升条件或相关性过滤条件的情况下,文档的绝对排名以及文档与查询的相关性。

文档 发布日期 相关性 排名
A 2024 年 2 月 1 日 #1
B 2024 年 3 月 1 日 #2
C 2024 年 4 月 1 日 最低 #3
D 2024 年 5 月 1 日 #4
E 2024 年 6 月 1 日 #5

2024 年 6 月 6 日,您在搜索请求中添加了以下搜索条件:

  • 相关性过滤条件已设置为 LOW
  • 提升值,使得过去 31 天内发布的文档的提升值为 0.7,而发布时间超过一周但不到 60 天的文档的提升值为 0.6。

在搜索输出中,系统会先按相关性过滤结果,然后再应用提升量。因此,应用条件会以以下方式改变结果中网页的排名:

文档 发布日期 相关性 排名
E 2024 年 6 月 1 日 #1
D 2024 年 5 月 1 日 #2
A 2024 年 2 月 1 日 #3
B 2024 年 3 月 1 日 #4

由于相关性过滤条件,相关性最低的结果会被过滤掉。 与查询的相关性较低的文档被评为热门结果,因为它们获得了较高的提升值。相关度越高的结果排名越低。

因此,Google 建议您从较低的精确值开始设置提升量,然后根据搜索输出调整该值。在此示例中,从 0.1 或更低的提升量开始,可能会在顶部获得更相关的结果。

后续步骤

  • 发出搜索请求,并在 boostSpec 字段中添加升位规范。
  • 如需了解提升对自定义搜索应用的搜索质量有何影响,请评估搜索质量。如需了解详情,请参阅评估搜索质量