🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Cari & Beri Peringkat Ulang

  • Pemeringkatan ulang

Pemeringkatan ulang

Milvus memungkinkan kemampuan pencarian hibrida menggunakan API hybrid_search(), yang menggabungkan strategi perangkingan ulang yang canggih untuk menyaring hasil pencarian dari beberapa contoh AnnSearchRequest. Topik ini mencakup proses perankingan ulang, menjelaskan pentingnya dan implementasi strategi perankingan ulang yang berbeda di Milvus.

Gambaran Umum

Gambar berikut mengilustrasikan eksekusi pencarian hybrid di Milvus dan menyoroti peran perangkingan ulang dalam prosesnya.

reranking_process

Perangkingan ulang dalam pencarian hybrid adalah langkah penting yang mengkonsolidasikan hasil dari beberapa bidang vektor, memastikan hasil akhir relevan dan diprioritaskan secara akurat. Saat ini, Milvus menawarkan strategi perankingan ulang ini:

  • WeightedRanker: Pendekatan ini menggabungkan hasil dengan menghitung rata-rata tertimbang skor (atau jarak vektor) dari pencarian vektor yang berbeda. Pendekatan ini memberikan bobot berdasarkan signifikansi setiap bidang vektor.

  • RRFRanker: Strategi ini menggabungkan hasil berdasarkan peringkat mereka di kolom vektor yang berbeda.

Penilaian Tertimbang (WeightedRanker)

Strategi WeightedRanker memberikan bobot yang berbeda untuk hasil dari setiap rute pencarian vektor berdasarkan signifikansi setiap bidang vektor. Strategi pemeringkatan ulang ini diterapkan ketika signifikansi setiap bidang vektor bervariasi, sehingga Anda dapat menekankan bidang vektor tertentu di atas bidang vektor lainnya dengan memberikan bobot yang lebih tinggi. Sebagai contoh, dalam pencarian multimodal, deskripsi teks mungkin dianggap lebih penting daripada distribusi warna pada gambar.

Proses dasar WeightedRanker adalah sebagai berikut:

  • Kumpulkan Skor Selama Pengambilan: Mengumpulkan hasil dan skornya dari berbagai rute pengambilan vektor.

  • Normalisasi Skor: Menormalkan skor dari setiap rute ke rentang [0,1], di mana nilai yang mendekati 1 menunjukkan relevansi yang lebih tinggi. Normalisasi ini sangat penting karena distribusi skor bervariasi dengan jenis metrik yang berbeda. Sebagai contoh, jarak untuk IP berkisar dari [-∞,+∞], sedangkan jarak untuk L2 berkisar dari [0,+∞]. Milvus menggunakan fungsi arctan, yang mengubah nilai ke rentang [0,1] untuk memberikan dasar standar untuk berbagai jenis metrik.

    arctan-function

  • Alokasi Bobot: Menetapkan bobot w𝑖 untuk setiap rute pengambilan vektor. Pengguna menentukan bobot, yang mencerminkan keandalan, akurasi, atau metrik terkait lainnya dari sumber data. Setiap bobot berkisar dari [0,1].

  • Penggabungan Skor: Menghitung rata-rata tertimbang dari skor yang dinormalisasi untuk mendapatkan skor akhir. Hasilnya kemudian diberi peringkat berdasarkan skor tertinggi hingga terendah untuk menghasilkan hasil akhir yang diurutkan.

weighted-reranker perangking-tertimbang

Untuk menggunakan strategi ini, terapkan sebuah contoh WeightedRanker dan tetapkan nilai bobot dengan memasukkan sejumlah argumen numerik.

from pymilvus import WeightedRanker

# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7) 

Perhatikan bahwa:

  • Setiap nilai bobot berkisar dari 0 (paling tidak penting) hingga 1 (paling penting), yang memengaruhi skor agregat akhir.

  • Jumlah total nilai bobot yang disediakan di WeightedRanker harus sama dengan jumlah instance AnnSearchRequest yang telah Anda buat sebelumnya.

  • Perlu dicatat bahwa karena pengukuran yang berbeda dari jenis metrik yang berbeda, kami menormalkan jarak hasil penarikan sehingga berada pada interval [0,1], di mana 0 berarti berbeda dan 1 berarti serupa. Skor akhir adalah jumlah dari nilai bobot dan jarak.

Reciprocal Rank Fusion (RRFRanker)

RRF adalah metode fusi data yang menggabungkan daftar peringkat berdasarkan kebalikan dari peringkat mereka. Ini adalah cara yang efektif untuk menyeimbangkan pengaruh setiap bidang vektor, terutama ketika tidak ada prioritas yang jelas tentang kepentingan. Strategi ini biasanya digunakan ketika Anda ingin memberikan pertimbangan yang sama pada semua bidang vektor atau ketika ada ketidakpastian tentang kepentingan relatif setiap bidang.

Proses dasar RRF adalah sebagai berikut:

  • Kumpulkan Peringkat Selama Pengambilan: Pengambil di beberapa bidang vektor mengambil dan mengurutkan hasil.

  • Penggabungan Peringkat: Algoritme RRF menimbang dan menggabungkan peringkat dari setiap retriever. Rumusnya adalah sebagai berikut:

    rrf-ranker rrf-ranker

    Di sini, 𝑁 mewakili jumlah rute pengambilan yang berbeda, rank𝑖(𝑑) adalah posisi peringkat dokumen yang diambil 𝑑 oleh retriever ke-𝑖, dan 𝑘 adalah parameter perataan, biasanya ditetapkan ke 60.

  • Pemeringkatan Komprehensif: Beri peringkat ulang hasil yang diambil berdasarkan skor gabungan untuk menghasilkan hasil akhir.

Untuk menggunakan strategi ini, gunakan contoh RRFRanker.

from pymilvus import RRFRanker

# Default k value is 60
ranker = RRFRanker()

# Or specify k value
ranker = RRFRanker(k=100)

RRF memungkinkan menyeimbangkan pengaruh di seluruh bidang tanpa menentukan bobot secara eksplisit. Kecocokan teratas yang disepakati oleh beberapa bidang akan diprioritaskan dalam peringkat akhir.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?