Zvec Logo

搜索 Document

query() 方法支持向量相似度搜索条件过滤(类似 SQL WHERE 子句)或两者组合的混合查询

它返回一个 Doc 对象列表,每个对象包含匹配的 Document 及其相关性评分。


Query

在 Zvec 中,所有查询都是通过将参数传递给 query() 方法的 Query 对象来执行的。

每个 VectorQuery 指定:

  1. field_name:要搜索的向量字段名称
  2. 查询来源(必须且仅能指定一个):
    • 一个显式的 vector或者
    • 一个 Document 的 id(复用已有 Document 中存储的 Embedding)

    必须且只能提供 vectorid 中的一个。同时指定两者会引发错误。

  3. param(可选):索引特定的查询参数(例如 HNSWef

每个 ZVecQuery 指定:

  1. fieldName:要搜索的向量字段名称
  2. vector:查询向量
  3. params(可选):索引特定的查询参数(例如 HNSWef


查询类型


快速开始示例

单向量搜索

import zvec

result = collection.query(  
    vectors=zvec.VectorQuery(
        field_name="dense_embedding",
        vector=[0.1] * 768,  # 实际使用时请替换为真实的 Embedding
    ),
    topk=10,
)

多向量搜索

import zvec

result = collection.query(  
    topk=10,
    vectors=[
        zvec.VectorQuery(field_name="dense_embedding", vector=[0.1] * 768),         
        zvec.VectorQuery(field_name="sparse_embedding", vector={1: 0.1, 37: 0.43}), 
    ],
    reranker=zvec.WeightedReRanker(  
        topn=3,
        metric=zvec.MetricType.IP,
        weights={
            "dense_embedding": 1.2,
            "sparse_embedding": 1.0,
        },
    ),
)
print(result)

条件过滤

result = collection.query(filter="publish_year < 1999", topk=50)

混合搜索

import zvec

result = collection.query(          
    vectors=zvec.VectorQuery(
        field_name="dense_embedding",
        vector=[0.1] * 768,  # 实际使用时请替换为真实的 Embedding
    ),
    filter="publish_year < 1999",
    topk=10,
)

目录