SPARSE_INVERTED_INDEX
Indeks SPARSE_INVERTED_INDEX adalah jenis indeks yang digunakan oleh Milvus untuk menyimpan dan mencari vektor yang jarang secara efisien. Jenis indeks ini memanfaatkan prinsip-prinsip pengindeksan terbalik untuk membuat struktur pencarian yang sangat efisien untuk data yang jarang. Untuk informasi lebih lanjut, lihat INVERTED.
Membangun indeks
Untuk membangun indeks SPARSE_INVERTED_INDEX pada bidang vektor yang jarang di Milvus, gunakan metode add_index(), tentukan index_type, metric_type, dan parameter tambahan untuk indeks.
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
)
Dalam konfigurasi ini:
index_type: Jenis indeks yang akan dibangun. Dalam contoh ini, tetapkan nilainya keSPARSE_INVERTED_INDEX.metric_type: Metrik yang digunakan untuk menghitung kemiripan antara vektor jarang. Nilai yang valid:IP(Inner Product): Mengukur kemiripan menggunakan produk titik.BM25: Biasanya digunakan untuk pencarian teks lengkap, dengan fokus pada kemiripan tekstual.Untuk detail lebih lanjut, lihat Jenis Metrik dan Pencarian Teks Lengkap.
params.inverted_index_algo: Algoritme yang digunakan untuk membangun dan menanyakan indeks. Nilai yang valid:"DAAT_MAXSCORE"(default): Pemrosesan kueri Dokumen per Dokumen (DAAT) yang dioptimalkan menggunakan algoritme MaxScore. MaxScore memberikan kinerja yang lebih baik untuk nilai k yang tinggi atau kueri dengan banyak istilah dengan melewatkan istilah dan dokumen yang kemungkinan besar memiliki dampak minimal. Hal ini dicapai dengan mempartisi istilah ke dalam kelompok penting dan tidak penting berdasarkan nilai dampak maksimumnya, dengan fokus pada istilah yang dapat berkontribusi pada hasil k teratas."DAAT_WAND": Pemrosesan kueri DAAT yang dioptimalkan menggunakan algoritme WAND. WAND mengevaluasi lebih sedikit dokumen yang terkena dampak dengan memanfaatkan nilai dampak maksimum untuk melewatkan dokumen yang tidak kompetitif, tetapi memiliki overhead per hit yang lebih tinggi. Hal ini membuat WAND lebih efisien untuk kueri dengan nilai k kecil atau kueri pendek, di mana melewatkan lebih memungkinkan."TAAT_NAIVE": Pemrosesan kueri dasar Term-at-a-Time (TAAT). Meskipun lebih lambat dibandingkan denganDAAT_MAXSCOREdanDAAT_WAND,TAAT_NAIVEmenawarkan keuntungan yang unik. Tidak seperti algoritme DAAT, yang menggunakan skor dampak maksimum yang di-cache yang tetap statis terlepas dari perubahan pada parameter koleksi global (avgdl),TAAT_NAIVEsecara dinamis beradaptasi dengan perubahan tersebut.
Untuk mempelajari lebih lanjut parameter pembuatan yang tersedia untuk indeks
SPARSE_INVERTED_INDEX, lihat Parameter pembuatan indeks.
Setelah parameter indeks dikonfigurasi, Anda dapat membuat indeks dengan menggunakan metode create_index() secara langsung atau mengoper parameter indeks dalam metode create_collection. Untuk detailnya, lihat Membuat Koleksi.
Mencari di indeks
Setelah indeks dibuat dan entitas dimasukkan, Anda dapat melakukan pencarian kemiripan pada indeks.
# 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
)
Untuk mengetahui lebih lanjut parameter pencarian yang tersedia untuk indeks SPARSE_INVERTED_INDEX, lihat Parameter pencarian khusus indeks.
Parameter indeks
Bagian ini memberikan gambaran umum tentang parameter yang digunakan untuk membangun indeks dan melakukan pencarian pada indeks.
Parameter pembangunan indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di params saat membangun indeks.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|---|---|---|---|
|
Algoritme yang digunakan untuk membangun dan melakukan kueri indeks. Ini menentukan bagaimana indeks memproses kueri. |
|
Gunakan Pilih Gunakan |
Parameter pencarian khusus indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di search_params.params ketika melakukan pencarian di indeks.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|---|---|---|---|
|
Proporsi nilai terkecil yang akan diabaikan selama pencarian, untuk membantu mengurangi noise. |
Fraksi antara 0,0 dan 1,0 (misalnya, 0,2 mengabaikan 20% nilai terkecil) |
Setel parameter ini berdasarkan tingkat sparsitas dan derau vektor kueri Anda. Parameter ini mengontrol proporsi nilai dengan magnitudo rendah yang dibuang selama pencarian. Meningkatkan nilai ini (misalnya, menjadi |