🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 使用者指南
  • Home
  • Docs
  • 使用者指南

  • 搜尋與重新排名

  • 過濾

  • 過濾模板

篩選器模板

在 Milvus 中,包含大量元素的複雜篩選表達式,尤其是那些涉及非 ASCII 字符(如中日韓字符)的篩選表達式,會顯著影響查詢性能。為了解決這個問題,Milvus 引入了篩選表達式模板化機制,旨在通過減少解析複雜表達式所花的時間來提高效率。本頁說明在搜尋、查詢和刪除操作中使用篩選表達式模板。

概述

篩選表達式範本化允許您使用占位符建立篩選表達式,這些占位符可以在查詢執行時動態地使用值取代。使用模板,您可以避免直接在篩選器中嵌入大型陣列或複雜的表達式,從而減少解析時間並提昇查詢效能。

假設您有一個篩選表達式,其中包含兩個欄位agecity ,而您想要找出所有年齡大於 25 歲,且居住在「北京」(Beijing)或「上海」(Shanghai)的人。您可以使用模板,而不是直接將值嵌入篩選表達式中。

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

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?