嘉兴高端网站建设公司,aspnet网站开发实例教程pdf,德清县城乡建设局网站,android studio手机版下载一、向量相似度搜索 在Milvus中进行向量相似度搜索时#xff0c;会计算查询向量和集合中具有指定相似性度量的向量之间的距离#xff0c;并返回最相似的结果。通过指定一个布尔表达式来过滤标量字段或主键字段#xff0c;您可以执行混合搜索。
1.加载集合 执行操作的前提是…一、向量相似度搜索 在Milvus中进行向量相似度搜索时会计算查询向量和集合中具有指定相似性度量的向量之间的距离并返回最相似的结果。通过指定一个布尔表达式来过滤标量字段或主键字段您可以执行混合搜索。
1.加载集合 执行操作的前提是集合加载到内存。
from pymilvus import Collection
collection Collection(book) # Get an existing collection.
collection.load()
2.准备搜索参数 搜索参数要适应你的搜索场景。
search_params {metric_type: L2, offset: 0, ignore_growing: False, params: {nprobe: 10}#适合 IVF_FLAT index
}
params的可选参数和值如下 nprobe Indicates the number of cluster units to search. This parameter is available only when index_type is set to IVF_FLAT, IVF_SQ8, or IVF_PQ. The value should be less than nlist specified for the index-building process. ef Indicates the search scope. This parameter is available only when index_type is set to HNSW. The value should be within the range from top_k to 32768. radius Indicates the angle where the vector with the least similarity resides. range_filter Indicates the filter used to filter vector field values whose similarity to the query vector falls into a specific range. 3.进行向量搜索
# 使用集合对象的 search 方法来进行向量检索
results collection.search(data[[0.1, 0.2]], # 查询向量anns_fieldbook_intro, # 指定用于检索的字段paramsearch_params, # 检索参数limit10, # 返回结果数量的限制exprNone, # 查询表达式output_fields[title], # 指定要从搜索结果中检索的字段consistency_levelStrong # 一致性级别
)# 获取搜索结果中最相似的文档 IDs
results[0].ids# 获取搜索结果中的距离值
results[0].distances# 获取第一个匹配的文档
hit results[0][0]# 从匹配的文档中获取 title 字段的值
hit.entity.get(title)
二、混合搜索
混合搜索是使用属性过滤的向量搜索。通过指定过滤标量字段或主键字段的布尔表达式来先限定搜索范围。 1.加载集合 2.进行混合向量搜索 其实也就是在前面的搜索配置加了个布尔表达式
search_param {data: [[0.1, 0.2]],anns_field: book_intro,param: {metric_type: L2, params: {nprobe: 10}, offset: 0},limit: 10,expr: word_count 11000,
}
res collection.search(**search_param)
3.检查搜索结果
assert len(res) 1 # 断言
hits res[0]
assert len(hits) 2
print(f- Total hits: {len(hits)}, hits ids: {hits.ids} )
print(f- Top1 hit id: {hits[0].id}, distance: {hits[0].distance}, score: {hits[0].score} )
三、范围搜索 1.加载集合 2.定义范围搜索参数 l2度量
param {# use L2 as the metric to calculate the distancemetric_type: L2,params: {# search for vectors with a distance smaller than 1.0radius: 1.0,# 半径 只有距离查询向量的距离小于半径值的向量才会被返回作为检索结果。# filter out vectors with a distance smaller than or equal to 0.8range_filter : 0.8 #大于或等于指定值的向量将被返回作为检索结果}
}内积ip度量
param {# use IP as the metric to calculate the distancemetric_type: IP,params: {# search for vectors with a distance greater than 0.8radius: 0.8,# filter out most similar vectors with a distance greater than or equal to 1.0range_filter : 1.0}
}3.执行范围搜索
res collection.search(data[[0.3785311281681061,0.2960498034954071]], # query vectoranns_fieldbook_intro, # vector field nameparamparam, # search parameters defined in step 2limit5 # number of results to return
)print(res)