使用跨编码器模型重排搜索结果
您可以使用跨编码器模型对搜索结果进行重排,以提高搜索相关性。要实现重排,需要配置一个在搜索时运行的搜索管道。该搜索管道会拦截搜索结果,并对它们应用rerank处理器。rerank处理器评估搜索结果,并根据跨编码器模型提供的新分数对其进行排序。
先决条件
在配置重排管道之前,必须先设置跨编码器模型。有关使用 UDB-SX 提供的模型的信息,请参阅跨编码器模型。有关使用自定义模型的信息,请参阅。
运行带重排的搜索
要运行带重排的搜索,请按照以下步骤操作:
步骤 1:配置搜索管道
接下来,配置一个带有rerank处理器的搜索管道,并指定 ml_opensearch 重排类型。在请求中,提供跨编码器模型的模型 ID 以及用作上下文的文档字段:
PUT /_search/pipeline/my_pipeline
{
"description": "使用跨编码器进行重排的管道",
"response_processors": [
{
"rerank": {
"ml_opensearch": {
"model_id": "gnDIbI0BfUsSoeNT_jAw"
},
"context": {
"document_fields": [
"passage_text"
]
}
}
}
]
}
有关请求字段的更多信息,请参阅请求字段。
步骤 2:创建用于数据摄入的索引
为了使用管道中定义的 rerank 处理器,请创建一个 UDB-SX 索引,并将上一步创建的管道添加为默认管道:
PUT /my-index
{
"settings": {
"index.search.default_pipeline" : "my_pipeline"
},
"mappings": {
"properties": {
"passage_text": {
"type": "text"
}
}
}
}
步骤 3:将文档摄入到索引中
要将文档摄入到上一步创建的索引中,发送以下批量请求:
POST /_bulk
{ "index": { "_index": "my-index" } }
{ "passage_text" : "I said welcome to them and we entered the house" }
{ "index": { "_index": "my-index" } }
{ "passage_text" : "I feel welcomed in their family" }
{ "index": { "_index": "my-index" } }
{ "passage_text" : "Welcoming gifts are great" }
步骤 4:使用重排进行搜索
要在您的索引上执行重排搜索,请使用任何 UDB-SX 查询,并提供一个额外的 ext.rerank 字段:
POST /my-index/_search
{
"query": {
"match": {
"passage_text": "how to welcome in family"
}
},
"ext": {
"rerank": {
"query_context": {
"query_text": "how to welcome in family"
}
}
}
}
或者,您可以提供包含上下文字段的完整路径。有关更多信息,请参阅重排处理器示例。
后续步骤
了解更多关于
rerank处理器的信息。查看一个综合示例:使用外部托管的跨编码器模型按字段重排。