id: search_vector_python.md

查询向量

Milvus 支持在集合或分区中查询向量。

在集合中查询向量

  1. 创建搜索参数。搜索参数是一个 JSON 字符串,在 Python SDK 中以字典来表示。

    1. >>> search_param = {'nprobe': 16}
    对于不同的索引类型,搜索所需参数也有区别。所有的搜索参数都必须赋值。详细信息请参考 Milvus 索引类型
  2. 创建随机向量作为 query_records 进行搜索:

    1. # Create 5 vectors of 256 dimensions.
    2. >>> q_records = [[random.random() for _ in range(256)] for _ in range(5)]
    3. >>> milvus.search(collection_name='test01', query_records=q_records, top_k=2, params=search_param)
    • top_k 指的是向量空间中距离目标向量最近的 k 个向量。
    • top_k 的范围为:[1, 16384]。

在分区中查询向量

  1. # Create 5 vectors of 256 dimensions.
  2. >>> q_records = [[random.random() for _ in range(256)] for _ in range(5)]
  3. >>> milvus.search(collection_name='test01', query_records=q_records, top_k=1, partition_tags=['tag01'], params=search_param)
如果你不指定 partition_tags, Milvus 会在整个集合中搜索。

常见问题

为什么 Milvus 查询召回率一直不理想? {{fragments/faq_poor_recall_rate.md}}
Milvus 是否支持 “边插入边查询” ? {{fragments/faq_search_during_insert.md}}
对集合分区的查询是否会受到集合大小的影响,尤其在集合数据量高达一亿数据量时? {{fragments/faq_collection_affect_partition_search.md}}
如果只是搜索集合中的部分分区,整个集合的数据会全部加载到内存吗? {{fragments/faq_load_when_search_partition.md}}
各个数据段的检索是并行处理的吗? {{fragments/faq_search_segment_parallel.md}}
批量搜索时,用多线程的收益大吗? {{fragments/faq_multithreading_search.md}}
为什么搜索的速度非常慢? {{fragments/faq_search_slow.md}}
创建索引立即查询,为什么内存会突然增长? {{fragments/faq_search_increase_memory_usage.md}}
为什么重启 Milvus 服务端之后,第一次搜索时间非常长? {{fragments/faq_search_time_after_restart.md}}