手机网站相册代码,自助建子站,动漫设计属于什么专业类别,网站的下拉列表怎么做的作者#xff1a;来自 Elastic Kathleen DeRusso 利用查询规则与语义搜索和重新排序相结合的强大功能。
更多阅读#xff1a; Elasticsearch 8.10 中引入查询规则 - query rules Elasticsearch 查询规则现已正式发布 - query rules 你是否知道查询规则#xff08;query ru…作者来自 Elastic Kathleen DeRusso 利用查询规则与语义搜索和重新排序相结合的强大功能。
更多阅读 Elasticsearch 8.10 中引入查询规则 - query rules Elasticsearch 查询规则现已正式发布 - query rules 你是否知道查询规则query rules可以与语义搜索无缝协作使用查询规则作为检索器将语义搜索和复杂逻辑例如 RRF 或语义重新排序与查询规则的强大功能相结合从未如此简单。
查询规则是我们相关性工具箱中的一个重要工具 介绍查询规则检索器
规则检索器rule retriever就是所谓的复合检索器ompound retriever它允许在检索器树中链接复杂的行为其中操作顺序很重要。
与规则查询rule query一样规则检索器适用于已定义的查询规则集。你可以使用查询规则 CRUD APIuery rules CRUD API创建规则集。
这在实践中是什么样子的这是一个简单查询规则集的示例当 query_string 参数与 puggles 匹配时它会固定 id 为 id1 的文档
PUT /_query_rules/my-ruleset
{rules: [{rule_id: rule1,type: pinned,criteria: [{type: exact,metadata: query_string,values: [ puggles ]}],actions: {ids: [id1]}}]
}接下来这里有一个与该规则集匹配的规则检索器的简单示例
POST my-index/_search
{retriever: {rule: {match_criteria: {query_string: puggles},ruleset_ids: [my-ruleset],retriever: {standard: {query: {query_string: {query: puggles}}}}}}
}在本例中我们只是定义了一个 standard 子检索器它是一个简单的 query_string 查询。这与当今规则查询的工作方式非常相似即通过指定 organic 查询。检索器将返回应用了匹配规则的搜索结果列表。 语义搜索和查询规则
这个简单的例子并没有展示查询规则的真正威力在语义搜索之上应用业务规则。这可以帮助返回对促销活动很重要的结果或者简单地 “修复” 语义搜索没有返回我们想要的结果的特定查询。
我们可以使用相同的检索器框架通过在定义的 standard 检索器下指定这些查询使用语义搜索执行查询规则。以下是使用 semantic 查询的示例
POST my-index/_search
{retriever: {rule: {match_criteria: {query_string: puggles},ruleset_ids: [ my-ruleset ],retriever: {standard: {query: {semantic: {field: semantic_field,query: what is the best pug mix?}}}}}}
}类似地当使用查询规则检索器定义为标准检索器时sparse_vector 和 knn 查询将无缝地工作。 重新排序和查询规则
你可以通过将 rrf 检索器嵌套在 rule 检索器下将 RRF 与查询规则结合起来例如
POST my-index/_search
{retriever: {rule: {match_criteria: {query_string: puggles},ruleset_ids: [my-ruleset],retriever: {rrf: {retrievers: [{standard: {query: {semantic: {field: semantic_field,query: what is the best pug mix?}}}},{standard: {query: {query_string: {query: puggles}}}}]}}}}
}重要提示顺序在这里很重要。虽然从技术上讲没有什么可以阻止你在规则检索器上运行 RRF但由于检索器树中的操作顺序这将无法按预期工作。当你运行规则检索器时为了确保所有规则都按预期应用规则检索器必须始终是最外层/顶层检索器。 同样你可以将查询规则与语义重新排序semantic reranking相结合。以下是使用我们的 Elastic 重新排序器Elastic reranker的示例
POST my-index/_search
{retriever: {rule: {match_criteria: {query_string: puggles},ruleset_ids: [ my-ruleset ],retriever: {text_similarity_reranker: {retriever: {standard: {query: {semantic: {field: semantic_field,query: what is the best pug mix?}}}}}},field: text_field,inference_id: elastic-rerank-endpoint,inference_text: what is the best pug mix?}}
}综上所述这里有一个示例说明如何将语义、sparse_vector、knn 和词汇文本搜索查询与 RRF 和语义重新排序结合起来并在它们之上应用查询规则
POST my-index/_search
{retriever: {rule: {match_criteria: {query_string: puggles},ruleset_ids: [ my-ruleset ],retriever: {text_similarity_reranker: {retriever: {rrf: {retrievers: [{standard: {query: {sparse_vector: {field: sparse_field,inference_id: elser-endpoint,query: what is the best pug mix?}}}},{standard: {query: {knn: {field: dense_field,query_vector: [ 1, 2, 3 ],k: 10,num_candidates: 100}}}},{standard: {query: {semantic: {field: semantic_field,query: what is the best pug mix?}}}},{standard: {query: {query_string: {query: puggles}}}}]}},field: text_field,inference_id: elastic-rerank-endpoint,inference_text: what is the best pug mix?}}}}
}组合规则类型
查询规则query rules不再只适用于固定文档在 Elasticsearch 8.16 中我们引入了一种新的规则类型即排除。这允许你指定你永远不希望在搜索结果中返回的文档以及你想要固定在搜索结果顶部的文档。
排除exclude规则的用例包括但不限于
通过删除对查询无用或不相关的结果来修复特定查询中的相关性问题暂时抑制我们不希望在某个时间之前在任何搜索结果中返回的结果
以下是包含固定pinned和排除excluded规则的查询规则集的示例
PUT /_query_rules/my-ruleset
{rules: [{rule_id: rule1,type: pinned,criteria: [{type: exact,metadata: query_string,values: [ puggles ]}],actions: {ids: [id1]}},{rule_id: rule2,type: exclude,criteria: [{type: exact,metadata: query_string,values: [ chiweenies ]}],actions: {ids: [id2]}}]
}规则是根据匹配条件应用的因此规则检索器可以在同一查询中匹配固定文档和排除文档。 试试看吧
规则检索器在结合语义搜索和重排序策略时表现得异常强大因为它在利用语义搜索能力的同时还提供了对搜索结果的精细控制。规则检索器已经在我们的 serverless 服务中提供并将在 8.17.0 及更高版本的 Stack 中可用。
Elasticsearch 包含许多新功能可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息开始免费云试用或立即在你的本地机器上试用 Elastic。 原文Ensuring business rules work seamlessly with semantic search - Elasticsearch Labs