配置情况
elasticsearch 版本7.14.1,16G JVM
创建 mapping
{
"feature":{
"path_match":"feature",
"mapping":{
"type":"dense_vector",
"dims":256
}
}
}
query 语句
GET features_self_1w/_search
{
"size": 1,
"query": {
"script_score": {
"query": {
"match_all": {}
},
"script": {
"source": "doc['feature'].size() ==0 ? 0 : cosineSimilarity(params.query_vector, 'feature') + 1.0",
"params": {
"query_vector": [
-0.291748046875,
0.096435546875,
-0.11865234375,
0.107177734375,
-0.117919921875,
...
...
...
-0.105712890625,
-0.01171875
]
}
}
}
}
}
压测结果
features_exact_1w
10并发+10秒
100并发+10秒
features_self_10w
10并发+10秒
100并发+10秒
features_self_50w
10并发+10秒
结论
- 10并发,1w量级耗时70~100ms,10w量级耗时700~1000ms,50w量级耗时3s;
- 在特征集数据量少的业务场景下,在低并发的场景下,能接受100ms的话就能用,计算是暴力的,耗时随着数据量线性递增。
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。