Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Reciprocal Rank Fusion (RRF) adalah algoritma yang mengevaluasi skor pencarian dari beberapa hasil yang sebelumnya diberi peringkat untuk menghasilkan tataan hasil terpadu. Di Azure AI Search, RRF digunakan saat dua atau beberapa kueri dijalankan secara paralel. Yaitu, untuk kueri hibrid dan untuk beberapa kueri vektor. Setiap kueri individu menghasilkan set hasil berperingkat, dan RRF menggabungkan dan menyesuaikan peringkat menjadi set hasil tunggal untuk respons kueri.
RRF didasarkan pada konsep peringkat timbal balik, yang merupakan kebalikan dari peringkat dokumen relevan pertama dalam daftar hasil pencarian. Tujuan dari teknik ini adalah untuk memperhitungkan posisi item dalam peringkat asli, dan memberikan kepentingan yang lebih tinggi untuk item yang diberi peringkat lebih tinggi dalam beberapa daftar. Ini dapat membantu meningkatkan kualitas keseluruhan dan keandalan peringkat akhir, membuatnya lebih berguna untuk tugas menggabungkan beberapa hasil pencarian yang diurutkan.
Cara kerja peringkat RRF
RRF bekerja dengan mengambil hasil pencarian dari beberapa metode, menetapkan skor peringkat timbal balik ke setiap dokumen dalam hasil, lalu menggabungkan skor untuk membuat peringkat baru. Konsepnya adalah bahwa dokumen yang muncul di posisi teratas di beberapa metode pencarian cenderung lebih relevan dan harus diberi peringkat lebih tinggi dalam hasil gabungan.
Berikut adalah penjelasan sederhana tentang proses RRF:
Dapatkan hasil pencarian berperingkat dari beberapa kueri yang dijalankan secara paralel.
Tetapkan skor peringkat timbal balik untuk hasil di setiap daftar peringkat. RRF menghasilkan baru
@search.scoreuntuk setiap kecocokan di setiap tataan hasil. Untuk setiap dokumen dalam hasil pencarian, mesin menetapkan skor peringkat timbal balik berdasarkan posisinya dalam daftar. Skor dihitung sebagai1/(rank + k), di manarankadalah posisi dokumen dalam daftar, dankmerupakan konstanta, yang secara eksperimental diamati untuk melakukan yang terbaik jika diatur ke nilai kecil seperti 60. Perhatikan bahwa nilai inikadalah konstanta dalam algoritma RRF dan sepenuhnya terpisah darikyang mengontrol jumlah tetangga terdekat.Gabungkan skor. Untuk setiap dokumen, mesin menjumlahkan skor peringkat timbal balik yang diperoleh dari setiap sistem pencarian, menghasilkan skor gabungan untuk setiap dokumen.
Mesin memberi peringkat dokumen berdasarkan skor gabungan dan mengurutkannya. Daftar yang dihasilkan adalah peringkat menyatu.
Hanya bidang yang ditandai sebagai searchable dalam indeks, atau searchFields dalam kueri, yang digunakan untuk penilaian. Hanya bidang yang ditandai sebagai retrievable, atau bidang yang ditentukan dalam select kueri, yang dikembalikan dalam hasil pencarian, bersama dengan skor pencariannya.
Eksekusi kueri paralel
RRF digunakan kapan saja ada lebih dari satu eksekusi kueri. Contoh berikut mengilustrasikan pola kueri di mana eksekusi kueri paralel terjadi:
- Kueri teks lengkap, ditambah satu kueri vektor (skenario hibrid sederhana), sama dengan dua eksekusi kueri.
- Kueri teks lengkap, ditambah satu kueri vektor yang menargetkan dua bidang vektor, sama dengan tiga eksekusi kueri.
- Kueri teks lengkap, ditambah dua kueri vektor yang menargetkan lima bidang vektor, sama dengan 11 eksekusi kueri
Skor dalam hasil pencarian hibrid
Setiap kali hasil diberi peringkat, @search.score properti berisi nilai yang digunakan untuk mengurutkan hasil. Skor dihasilkan oleh algoritma peringkat yang bervariasi untuk setiap metode. Setiap algoritma memiliki rentang dan besarannya sendiri.
Bagan berikut mengidentifikasi properti penilaian yang dikembalikan pada setiap kecocokan, algoritma, dan rentang skor untuk setiap algoritma peringkat relevansi. Untuk informasi selengkapnya dan diagram alur kerja penilaian, lihat Relevansi di Azure AI Search.
| Metode pencarian | Parameter | Algoritma penilaian | Range |
|---|---|---|---|
| pencarian teks lengkap | @search.score |
Algoritma BM25 | Tidak ada batas atas. |
| pencarian vektor | @search.score |
Algoritma HNSW, menggunakan metrik kesamaan yang ditentukan dalam konfigurasi HNSW. | 0,333 - 1,00 (Kosinus), 0 hingga 1 untuk Euclidean dan DotProduct. |
| pencarian hibrid | @search.score |
Algoritma RRF | Batas atas dibatasi oleh jumlah kueri yang menyatu, dengan setiap kueri berkontribusi maksimum sekitar 1/k ke skor RRF (ini adalah k parameter dalam algoritma RRF, bukan kueri vektor). Misalnya, menggabungkan tiga kueri akan menghasilkan skor RRF yang lebih tinggi daripada jika hanya dua hasil pencarian yang digabungkan. |
| peringkat semantik | @search.rerankerScore |
Peringkat semantik | 0.00 - 4.00 |
Peringkat semantik terjadi setelah penggabungan hasil RRF. Skornya (@search.rerankerScore) selalu dilaporkan secara terpisah dalam respons kueri. Peringkat semantik dapat melakukan rerank teks lengkap dan hasil pencarian hibrid, dengan asumsi hasil tersebut mencakup bidang yang memiliki konten yang kaya secara semantik. Ini dapat mererank kueri vektor murni jika dokumen pencarian menyertakan bidang teks yang berisi konten yang relevan secara semantik.
Memecah skor pencarian ke dalam subskor
Anda dapat mendekonstruksi skor pencarian untuk melihat subskorenya. Untuk kueri vektor, informasi ini dapat membantu Anda menentukan nilai yang sesuai untuk pembobotan vektor atau mengatur ambang batas minimum.
Untuk mendapatkan subskore:
Gunakan REST API Pencarian Dokumen atau paket Azure SDK yang menyediakan fitur tersebut.
Ubah permintaan kueri, menambahkan parameter baru
debugyang diatur kevector,semanticjika menggunakan ranker semantik, atauall.
Berikut adalah contoh kueri hibrid yang mengembalikan subskore dalam mode debug:
POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2025-09-01
{
"vectorQueries": [
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"exhaustive": true,
"k": 10
},
{
"vector": [
-0.009154141,
0.018708462,
. . .
-0.02178128,
-0.00086512347
],
"fields": "DescriptionVector",
"kind": "vector",
"exhaustive": true,
"k": 10
}
],
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelName, Description, Address/City",
"debug": "vector",
"top": 10
}
Skor tertimbang
Anda juga dapat menimbang kueri vektor untuk menambah atau mengurangi kepentingannya dalam kueri hibrid.
Ingat bahwa saat menghitung RRF untuk dokumen tertentu, mesin pencari melihat peringkat dokumen tersebut untuk setiap tataan hasil tempat dokumen muncul. Asumsikan dokumen muncul dalam tiga hasil pencarian terpisah, di mana hasilnya berasal dari dua kueri vektor dan satu teks kueri berpangkat BM25. Posisi dokumen bervariasi dalam setiap hasil.
| Kecocokan ditemukan | Posisi dalam hasil | @search.score | pengali berat | @search.score (tertimbang) |
|---|---|---|---|---|
| hasil vektor satu | posisi 1 | 0.8383955 | 0.5 | 0.41919775 |
| hasil vektor dua | posisi 5 | 0.81514114 | 2.0 | 1.63028228 |
| Hasil BM25 | posisi 10 | 0.8577363 | NA | 0.8577363 |
Posisi dokumen dalam setiap tataan hasil sesuai dengan skor awal, yang ditambahkan untuk membuat skor RRF akhir untuk dokumen tersebut.
Jika Anda menambahkan pembobotan vektor, skor awal tunduk pada pengali pembobotan yang meningkatkan atau mengurangi skor. Defaultnya adalah 1.0, yang berarti tidak ada pembobotan dan skor awal yang digunakan apa adanya dalam penilaian RRF. Namun, jika Anda menambahkan berat 0,5, skor berkurang dan hasilnya menjadi kurang penting dalam peringkat gabungan. Sebaliknya, jika Anda menambahkan bobot 2,0, skor menjadi faktor yang lebih besar dalam skor RRF keseluruhan.
Dalam contoh ini, @search.score nilai (tertimbang) diteruskan ke model peringkat RRF.
Jumlah hasil berperingkat dalam respons kueri hibrid
Secara default, jika Anda tidak menggunakan pagination, mesin pencari mengembalikan 50 kecocokan peringkat tertinggi teratas untuk pencarian teks lengkap, dan kecocokan paling mirip k untuk pencarian vektor. Dalam kueri hibrid, top menentukan jumlah hasil dalam respons. Berdasarkan default, 50 kecocokan peringkat tertinggi teratas dari kumpulan hasil terpadu dikembalikan.
Seringkali, mesin pencari menemukan lebih banyak hasil daripada top dan k. Untuk mengembalikan lebih banyak hasil, gunakan parameter tophalaman , , skipdan next. Penomoran adalah cara Anda menentukan jumlah hasil di setiap halaman logis dan menavigasi melalui payload penuh. Anda dapat mengatur maxTextRecallSize ke nilai yang lebih besar (defaultnya adalah 1.000) untuk mengembalikan lebih banyak hasil dari sisi teks kueri hibrid.
Secara default, pencarian teks lengkap tunduk pada batas maksimum 1.000 kecocokan (lihat batas respons API). Setelah 1.000 kecocokan ditemukan, mesin pencari tidak lagi mencari lebih banyak.
Untuk informasi selengkapnya, lihat Cara bekerja dengan hasil pencarian.