🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
首页
  • 用户指南

过滤器模板

在 Milvus 中,包含大量元素的复杂过滤表达式,尤其是那些涉及非 ASCII 字符(如中日韩字符)的表达式,会严重影响查询性能。为了解决这个问题,Milvus 引入了过滤表达式模板机制,旨在通过减少解析复杂表达式所花费的时间来提高效率。本页介绍了在搜索、查询和删除操作中使用过滤表达式模板的方法。

概述

过滤表达式模板化允许你创建带有占位符的过滤表达式,这些占位符可以在查询执行过程中动态替换为值。使用模板,可以避免直接在过滤器中嵌入大型数组或复杂表达式,从而减少解析时间并提高查询性能。

假设有一个涉及两个字段agecity 的过滤器表达式,要查找所有年龄大于 25 岁且居住在 "北京"(北京)或 "上海"(上海)的人。您可以使用模板来代替直接在筛选表达式中嵌入值。

filter = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}

在这里,{age}{city} 是占位符,在执行查询时将被替换为filter_params 中的实际值。

在 Milvus 中使用过滤表达式模板有几个主要优点。

  • 减少解析时间:通过用占位符替换大型或复杂的过滤器表达式,系统可以减少解析和处理过滤器的时间。

  • 提高查询性能:解析开销减少后,查询性能就会提高,从而获得更高的 QPS 和更快的响应时间。

  • 可扩展性:随着数据集的增长和过滤器表达式的复杂化,模板化可确保性能保持高效和可扩展。

搜索操作符

对于 Milvus 中的搜索操作,filter 表达式用于定义过滤条件,filter_params 参数用于指定占位符的值。filter_params 字典包含 Milvus 将用于代入过滤表达式的动态值。

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.search(
    "hello_milvus",
    vectors[:nq],
    filter=expr,
    limit=10,
    output_fields=["age", "city"],
    search_params={"metric_type": "COSINE", "params": {"search_list": 100}},
    filter_params=filter_params,
)

在本例中,Milvus 将在执行搜索时用25 动态替换{age} ,用["北京", "上海"] 动态替换{city}

查询操作符

同样的模板机制也可应用于 Milvus 的查询操作符。在query 函数中,您可以定义过滤表达式,并使用filter_params 指定要替换的值。

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.query(
    "hello_milvus",
    filter=expr,
    output_fields=["age", "city"],
    filter_params=filter_params
)

通过使用filter_params ,Milvus 可以有效处理值的动态插入,提高查询执行速度。

删除操作符

在删除操作中也可以使用过滤表达式模板。与搜索和查询类似,filter 表达式定义条件,filter_params 为占位符提供动态值。

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.delete(
    "hello_milvus",
    filter=expr,
    filter_params=filter_params
)

这种方法可以提高删除操作的性能,尤其是在处理复杂的过滤条件时。

结论

过滤器表达式模板化是优化 Milvus 查询性能的重要工具。通过使用占位符和filter_params 字典,可以大大减少解析复杂过滤器表达式所花费的时间。这将加快查询执行速度,提高整体性能。

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?