Link Search Menu Expand Document Documentation Menu

使用 LTR 优化搜索

训练模型后,您可以使用 sltr 查询来执行它。但是,不建议直接在整个索引上运行查询,因为它可能会占用大量 CPU 并影响 OpenSearch 集群的性能。该查询允许您将训练好的模型应用于搜索结果,示例如下

    POST tmdb/_search
    {
        "query": {
            "sltr": {
                    "params": {
                        "keywords": "rambo"
                    },
                    "model": "my_model"
                }
        }
    }

对前 N 个结果进行重排序

为了更高效地执行模型,您可以使用内置的重排序功能,将模型应用于基线相关性查询的前 N 个结果,示例如下

    POST tmdb/_search
    {
        "query": {
            "match": {
                "_all": "rambo"
            }
        },
        "rescore": {
            "window_size": 1000,
            "query": {
                "rescore_query": {
                    "sltr": {
                        "params": {
                            "keywords": "rambo"
                        },
                        "model": "my_model"
                    }
                }
            }
        }
    }

首先对术语 rambo 执行 match 查询,然后将 my_model 应用于前 1,000 个结果。此基线查询用于生成初始结果集,然后使用默认相似度 BM25 概率排名框架对这些结果进行评分,以计算相关性得分。

对特征子集进行重排序

您可以通过在 sltr 查询中指定 active_features 来选择性地对特征子集进行评分,示例如下。这允许您将模型的评分集中在选定的特征上,而任何未指定的特征都会被标记为缺失。您只需指定与 active_features 相关的 params。如果您请求的特征名称不属于分配的特征集,则查询会抛出错误。

    POST tmdb/_search
    {
        "query": {
            "match": {
                "_all": "rambo"
            }
        },
        "rescore": {
            "window_size": 1000,
            "query": {
                "rescore_query": {
                    "sltr": {
                        "params": {
                            "keywords": "rambo"
                        },
                        "model": "my_model",
                        "active_features": ["title_query"]
                    }
                }
            }
        }
    }

应用 my_model 模型,但仅对 title_query 特征进行评分。

sltr 与其他 OpenSearch 功能结合使用

sltr 查询可以与以下 OpenSearch 特性和功能集成,以创建更复杂和定制的搜索解决方案,这些解决方案不仅仅是将模型应用于结果

  • 在应用模型之前,使用 OpenSearch 过滤器根据业务规则过滤掉结果
  • 链式调用多个重排序以优化结果相关性
  • 第一次重排序使用 sltr 处理相关性,第二次重排序用于业务考量
  • 在基线查询中降低相关但低质量内容的权重,以防止其被重排序

后续步骤

了解 高级功能

剩余 350 字符

有问题?

想要贡献?