• Tentang Milvus
  • Memulai
  • Konsep
  • Panduan Pengguna
    • Koleksi
    • Bidang Skema & Data
    • Menyisipkan & Menghapus
    • Indeks
    • Pencarian
    • Penyematan & Pemeringkatan Ulang
    • Optimalisasi Penyimpanan
  • Impor Data
  • Alat AI
  • Panduan Administrasi
  • Peralatan
  • Integrasi
  • Tutorial
  • Pertanyaan Umum
  • API Reference

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 ke SPARSE_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 dengan DAAT_MAXSCORE dan DAAT_WAND, TAAT_NAIVE menawarkan 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_NAIVE secara 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

inverted_index_algo

Algoritme yang digunakan untuk membangun dan melakukan kueri indeks. Ini menentukan bagaimana indeks memproses kueri.

"DAAT_MAXSCORE" (default), "DAAT_WAND", "TAAT_NAIVE"

Gunakan "DAAT_MAXSCORE" untuk skenario dengan nilai k yang tinggi atau kueri dengan banyak istilah, yang dapat mengambil manfaat dari melewatkan dokumen yang tidak kompetitif.

Pilih "DAAT_WAND" untuk kueri dengan nilai k kecil atau kueri pendek untuk memanfaatkan pelompatan yang lebih efisien.

Gunakan "TAAT_NAIVE" jika penyesuaian dinamis terhadap perubahan koleksi (misalnya, avgdl) diperlukan.

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

drop_ratio_search

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 0.2) dapat mengurangi noise dan memfokuskan pencarian pada komponen yang lebih signifikan, yang dapat meningkatkan presisi dan efisiensi. Namun, menurunkan lebih banyak nilai juga dapat mengurangi recall dengan mengecualikan sinyal yang mungkin relevan. Pilihlah nilai yang menyeimbangkan antara recall dan akurasi untuk beban kerja Anda.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?