Penilaian relevansi dalam pencarian hibrid menggunakan Reciprocal Rank Fusion (RRF)

Note

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Reciprocal Rank Fusion (RRF) adalah algoritma yang mengevaluasi skor pencarian dari beberapa hasil yang diberi peringkat sebelumnya untuk menghasilkan satu tataan hasil terpadu. Dalam Pencarian Azure AI, RRF digunakan saat dua atau beberapa kueri dijalankan secara paralel, seperti kueri hibrid dan beberapa kueri vektor. Setiap kueri menghasilkan sekumpulan hasil berperingkat, dan RRF menggabungkan serta menyeragamkan peringkat tersebut menjadi satu kumpulan hasil 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. Pendekatan ini dapat membantu meningkatkan kualitas keseluruhan dan keandalan peringkat akhir, membuatnya lebih berguna untuk tugas menggabungkan beberapa hasil pencarian yang diurutkan.

Cara kerja pemeringkatan 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:

  1. Dapatkan hasil pencarian yang ditata dari beberapa kueri yang berjalan secara paralel.

  2. Tetapkan skor peringkat timbal balik untuk hasil di setiap daftar peringkat. RRF menghasilkan @search.score baru untuk setiap kecocokan dalam setiap kumpulan hasil. Untuk setiap dokumen dalam hasil pencarian, mesin menetapkan skor peringkat timbal balik berdasarkan posisinya dalam daftar. Skor dihitung sebagai 1/(rank + k), di mana rank adalah posisi dokumen dalam daftar dan k merupakan konstanta. Eksperimen menunjukkan algoritma berkinerja terbaik saat Anda mengatur k ke nilai kecil, seperti 60. Nilai ini k adalah konstanta dalam algoritma RRF dan sepenuhnya terpisah dari k yang mengontrol jumlah tetangga terdekat.

  3. Gabungkan skor. Untuk setiap dokumen, mesin menjumlahkan skor peringkat timbal balik yang diperoleh dari setiap sistem pencarian, menghasilkan skor gabungan untuk setiap dokumen.

  4. Mesin memberi peringkat dokumen berdasarkan skor gabungan dan mengurutkannya. Daftar yang dihasilkan adalah peringkat gabungan.

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.

Tabel 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 Pencarian Azure AI.

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 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 subskor:

  • Gunakan REST API Pencarian Dokumen atau paket Azure SDK yang menyediakan fitur tersebut.

  • Ubah permintaan kueri, menambahkan parameter baru debug yang diatur ke vector, semantic jika menggunakan ranker semantik, atau all.

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=2026-04-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 akan dikalikan dengan faktor pembobotan yang meningkatkan atau menurunkan skor. Nilai default adalah 1.0, yang berarti tidak ada pembobotan dan skor awal digunakan apa adanya dalam penskoran 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 dominan dalam keseluruhan skor RRF.

Dalam contoh ini, @search.score nilai (tertimbang) masuk 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. Secara default, 50 kecocokan dengan peringkat tertinggi dari kumpulan hasil terpadu akan dikembalikan.

Seringkali, mesin pencari menemukan lebih banyak hasil daripada top dan k. Untuk menampilkan lebih banyak hasil, gunakan parameter paginasi top, skip, dan next. Paginasi adalah metode untuk menentukan jumlah hasil pada setiap halaman logis dan menelusuri seluruh payload. 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.