通過(guò)pack索引實(shí)現(xiàn)文本相關(guān)性排序
場(chǎng)景說(shuō)明
本文主要介紹,如何在向量檢索版中使用static_bm25函數(shù)、text_relevance函數(shù)在粗排和精排階段獲取文本相關(guān)性得分并排序。
pack索引配置
這里通過(guò)演示2個(gè)字段組合pack:
首先,需要設(shè)置pack索引的兩個(gè)字段,類型設(shè)置為text,同時(shí)分析方式需要相同:
然后,設(shè)置索引,索引類型設(shè)置PACK,設(shè)置包含字段:
這里需要注意,如果上述設(shè)置字段時(shí),順序?yàn)関ector_source_text在前、cate_id在后,那么編輯pack索引的字段時(shí),也需要按照這個(gè)順序,否則在保存發(fā)布時(shí)會(huì)報(bào)錯(cuò)。
接下來(lái),設(shè)置pack索引的高級(jí)配置:
pack索引配置示例:
{
"index_name": "pack_index",
"index_type": "PACK",
"index_fields": [
{
"boost": 1,
"field_name": "vector_source_text"
},
{
"boost": 1,
"field_name": "cate_id"
}
],
"doc_payload_flag": 1,
"has_section_attribute": true,
"position_payload_flag": 1,
"term_frequency_bitmap": 0,
"position_list_flag": 1,
"term_payload_flag": 1,
"term_frequency_flag": 1,
"section_attribute_config": {
"has_field_id": true,
"has_section_weight": true
}
}
最后,點(diǎn)擊發(fā)布即可。
發(fā)布完成后,推送離線配置,并索引重建,即可進(jìn)行查詢測(cè)試
查詢配置
通過(guò)ha語(yǔ)法進(jìn)行查詢:
query=pack_index:'水 壺'&&cluster=general&&config=start:0,hit:10,format:json
&&kvpairs=first_formula:static_bm25(),
formula: text_relevance(vector_source_text)&&sort=-RANK
first_formula設(shè)置粗排表達(dá)式
●formula設(shè)置精排表達(dá)式
●sort=-RANK 設(shè)置doc使用文本得分排序
結(jié)果展示:
算分信息查看:(在config子句中添加rank_trace:all)
常見(jiàn)問(wèn)題
用戶反饋:
粗排配置沒(méi)問(wèn)題,但是得分一直是10000:
config里加一個(gè)參數(shù):rank_trace:all
"tracerInfo": "begin first formula trace:\nexpression[ipvuv],
result[8819].\nexpression[ipvuv*0.1], result[881.900024].\nexpression[score],
result[97.910000].\nexpression[score*100],
result[9791.000000].\nexpression[score*100+ipvuv*0.1],
result[10672.900024].\nscore [10000.000000] is larger
than max_first_score [10000.000000], adjust it to max_first_score.\nend
first formula trace.\n"
這是因?yàn)榇峙抛畲笫?0000分,超過(guò)10000,則默認(rèn)設(shè)置為10000。