• 關於 Milvus
  • 開始使用
  • 概念
  • 使用者指南
  • 資料匯入
  • AI 工具
  • 管理指南
  • 工具
  • 整合
  • 教學
  • 常見問題
  • API Reference

STL_SORT

STL_SORT 索引是一種專門設計的索引類型,用於通過按排序順序組織資料來增強 Milvus 中數字欄位(INT8、INT16 等)、VARCHAR 欄位或TIMESTAMPTZ 欄位的查詢性能。

如果您經常以下列方式執行查詢,請使用STL_SORT 索引:

  • 使用==,!=,>,<,>=, 和<= 運算符進行比較篩選

  • 使用INLIKE 運算符進行範圍篩選

支援的資料類型

  • 數值欄位 (例如INT8,INT16,INT32,INT64,FLOAT,DOUBLE)。如需詳細資訊,請參閱Boolean & Number

  • VARCHAR 欄位。如需詳細資訊,請參閱字串欄位

  • TIMESTAMPTZ 字段。詳細資訊,請參閱TIMESTAMPTZ 欄位

如何運作

Milvus 分兩個階段實現STL_SORT

  1. 建立索引

    • 在擷取過程中,Milvus 收集索引欄位的所有值。

    • 這些值會使用 C++ STL 的std::sort 以升序排序。

    • 每個值與其實體 ID 配對,排序的陣列會作為索引持久化。

  2. 加速查詢

    • 在查詢時,Milvus 在排序陣列上使用二元搜尋(std::lower_boundstd::upper_bound) 。

    • 對於相等值,Milvus 可以快速找到所有匹配值。

    • 對於範圍,Milvus 會定位開始和結束位置,並傳回其間的所有值。

    • 匹配的實體 ID 會傳送到查詢執行器,以進行最終結果的組合。

這將查詢複雜度從O(n)(完整掃描)降低到O(log n + m),其中m是匹配的數量。

建立 STL_SORT 索引

您可以在數值或TIMESTAMPTZ 欄位上建立STL_SORT 索引。不需要額外的參數。

下面的範例顯示如何在TIMESTAMPTZ 欄位上建立STL_SORT 索引:

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530") # Replace with your server address

# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema

# Prepare index parameters
index_params = client.prepare_index_params()

# Add RTREE index on the "tsz" field
index_params.add_index(
    field_name="tsz",
    index_type="STL_SORT",   # Index for TIMESTAMPTZ
    index_name="tsz_index",  # Optional, name your index
    params={}                # No extra params needed
)

# Create the index on the collection
client.create_index(
    collection_name="tsz_demo",
    index_params=index_params
)

刪除索引

使用drop_index() 方法從集合中移除現有的索引。

client.drop_index(
    collection_name="tsz_demo",   # Name of the collection
    index_name="tsz_index" # Name of the index to drop
)

使用注意事項

  • 欄位類型:適用於數值和TIMESTAMPTZ 欄位。有關資料類型的詳細資訊,請參閱Boolean & NumberTIMESTAMPTZ 欄位

  • 參數:不需要索引參數。

  • 不支援記憶體映射: STL_SORT 不支援記憶體映射模式。

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?