首页/AI/RAG 与向量库速查/Qdrant 查询接口(query_points)

Qdrant 查询接口(query_points)

Qdrant 的查询统一走 query_points:既支持按向量近邻检索,也支持按 id 推荐(recommend)、按条件 scroll 浏览;旧版 search 接口在新客户端中已并入 query。

RAG 与向量库速查AI更新于 2026-10-13

Qdrant 查询接口是什么

Qdrant 新版客户端把查询统一收敛到 query_points 一个方法:既能按向量做近邻检索,也能按已有 id 做相似推荐(recommend,可给出正负样例),还能按条件 scroll 浏览数据。旧版的 search 接口在较新的 qdrant-client 中已被并入 query,沿用旧写法会收到弃用提示甚至报错。查询时可以只取需要的 payload 字段,减少带宽与反序列化开销,这在宽 payload 场景下非常明显。

基本信息

统一入口client.query_points(collection_name, query=...)
查询类型向量近邻、RecommendQuery(正负样例)、scroll 浏览
过滤query_filter 中使用 must / should / must_not 条件
返回控制limit、with_payload(可指定字段列表)、with_vectors
兼容性旧 search 接口在新客户端中已弃用

典型使用场景

  • 常规检索:向量近邻加元数据过滤,取 top 10
  • 相似内容推荐:给定已有 point 的 id 找相近内容,可加入负样例排除方向
  • 数据巡检:按条件 scroll 抽样查看 payload 是否符合预期
  • 带宽优化:只返回 source 与 title 字段,避免整段原文来回传输
  • 迁移适配:把旧 search 调用按迁移指南改写为 query_points

向量检索与带过滤检索

向量检索与带过滤检索
from qdrant_client import QdrantClient, models

client = QdrantClient(url='http://localhost:6333')
res = client.query_points(
    collection_name='kb',
    query=query_vec,
    query_filter=models.Filter(must=[models.FieldCondition(
        key='source', match=models.MatchValue(value='handbook'))]),
    limit=10, with_payload=['source', 'title'],
)
for p in res.points:
    print(p.id, p.score, p.payload)

按已有 id 找相似

按已有 id 找相似
res = client.query_points(
    'kb',
    query=models.RecommendQuery(recommend=models.RecommendInput(
        positive=['c-1', 'c-7'], negative=['c-9'])),
    limit=5, with_payload=False)   # 只要 id 与分数

查询类型与参数

查询关键参数注意点
向量近邻query=向量, limit向量维度必须与集合一致
带过滤检索query_filter过滤字段建议建 payload 索引
RecommendQuerypositive/negative id 列表负样例用于排除方向,可省略
scrollfilter, limit用于巡检,不是相关性排序

接口迁移与调优要点

  • 版本对齐:升级 qdrant-client 后按官方迁移指南把 search 改写为 query_points
  • 字段瘦身:with_payload 传字段列表,别把整段原文来回传输
  • 索引补齐:过滤用到的 payload 字段建索引,否则过滤阶段逐点扫描
  • 结果校验:对同一查询分别跑过滤与不过滤,确认过滤条件真的生效
with_payload 指定字段列表能显著减少传输量:payload 里放了长文本时,全字段返回会让延迟随结果条数线性上升,而检索阶段真正需要的往往只有来源与标题。

易错点

  • 沿用旧 search 调用在新版 qdrant-client 中已弃用,按迁移指南换 query_points
  • filter 条件字段未建索引时,过滤在扫描阶段逐点执行,延迟上涨
  • 返回全部 payload(含整段原文),带宽与反序列化开销拖慢查询
  • filter 字段取值与写入时大小写不一致,筛出空集却误判为“没有数据”
  • 混淆 scroll 与检索:需要相关性排序却用了 scroll,结果顺序完全按存储顺序
  • 查询向量维度与集合配置不一致时的报错指向集合,容易被误读为数据损坏

数据来源与参考

  • Qdrant 官方文档(Query points / Recommend)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌