Skip to content

向量搜索

基本流程

  1. 准备与 Collection 同维度query_vector(通常由同一 Embedding 模型对查询文本编码)。
  2. 调用 search,指定 limit(top_k)。
  3. 得到按相似度排序的 点 id、score、payload

Python

python
query_vector = [0.15] * 384  # 替换为真实查询向量

hits = client.search(
    collection_name="demo_text",
    query_vector=query_vector,
    limit=5,
    with_payload=True,
)

for h in hits:
    print(h.id, h.score, h.payload)

Java

java
import io.qdrant.client.grpc.Points.SearchPoints;
import java.util.Collections;

var hits = client.searchAsync(
    SearchPoints.newBuilder()
        .setCollectionName("demo_text")
        .addAllVector(/* 与集合维度一致,如 384 维 List<Float> */)
        .setLimit(5)
        .setWithPayload(io.qdrant.client.grpc.Points.WithPayloadSelector.newBuilder().setEnable(true).build())
        .build()
).get();

hits.forEach(p -> System.out.println(p.getId() + " " + p.getScore()));

Java 中 addAllVector 需传入与建表时 size 相同数量的 float;可用循环或 float[]List

参数说明(常见)

参数作用
limit返回前 k 条。
score_threshold过滤掉低于阈值的命中(可选)。
with_payload是否返回 payload。
with_vectors是否返回向量(一般关闭以省带宽)。

精度与速度

limit 很大时会变慢且意义有限;RAG 常见 5~20。若结果不理想,优先检查 模型、距离类型、数据质量,再调 top_k

下一节:过滤条件,在子集中搜索。