Vektör İndeksini Oluşturma
Bu rehber, Milvus'ta vektör endeksini nasıl oluşturacağınızı açıklar.
Vektör endeksi, vektör benzerlik aramasını hızlandırmak için kullanılan bir meta veri düzenleme birimidir. Vektörler üzerinde endeks oluşturulmadan önce, Milvus brute-force (anlamsız kuvvet) arama yapacaktır.
Varsayılan olarak, Milvus 1.024'ten az satıra sahip segmentleri endekslemez.
Aşağıdaki örnek, 1024 kümesi olan IVF_FLAT endeksini Euclidean (L2) mesafesi kullanarak nasıl oluşturacağını gösterir. Senaryonuza uygun endeks ve metrik türünü seçebilirsiniz.
Endeks Parametrelerini Hazırlama
Endeks parametrelerini hazırlamak için aşağıdaki adımları izleyin:
index_params = {
"metric_type":"L2",
"index_type":"IVF_FLAT",
"params":{"nlist":1024}
}
Parametre | Açıklama | Seçenekler |
---|---|---|
metric_type |
Vektör benzerliğini ölçmek için kullanılan metrik türü. | Ondalık sayılar için:- L2 (Euclidean mesafesi)- IP (iç çarpım)- COSINE (kosinüs benzerliği)İkili vektörler için:- JACCARD (Jaccard mesafesi)- HAMMING (Hamming mesafesi) |
index_type |
Vektör aramasını hızlandırmak için kullanılan endeks türü. | Ondalık sayılar için:- FLAT (FLAT)- IVF_FLAT (IVF_FLAT)- IVF_SQ8 (IVF_SQ8)- IVF_PQ (IVF_PQ)- GPU_IVF_FLAT* (GPU_IVF_FLAT)- GPU_IVF_PQ*> (GPU_IVF_PQ)- HNSW (HNSW)- DISKANN* (DISKANN)İkili vektörler için:- BIN_FLAT (BIN_FLAT)- BIN_IVF_FLAT (BIN_IVF_FLAT) |
params |
Endeks için belirli inşa parametreleri. | Daha fazla bilgi için, İç Bellek ve Diskte Endeksleme'ye bakın. |
- DISKANN belirli önkoşullara sahiptir. Daha fazla bilgi için, Diskte Endeksleme'ye bakın.
- GPU_IVF_FLAT ve GPU_IVF_PQ yalnızca GPU desteği etkinleştirilmiş Milvus kurulumlarında mevcuttur.
Endeks Oluşturma
Vektör alanının adını ve endeks parametrelerini belirterek endeksi oluşturun.
from pymilvus import Collection, utility
collection = Collection("book")
collection.create_index(
field_name="book_intro",
index_params=index_params
)
utility.index_building_progress("book")
Parametre | Açıklama |
---|---|
field_name |
Üzerinde endeks oluşturulacak vektör alanının adı. |
index_params |
Oluşturulacak endeksin parametreleri. |
Skaler Endeks Oluşturma
Vektörlerin aksine, skalerler yalnızca büyüklüğe sahiptir ve yönleri yoktur. Milvus, bireysel sayıları ve karakter dizilerini skalerler olarak kabul eder. Aşağıda, Milvus'taki skaler alanlar için mevcut veri tiplerinin bir listesi bulunmaktadır.
Milvus v2.1.0'dan itibaren, karma aramalarda öznitelik filtrelemeyi hızlandırmak için skaler alanlarda bir endeks oluşturabilirsiniz. Skaler alan endekslemesi hakkında daha fazla bilgi için buraya bakabilirsiniz.
Not: "Buraya" için olan bağlantı, orijinal belgede belirtilen gerçek bağlantı ile değiştirilmelidir.
Endeks Oluşturma
Skaler bir alanda endeks oluştururken, herhangi bir endeks parametresi ayarlamak zorunda değilsiniz. Skaler alanın endeks adı için varsayılan değer default_idx
'dir, ardından endekslenen alanın adı gelir. İstenirse başka uygun değerlere de ayarlayabilirsiniz.
Aşağıdaki kod parçacığı, var olan book
adlı bir koleksiyonun zaten var olduğunu ve dize alanı book_name
üzerinde bir endeks oluşturulması gerektiğini varsayar.
from pymilvus import Collection
collection = Collection("book")
collection.create_index(
field_name="book_name",
index_name="scalar_index",
)
collection.load()
Endeks oluşturulduğunda, aşağıda gösterildiği gibi vektör benzerlik aramasında bu dize alanı için bir boolean ifade ekleyebilirsiniz:
search_param = {
"data": [[0.1, 0.2]],
"anns_field": "book_intro",
"param": {"metric_type": "L2", "params": {"nprobe": 10}},
"limit": 2,
"expr": "book_name like \"Hello%\"",
}
res = collection.search(**search_param)
Endeks Silme
from pymilvus import Collection
collection = Collection("book") # Var olan bir koleksiyon alın.
collection.drop_index()