根据自然语言理解进行过滤

本页面介绍了如何将自然语言理解应用于 对搜索查询进行过滤,从而提高搜索查询质量 返回的结果。

您可以将此功能用于与结构化数据相关联的搜索应用 商店。

关于自然语言查询理解

如果您有一个包含结构化数据的通用搜索应用,则可以将用户的自然语言查询重新格式化为过滤查询。这会带来比搜索字词更好的搜索结果 。

与编写自己的过滤表达式相比,使用自然语言查询理解功能更简单、更灵活。如需了解如何编写过滤表达式,请参阅过滤结构化或非结构化数据的通用搜索

最好通过示例来解释此功能:

示例:从查询中提取字段

下面通过搜索酒店的示例来介绍此自然语言查询理解功能。

对酒店网站的结构化数据存储区进行以下查询: “帮我查找至少四星级、价格更便宜、适合家庭入住的酒店 允许我带狗狗,并提供免费 Wi-Fi。”

如果无法理解自然语言查询,搜索应用会查找包含相应字词的文档 。

借助自然语言查询理解和适当结构化的数据,系统可以将查询中的部分自然语言替换为过滤条件,从而提高搜索效率。如果结构化数据包含 star_rating(数字)、price(数字)和 amenities(字符串)字段,则可以将查询重写为以下过滤器和一个残留查询:

  • 从自然语言查询中提取的过滤条件:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • 残差查询,在提取过滤条件后重组:

    family-friendly

示例:使用地理位置过滤器

此示例与前一个示例类似,只不过它包含一个 geolocation 过滤条件,这是一种提取的特殊过滤条件。 Vertex AI Search 能够识别查询中的位置, 为地理位置创建邻近区域过滤器。

假设用户向某个州级商家网站发出以下查询:“帮我找一家位于旧金山、至少 4 星级且别致时尚的酒店。”

通过自然语言查询的理解和地理位置过滤器,将搜索重写为 过滤器和剩余查询:

  • 从自然语言查询中提取的过滤条件(至少 4 星) 评分并在旧金山 10 公里半径范围内:

    {
        "star_rating": ≥4,
        "location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
    }
    

    在此示例中,GEO_DISTANCE 是地址,但在其他查询中,它可能写为经纬度,即使原始查询包含地址也是如此。

  • 在提取过滤条件后重新制定的残留查询:

    chic and stylish in San Francisco

    尽管提供了地理定位过滤器,但地点名称仍保留在 残差查询。这与其他过滤条件(例如 star_rating)不同。

限制

自然语言查询理解功能存在以下限制:

  • 自然语言查询理解功能无法应用于混合搜索应用。您 如果您尝试将自然语言查询理解与混合搜索应用结合使用,则会收到错误消息。

  • 自然语言查询理解适用于使用结构化数据的任何通用搜索应用。不过,Google 不建议将此功能与以下类型的结构化数据搭配使用:

    • 包含元数据的非结构化数据
    • 包含结构化数据的网站数据

    将此功能应用于这些类型时不太可能产生良好的结果 因为此类数据通常不包含内容, 而是包含有关内容性质的信息。

  • 使用自然语言查询理解功能会增加延迟时间,因此您可能会选择不使用该功能 确定是否有延迟问题

  • 对于地理定位,必须明确描述位置。您 无法使用“我附近”等位置信息或“家”的位置。

  • 地理定位的半径为 10 公里,不可配置。

准备工作

在开始使用自然语言查询理解功能之前,您必须为与您计划使用的应用关联的数据存储区启用该功能。

如需启用自然语言查询的理解功能,请按以下步骤操作:

REST

  1. 找到您的数据存储区 ID。如果您已经有数据存储区 ID,请跳至下一步。

    1. 在 Google Cloud 控制台中,前往 Agent Builder 页面,然后 在导航菜单中,点击 Data Stores

      前往“数据存储区”页面

    2. 点击您的数据存储区的名称。

    3. 在数据存储区的数据页面上,获取数据存储区 ID。

  2. 运行以下 curl 命令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \
    -d '{
          "naturalLanguageQueryUnderstandingConfig": {
            "mode": "ENABLED"
          }
        }'
    
    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • DATA_STORE_ID:Vertex AI Search 数据存储区的 ID。
  3. 对每个数据存储区重复执行第 1 步和第 2 步。

  4. 等待大约 24 小时。

    如果您在数据存储区准备就绪之前尝试使用自然语言查询理解功能,则响应 您得到的结果与将 filterExtractionCondition 设置为 DISABLED 时得到的结果相同。

搜索,将自然语言查询转换为过滤器

如需使用自然语言查询进行搜索并获取针对自然语言查询进行了优化的结果,请执行以下操作:

REST

  1. 运行以下 curl 命令,该命令会调用 search 方法:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
          }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • APP_ID:您在创建 Vertex AI Search 应用时 查询。该应用必须 关联包含结构化数据或元数据的数据存储区。通过 应用不能是 混合搜索应用。
    • QUERY:查询以自然语言编写 语言。

搜索,将查询中的地理位置转换为地理位置过滤器

使用自然语言来搜索查询查询,并获取针对 自然语言查询(包括与位置的邻近性),请执行以下操作:

REST

  1. 运行以下 curl 命令,该命令会调用 search 方法:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED",
              "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]"
            }
          }'
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • APP_ID:您在创建 Vertex AI Search 应用时 查询。该应用必须 关联包含结构化数据或元数据的数据存储区。通过 应用不能是 混合搜索应用。
    • QUERY:查询以自然语言编写 语言。
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N:一个列表 类型为 geolocation 的值。如果值类型不是 geolocation,则系统会忽略此字段。