Link Search Menu Expand Document Documentation Menu

搜索相关性工作台

于 3.1 版本引入

这是一个实验性功能,不建议在生产环境中使用。有关该功能的进度更新或如果您想提供反馈,请参阅相关的 GitHub 问题

在搜索应用中,调整相关性是一项持续迭代的工作,旨在为最终用户提供正确的搜索结果。搜索相关性工作台中的工具帮助搜索相关性工程师和业务用户为应用程序用户创建最佳的搜索体验。它在不隐藏内部信息的情况下完成此操作,使工程师能够根据需要进行实验和调查细节。

搜索相关性工作台包含一个简化搜索质量评估过程的前端组件。该前端使用OpenSearch 搜索相关性插件作为后端,管理每个工具所需的资源。例如,大多数用例涉及创建和使用搜索配置、查询集和判例列表。所有这些资源都由搜索相关性插件创建、更新、删除和维护。当您对相关性改进感到满意时,您可以将实验输出手动部署到您的搜索应用程序中。

关键相关性概念

搜索相关性工作台依赖于不同的组件来支持其提供的不同类型的实验

  • 查询集:查询集是查询的集合。这些查询用于搜索相关性评估实验中。
  • 搜索配置:搜索配置描述了用于运行实验查询的模式。
  • 判例列表:判例是对给定查询的某个特定文档相关性的评分。多个判例组合在一起形成判例列表。

可用的搜索结果质量实验

搜索相关性工作台提供三种类型的实验

启用搜索相关性工作台

要启用搜索相关性工作台,您必须首先启用前端和后端插件。

启用搜索相关性工作台前端插件

要激活前端插件,请在 OpenSearch Dashboards 中,转到管理 > Dashboards 管理 > 高级设置并打开切换开关,如下图所示。

Activate frontend plugin in OpenSearch Dashboards settings

启用搜索相关性工作台后端插件

要启用搜索相关性工作台后端插件,请发送以下请求

PUT _cluster/settings
{
  "persistent" : {
    "plugins.search_relevance.workbench_enabled" : true
  }
}

创建查询集

要比较搜索配置,请创建一组查询来运行搜索。如果您有权访问符合用户行为洞察 (UBI) 规范的搜索行为数据,您可以向 _plugins/search_relevance/query_sets/create 端点发送请求。

以下示例请求将手动定义的查询集上传到搜索相关性工作台

PUT _plugins/_search_relevance/query_sets
{
  "name": "TVs",
  "description": "TV queries",
  "sampling": "manual",
  "querySetQueries": [
    {
      "queryText": "tv"
    },
    {
      "queryText": "led tv"
    }
  ]
}

响应包含您将进行实验的查询集的 query_set_id

{
  "query_set_id": "1856093f-9245-449c-b54d-9aae7650551a",
  "query_set_result": "CREATED"
}

创建搜索配置

搜索配置指定查询集中每个查询的运行方式。要创建搜索配置,您可以向 _plugins/search_relevance/search_configurations 端点发送搜索请求。每个搜索配置都包含一个 search_configuration_name 和一个 query_body

示例:创建两个搜索配置

对于您的第一个实验,您将探索在 title 字段中添加权重 10 如何影响您的搜索配置。首先,将您当前的搜索配置上传到 OpenSearch

PUT _plugins/_search_relevance/search_configurations
{
  "name": "my_production_config",
  "query": "{\"query\":{\"multi_match\":{\"query\":\"%SearchText%\",\"fields\":[\"id\",\"title\",\"category\",\"bullets\",\"description\",\"attrs.Brand\",\"attrs.Color\"]}}}",
  "index": "ecommerce"
}

响应包含搜索配置 ID

{
  "search_configuration_id": "122fbde8-d593-4d71-96d4-cbe3b4977468",
  "search_configuration_result": "CREATED"
}

接下来,创建另一个搜索配置,并为 title 字段应用权重 10

PUT _plugins/_search_relevance/search_configurations
{
  "name": "title_boost",
  "query": "{\"query\":{\"multi_match\":{\"query\":\"%SearchText%\",\"fields\":[\"id\",\"title^10\",\"category\",\"bullets\",\"description\",\"attrs.Brand\",\"attrs.Color\"]}}}",
  "index": "ecommerce"
}

响应包含加权搜索配置的 ID,并指示是否成功创建

{
  "search_configuration_id": "0d687614-df5b-4b6b-8110-9d8c6d407963",
  "search_configuration_result": "CREATED"
}

运行搜索结果列表比较实验

要运行您的第一个实验,您需要一个查询集和两个搜索配置(以及相应的索引)。通过比较搜索结果,您可以衡量修改搜索配置如何影响搜索结果。要创建实验,请向 _plugins/search_relevance/experiments 端点发送请求

POST _plugins/_search_relevance/experiments
{
 "querySetId": "1856093f-9245-449c-b54d-9aae7650551a",
 "searchConfigurationList": ["122fbde8-d593-4d71-96d4-cbe3b4977468", "0d687614-df5b-4b6b-8110-9d8c6d407963"],
 "size": 10,
 "type": "PAIRWISE_COMPARISON"
}

响应包含实验 ID

{
  "experiment_id": "dbae9786-6ea0-413d-a500-a14ef69ef7e1",
  "experiment_result": "CREATED"
}

要检索实验结果,请使用返回的 experiment_id

GET _plugins/_search_relevance/experiments/dbae9786-6ea0-413d-a500-a14ef69ef7e1

响应提供了详细的实验结果

响应
{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": ".plugins-search-relevance-experiment",
        "_id": "dbae9786-6ea0-413d-a500-a14ef69ef7e1",
        "_score": 1,
        "_source": {
          "id": "dbae9786-6ea0-413d-a500-a14ef69ef7e1",
          "timestamp": "2025-06-14T14:02:17.347Z",
          "type": "PAIRWISE_COMPARISON",
          "status": "COMPLETED",
          "querySetId": "1856093f-9245-449c-b54d-9aae7650551a",
          "searchConfigurationList": [
            "122fbde8-d593-4d71-96d4-cbe3b4977468",
            "0d687614-df5b-4b6b-8110-9d8c6d407963"
          ],
          "judgmentList": [],
          "size": 10,
          "results": [
            {
              "snapshots": [
                {
                  "searchConfigurationId": "0d687614-df5b-4b6b-8110-9d8c6d407963",
                  "docIds": [
                    "B01M1D0KL1",
                    "B07YSMD3Z9",
                    "B07V4CY9GZ",
                    "B074KFP426",
                    "B07S8XNWWF",
                    "B07XBJR7GY",
                    "B075FDWSHT",
                    "B01N2Z17MS",
                    "B07F1T4JFB",
                    "B07S658ZLH"
                  ]
                },
                {
                  "searchConfigurationId": "122fbde8-d593-4d71-96d4-cbe3b4977468",
                  "docIds": [
                    "B07Q45SP9P",
                    "B074KFP426",
                    "B07JKVKZX8",
                    "B07THVCJK3",
                    "B0874XJYW8",
                    "B08LVPWQQP",
                    "B07V4CY9GZ",
                    "B07X3BS3DF",
                    "B074PDYLCZ",
                    "B08CD9MKLZ"
                  ]
                }
              ],
              "queryText": "led tv",
              "metrics": [
                {
                  "metric": "jaccard",
                  "value": 0.11
                },
                {
                  "metric": "rbo50",
                  "value": 0.03
                },
                {
                  "metric": "rbo90",
                  "value": 0.13
                },
                {
                  "metric": "frequencyWeighted",
                  "value": 0.2
                }
              ]
            },
            {
              "snapshots": [
                {
                  "searchConfigurationId": "0d687614-df5b-4b6b-8110-9d8c6d407963",
                  "docIds": [
                    "B07X3S9RTZ",
                    "B07WVZFKLQ",
                    "B00GXD4NWE",
                    "B07ZKCV5K5",
                    "B07ZKDVHFB",
                    "B086VKT9R8",
                    "B08XLM8YK1",
                    "B07FPP6TB5",
                    "B07N1TMNHB",
                    "B09CDHM8W7"
                  ]
                },
                {
                  "searchConfigurationId": "122fbde8-d593-4d71-96d4-cbe3b4977468",
                  "docIds": [
                    "B07Q7VGW4Q",
                    "B00GXD4NWE",
                    "B07VML1CY1",
                    "B07THVCJK3",
                    "B07RKSV7SW",
                    "B010EAW8UK",
                    "B07FPP6TB5",
                    "B073G9ZD33",
                    "B07VXRXRJX",
                    "B07Q45SP9P"
                  ]
                }
              ],
              "queryText": "tv",
              "metrics": [
                {
                  "metric": "jaccard",
                  "value": 0.11
                },
                {
                  "metric": "rbo50",
                  "value": 0.07
                },
                {
                  "metric": "rbo90",
                  "value": 0.16
                },
                {
                  "metric": "frequencyWeighted",
                  "value": 0.2
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

在 OpenSearch Dashboards 中使用搜索相关性工作台

您可以在 OpenSearch Dashboards 中创建所有搜索相关性工作台组件并可视化实验结果。在此示例中,您将创建相同的实验并查看其结果。

在左侧导航窗格中,选择OpenSearch 插件 > 搜索相关性,然后选择查询集比较,如下图所示。

Select Query Set Comparison Experiment

选择您创建的查询集(TVs)和搜索配置(my_production_configtitle_boost),然后选择开始评估,如下图所示。

Define Query Set Comparison Experiment

您将自动被引导至实验概览表,如下图所示。

Experiment Overview Table

要查看结果,请选择最顶部(最新)的实验。实验视图页面显示三个元素

  1. 实验参数。
  2. 实验产生的聚合指标,如下图所示。比较实验的聚合指标
  3. 每个查询的独立指标。

要直观地评估两个结果集之间的差异,请选择一个查询事件。