sparse_inverted_index
SPARSE_INVERTED_INDEX 索引是 Milvus 用來有效儲存和搜尋稀疏向量的一種索引類型。此索引類型利用倒轉索引的原理,為稀疏資料建立高效率的搜尋結構。如需詳細資訊,請參閱INVERTED。
建立索引
要在 Milvus 中的稀疏向量場上建立SPARSE_INVERTED_INDEX 索引,請使用add_index() 方法,指定index_type,metric_type, 以及索引的其他參數。
from pymilvus import MilvusClient
# Prepare index building params
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
field_name="your_sparse_vector_field_name", # Name of the vector field to be indexed
index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
index_name="sparse_inverted_index", # Name of the index to create
metric_type="IP", # Metric type used to measure similarity
params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)
在此設定中
index_type:要建立的索引類型。在本範例中,設定值為SPARSE_INVERTED_INDEX。metric_type:用於計算稀疏向量之間相似性的度量。有效值:params.inverted_index_algo:用於建立和查詢索引的演算法。有效值:"DAAT_MAXSCORE"(預設):使用 MaxScore 演算法的最佳化 Document-at-a-Time (DAAT) 查詢處理。MaxScore 可跳過可能影響最小的詞彙和文件,為高k值或包含許多詞彙的查詢提供更好的效能。為了達到這個目的,MaxScore 會根據最大影響分數,將詞彙分為必要和非必要兩組,並將重點放在對 top-k 結果有貢獻的詞彙上。"DAAT_WAND":使用 WAND 演算法優化 DAAT 查詢處理。WAND 利用最大影響分數跳過非競爭性文件,評估較少的命中文件,但每次命中的開銷較高。這使得 WAND 對於k值較小的查詢或較短的查詢更有效率,在這些情況下跳過是較可行的。"TAAT_NAIVE":Basic Term-at-a-Time (TAAT) 查詢處理。雖然與DAAT_MAXSCORE和DAAT_WAND相比較慢,但TAAT_NAIVE提供了獨特的優勢。DAAT 演算法使用快取的最大影響分數,不論全域收集參數 (avgdl) 如何變更,這些分數都會保持靜態,而TAAT_NAIVE則不同,它會動態適應這些變更。
若要瞭解
SPARSE_INVERTED_INDEX索引可用的更多建立參數,請參閱索引建立參數。
索引參數設定完成後,您可以直接使用create_index() 方法或在create_collection 方法中傳入索引參數,以建立索引。如需詳細資訊,請參閱建立集合。
在索引上搜尋
索引建立且實體插入後,您就可以在索引上執行相似性搜尋。
# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field", # Vector field name
data=query_vector, # Query vector
limit=3, # TopK results to return
)
要瞭解SPARSE_INVERTED_INDEX 索引可用的更多搜尋參數,請參閱特定於索引的搜尋參數。
索引參數
本節概述用於建立索引和在索引上執行搜尋的參數。
索引建立參數
下表列出了建立索引時可在params 中設定的參數。
參數 |
說明 |
值範圍 |
調整建議 |
|---|---|---|---|
|
用於建立和查詢索引的演算法。它決定索引如何處理查詢。 |
|
使用 對於 k 值較小的查詢或較短的查詢,請選擇 如果需要根據資料集變更 (例如 avgdl) 進行動態調整,請使用 |
特定於索引的搜尋參數
下表列出在索引上搜尋時,可在search_params.params 中設定的參數。
參數 |
說明 |
值範圍 |
調整建議 |
|---|---|---|---|
|
搜尋時忽略最小值的比例,有助於減少雜訊。 |
介於 0.0 和 1.0 之間的比例 (例如,0.2 會忽略最小 20% 的值) |
根據查詢向量的稀疏程度和雜訊程度調整此參數。 此參數可控制搜尋過程中丟棄的低幅度值比例。增加此值 (例如,增加到 |