管理向量Indexes
更新時間:
本篇為您介紹如何在Milvus中為向量字段創建索引,以實現對向量元數據的有效過濾。向量索引專注于通過先進的索引結構和算法(如IVF、HNSW等),有效壓縮向量空間并加速在海量數據中定位與查詢向量最相似的數據點,極大地提升了諸如圖像識別、語音檢索、推薦系統等應用場景中的召回率與響應速度。
背景信息
Milvus支持多種索引類型以實現高效的相似性檢索,并提供了三種度量方式來計算向量之間的距離,包括Cosine Similarity(COSINE)、Euclidean Distance(L2)和Inner Product(IP)。建議在經常用于查詢的向量字段和標量字段上創建索引,以優化檢索性能。
前提條件
已在本地客戶端成功安裝了PyMilvus庫,并將其更新至當前最新版本。
如果您尚未在本地客戶端安裝PyMilvus庫,或者需要將其更新至當前最新版本,您可以執行以下命令。
pip install --upgrade pymilvus
已創建Milvus實例,請參見詳情快速創建Milvus實例。
前期準備
在索引管理之前,您需要先創建好Collection。在創建Collection時,如果在請求中明確指定創建并立即加載索引(index
),您需要同時聲明向量字段的維度和度量類型(dimension
與metric_type
)或提供與索引相關的參數。以下代碼片段并未包含這些參數,因此創建的collection
將不具備索引,且不會被自動加載至內存。
聲明向量字段的維度和metric_type屬性。
聲明schema和index相關參數。
from pymilvus import MilvusClient, DataType
client = MilvusClient(
uri="http://c-xxxx.milvus.aliyuncs.com:19530", # Milvus實例的公網地址。
token="<yourUsername>:<yourPassword>", # 登錄Milvus實例的用戶名和密碼。
db_name="default" # 待連接的數據庫名稱,本文示例為默認的default。
)
schema = MilvusClient.create_schema(
auto_id=False,
enable_dynamic_field=True,
)
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vec", datatype=DataType.FLOAT_VECTOR, dim=5)
client.create_collection(
collection_name="<yourCollectioNname>",
schema=schema,
)
創建索引
您可以調用create_index
函數指定所需的index
參數來創建索引。
index_params = MilvusClient.prepare_index_params()
# 定義索引參數。
index_params.add_index(
field_name="vec", # 指定向量字段名,例如"vec"。
metric_type="L2", # 設置度量類型,例如L2。
index_type="IVF_PQ", # 設置索引類型,例如IVF_PQ。
index_name="vector_index" # 根據實際情況設置索引名稱。
)
# 創建索引。
client.create_index(
collection_name="<yourCollectionname>",
index_params=index_params
)
查看索引
res = client.describe_index(
collection_name="<yourCollectionname>",
index_name="<yourIndexname>"
)
print(res)
刪除索引
client.drop_index(
collection_name="<yourCollectionname>",
index_name="<yourIndexname>"
)
文檔內容是否對您有幫助?