Elasticsearch Service 混合搜索(RRF 融合排序)

在混合检索的过程中,文本检索与向量检索的评分机制大不相同,RRF(Reciprocal Rank Fusion)融合搜索的基本思想是对每个系统的排名结果赋予一个权重,这个权重是其排名的倒数。具体来说,对于每个系统的排名列表中的每个项目,RRF 算法会计算一个分数,该分数是该项目在每个列表中排名的倒数之和。然后,所有项目根据这个分数进行重新排序,以生成最终的融合排名列表。RRF 内置于 ES 中,无需外部模型服务,较为。

相关产品
Elasticsearch Service 产品页,含版本规格、价格与购买入口。

一、写法一:retriever 方式(Elastic 8.16正式发布)

retriever 方式详情请参见 Retrievers。

注意:说明:

注意:腾讯云 ES 在 8.16 自研支持 rrf 算法,写法上,将下面 rrf 替换成 rank_fusion;Elastic 从 9 版本开始支持 rrf。

GET /book-index/_search{ "retriever": { "rrf": { // 腾讯云 ES 8.16 写成 rank_fusion,之后版本写成 rrf "retrievers": [ { "retriever": { "knn": { "field": "title_vector", "query_vector": [0.1, 0.2, 0.3 …], "k": 10, "num_candidates": 100 } }, "weight": 0.8 }, { "retriever": { "standard": { "query": { "match": { "title_text": "人类" } } } }, "weight": 0.2 } ], "rank_window_size": 50, "rank_constant": 20 } }}

二、写法二:传统写法(此方式已弃用,不推荐)

GET /book-index/_search{ "knn":{ "field":"content_vector", "query_vector": [0.5, 0.6, 0.7 …], "k":10, "num_candidates": 100 }, "query":{ "match":{ "title_text":{ "query":"人类" } } }, "rank":{ "rrf":{ "rank_window_size":50, "rank_constant":20 } }, "size": 10}

参数说明:

·rank_window_size:从每个查询中取多少结果参与融合,默认值100

·rank_constant:控制排名的常数,值越小排名影响越大,默认值60

RRF 的计算公式如下:

赞 (0)
上一篇 4天前
下一篇 4天前