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

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

  • 搜尋與重新排名

  • 過濾

  • 篩選說明

篩選說明

Milvus 提供強大的篩選功能,使您能夠精確查詢資料。篩選表達式允許您針對特定的標量欄位,使用不同的條件精煉搜尋結果。本指南解釋如何在 Milvus 中使用篩選表達式,並以查詢操作為主。您也可以在搜尋和刪除請求中套用這些篩選條件。

基本運算符號

Milvus 支援幾種基本運算符號來篩選資料。

  • 比較運算符==,!=,>,<,>=, 和<= 允許根據數值、文字或日期欄位進行篩選。

  • 範圍篩選器INLIKE 有助於匹配特定的值範圍或集合。

  • 算術運算符+,-,*,/,%, 和 `` ` 用於涉及數值欄位的計算。

  • 邏輯運算符AND,OR, 和NOT 或 '&&'、'||'、'~'、'!' 將多個條件結合成複雜的表達式。

範例:依顏色篩選

若要在標量欄位color 中找出具有三原色(紅色、綠色或藍色)的實體,請使用下列篩選表達式。

filter='color in ["red", "green", "blue"]'

範例:篩選 JSON 欄位

Milvus 允許在 JSON 欄位中參考鍵。例如,如果您有一個 JSON 欄位product ,其鍵為pricemodel ,並希望找到具有特定型號和價格低於 1,850 的產品,請使用此過濾表達式。

filter='product["model"] == "JSN-087" and product["price"] < 1850'

範例:篩選陣列欄位

如果您有一個包含溫度記錄的陣列欄位history_temperatures ,並且想要找出第 10 個記錄溫度超過 23°C 的天文台,請使用此表達式。

filter='history_temperatures[10] > 23'

有關這些基本運算符的詳細資訊,請參閱基本運算符

篩選表達式範本

使用中日韓字符進行篩選時,由於其字符集較大且編碼存在差異,處理過程可能會更加複雜。這可能會導致效能變慢,尤其是使用IN 運算符時。

Milvus 引入了篩選表達式模板,以優化處理中日韓字符時的效能。透過將動態值從篩選表達式中分離出來,查詢引擎可以更有效率地處理參數插入。

範例

要查找居住在 「北京」(Beijing)或 「上海」(Shanghai)的 25 歲以上的個人,請使用以下模板表達式。

filter = "age > 25 and city in ['北京', '上海']"

為了提高效能,請使用這個帶參數的變體。

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

此方法可減少解析開銷,並提高查詢速度。如需詳細資訊,請參閱篩選模板

特定資料類型的運算符號

Milvus 為特定資料類型提供進階過濾運算子,例如 JSON、ARRAY 和 VARCHAR 欄位。

JSON 特定欄位運算符號

Milvus 為查詢 JSON 欄位提供進階運算子,可在複雜的 JSON 結構中進行精確過濾。

JSON_CONTAINS(identifier, jsonExpr):檢查字段中是否存在 JSON 表達式。

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains(tags, "sale")'

JSON_CONTAINS_ALL(identifier, jsonExpr):確保 JSON 表達式的所有元素都存在。

# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter='json_contains_all(tags, ["electronics", "sale", "new"])'

JSON_CONTAINS_ANY(identifier, jsonExpr):篩選 JSON 表達式中至少存在一個元素的實體。

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains_any(tags, ["electronics", "new", "clearance"])'

有關 JSON 運算符的詳細資訊,請參閱JSON 運算符

ARRAY 特定欄位運算符號

Milvus 為陣列欄位提供進階過濾運算符,例如ARRAY_CONTAINS,ARRAY_CONTAINS_ALL,ARRAY_CONTAINS_ANY, 和ARRAY_LENGTH ,可對陣列資料進行精細控制。

ARRAY_CONTAINS:過濾包含特定元素的實體。

filter="ARRAY_CONTAINS(history_temperatures, 23)"

ARRAY_CONTAINS_ALL:篩選列表中所有元素都存在的實體。

filter="ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])"

ARRAY_CONTAINS_ANY:篩選包含清單中任何元素的實體。

filter="ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])"

ARRAY_LENGTH:根據陣列的長度進行篩選。

filter="ARRAY_LENGTH(history_temperatures) < 10"

有關陣列運算元的詳細資訊,請參閱ARRAY 運算元

VARCHAR 特定欄位運算符號

Text_Match 運算符允許根據特定查詢字詞進行精確的文件檢索。它對於結合標量篩選與向量相似性搜尋的篩選搜尋特別有用。與語意搜尋不同,Text Match 著重於精確的詞彙出現。

Milvus 使用 Tantivy 來支援倒置索引和基於詞彙的文字搜尋。過程包括

  1. 分析器:對輸入文字進行標記化和處理。

  2. 建立索引:建立倒置索引,將唯一的標記對應到文件。

如需詳細資訊,請參閱「文字匹配」。

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?