1. knn向量檢索插件
使用過下面兩個(gè)插件
https://github.com/opendistro-for-elasticsearch/k-NN
優(yōu)點(diǎn): 相對(duì)elastiknn谷遂,該插件支持把底層生成hnsw一個(gè)結(jié)構(gòu)加載進(jìn)內(nèi)存鳞仙,376w數(shù)據(jù),768緯度向量萧朝,搜索性能在300-400ms左右
缺點(diǎn):?
1.該插件需要基于nmslib生成一個(gè)c的so文件师郑,該文件比較依賴底層操作系統(tǒng)的庫胖腾,建立項(xiàng)目最好使用docker容器的方式参淹,不然把本地打的so文件宁炫,放到其他環(huán)境會(huì)出現(xiàn)各種bug土砂,比如: [libKNNIndexV1_7_3_6.so_0x6b1da]? _GLOBAL_sub_I_distcomp_sparse_scalar_fast.cc+0x2a
2. 該插件對(duì)應(yīng)于es7.7.1的版本存在各種bug州既,比如打重復(fù)分?jǐn)?shù)、使用cosine距離萝映,但是實(shí)際算出來是l2距離吴叶,因此建議使用最新的版本,目前最新該插件對(duì)應(yīng)的es版本是7.10.2
2. https://github.com/alexklibisz/elastiknn
優(yōu)點(diǎn): 這個(gè)是完全對(duì)接了es和luence語法的序臂,應(yīng)該java原生應(yīng)用蚌卤,這個(gè)不需要安裝so庫实束,官網(wǎng)直接就有插件,使用起來比較簡(jiǎn)單
缺點(diǎn): 性能相對(duì)于上面插件有差距逊彭,看官網(wǎng)的QPS在400多左右