- 还有几个点涉及到es的底层数据结构,需要一定的调优能力,可以查看官方文档
kNN选项
field
,必填,向量字段名filter
,可选,query dsl的filter,返回向量检索和filter过滤条件都满足的文档。k
,必填,返回的邻近向量数,必须小于num-candidates
。num-candidates
,相当于每个分片上的k
,es从每个分片上检索num_candidates
个向量结果,再根据评分汇总返回k
个最终结果。增大该值可以提高检索结果的准确度。query_vector
,可选,要检索的向量,维度必须和创建mapping时一致。query_vector_builder
,可选,指定模型的相关信息,将编码文本为向量的任务交给es。query_vector
和query_vector_builder
,必须填且只能填一个。similarity
,可选,float类型,判定检索命中的一个阈值,与所选的距离度量方式有关,不是文档分数_score,通过该值对文档进行评分,并应用boost
(如果有)。
如果是l2_norm
,距离需要小于等于similarity
如果是cosine
或者dot_product
,相似度需要大于等于similarity
。
boost
,计算评分时的系数,knn可以和query一起使用,两者的结果合并再计算评分,boost*评分再求和。
精确kNN
查询所有文档计算相似度以保证结果的准确度,可以先使用query过滤一部分文档,再进行精确kNN提高检索速度。
如果确定字段不需要进行近似kNN,可以