29 Januari 2026
Tim QueryGen
8 menit baca

Mengapa pencarian AI Anda mungkin melewatkan jawaban yang jelas (dan bagaimana RRF memperbaikinya)

Ketika AI Anda berkata "tidak ditemukan informasi yang relevan" padahal jawabannya ada di pesan Anda, masalahnya bukan AI — tapi bagaimana pencarian hibrida menggabungkan metode perankingan yang berbeda.

Baru-baru ini kami menemukan bug yang membingungkan yang mengilustrasikan dengan sempurna mengapa sistem pencarian hibrida bisa gagal dengan cara yang sangat jelas. Seorang pengguna mengajukan pertanyaan sederhana ke asisten AI-nya, dan meskipun jawaban persisnya ada di riwayat chat, AI dengan percaya diri menyatakan bahwa informasi tersebut tidak ada.

Masalahnya

AI Melewatkan Jawaban yang Jelas

Pertanyaan Pengguna ke AI

"Tanggal berapa yang harus saya cantumkan di perjanjian?"

Riwayat Chat Sebenarnya
Kasih tau tanggal berapa yang harus saya cantumkan di perjanjian
11:57 AM
JAWABANNYA1 Februari cocok. Biar saya bisa mulai kerjakan
12:04 PM
Bagus. Saya akan cantumkan tanggal itu
12:06 PM
RESPONS AI

Saya memeriksa pesan Anda, dan tidak ada penyebutan di mana pun tentang tanggal berapa yang harus dicantumkan di perjanjian — tidak ada pesan yang diambil yang mereferensikan tanggal penandatanganan.

Akar masalah: Ketidakcocokan skala skor

Sistem kami menggunakan pencarian hibrida — menggabungkan dua metode pencarian berbeda untuk mendapatkan yang terbaik dari keduanya:

  • Pencarian Vektor (Semantik): Memahami makna dan konteks. Ideal untuk "temukan pesan tentang ketentuan kontrak" meskipun kata "kontrak" tidak digunakan.
  • BM25 (Kata Kunci): Pencocokan teks klasik. Sempurna untuk menemukan frasa persis seperti "1 Februari" atau nama spesifik.

Masalahnya? Metode-metode ini menggunakan skala skor yang sama sekali berbeda:

Datanya

Ketidakcocokan Skala Skor

Tipe PencarianPesan DitemukanSkorPeringkat Akhir
VEKTOR"Sesuai perjanjian... Eksklusivitas di Nigeria"0.65
#1Jawaban salah
VEKTOR"Ok. Saya akan tandatangani balik dan kirim kembali"0.58
#2Jawaban salah
BM25"1 Februari cocok"0.016
#47Benar tapi terkubur!

Masalahnya: Skor BM25 (0.016) 40x lebih kecil dari Vektor (0.65). Saat diurutkan berdasarkan skor mentah, hasil pencarian kata kunci selalu kalah — bahkan ketika itu adalah jawaban yang benar!

Ketika pengguna bertanya "Tanggal berapa yang harus saya cantumkan di perjanjian?", BM25 menemukan pesan "1 Februari" dengan benar di peringkat #1 (mencocokkan kata kunci yang tepat). Tapi pencarian vektor menempatkannya di peringkat #47 karena secara semantik, membahas tanggal tidak terkait kuat dengan diskusi umum tentang "perjanjian".

Karena kami mengurutkan berdasarkan skor mentah, 0.65 dari Vektor mengalahkan 0.016 dari BM25 setiap saat. Jawaban yang benar terkubur di posisi #47, dan hanya 10 hasil teratas yang dikirim ke AI.

Solusinya: Reciprocal Rank Fusion (RRF)

Solusinya elegan: alih-alih membandingkan skor mentah, bandingkan peringkat. Ini disebut Reciprocal Rank Fusion (RRF), dan formulanya sangat sederhana:

Formula RRF
score = 1/(60 + rankvector) + 1/(60 + rankbm25)

Mengapa ini berhasil: Berada di peringkat #1 di metode pencarian mana pun berkontribusi sama terhadap skor akhir. Konstanta 60 (disebut "k") meredam efek peringkat yang lebih rendah sehingga #1 secara signifikan lebih baik dari #2, tapi #47 tidak jauh berbeda dari #48.

Solusinya

Sebelum vs Sesudah RRF

Sebelum: Diurutkan Berdasarkan SkorRUSAK
#1Eksklusivitas di Nigeria0.65
#2Tandatangani balik dan kirim0.58
...45 hasil lainnya
#471 Februari cocok0.016
Sesudah: Diurutkan Berdasarkan RRFDIPERBAIKI
#11 Februari cocok0.025
#2Eksklusivitas di Nigeria0.016
#3Tandatangani balik dan kirim0.016
...Hasil lainnya

Bagaimana RRF menghitung skor akhir

Mari ikuti perhitungannya untuk pesan "1 Februari":

Metode PencarianPeringkatKontribusi RRF
BM25 (kata kunci)#11/(60+1) = 0.0164
Vektor (semantik)#471/(60+47) = 0.0093
Total Skor RRF0.0257

Bandingkan dengan pesan "Eksklusivitas di Nigeria" yang sebelumnya berada di #1:

Metode PencarianPeringkatKontribusi RRF
Vektor (semantik)#11/(60+1) = 0.0164
BM25 (kata kunci)Tidak ditemukan1/(60+max) = ~0
Total Skor RRF0.0164

Pesan yang berada di #1 di satu metode pencarian (0.0257) sekarang mengalahkan pesan yang berada di #1 di satu metode pencarian tetapi tidak muncul di metode lainnya (0.0164). Adil.

Poin pentingnya

"RRF tidak peduli dengan skor mentah. Yang penting hanya urutan. Berada di peringkat #1 di pencarian kata kunci memiliki bobot yang sama dengan berada di peringkat #1 di pencarian semantik. Hasil yang ditemukan oleh kedua metode mendapat peringkat lebih tinggi."

Apa yang terjadi ketika hasil hanya muncul di satu pencarian?

Untuk metode pencarian di mana hasil tidak muncul, kami memberikan "peringkat maksimum" (jumlah total hasil + 1). Ini berarti:

  • Hasil di kedua pencarian: Mendapat kontribusi dari keduanya, peringkat lebih tinggi
  • Hasil di satu pencarian: Mendapat kontribusi dari satu, ditambah kontribusi minimal dari yang lain
  • Seri dari metode yang sama: Diputuskan oleh peringkat mereka di metode lain

Ini menangani dengan elegan kasus di mana pencarian semantik menemukan pesan yang secara konseptual terkait yang terlewat oleh pencarian kata kunci (dan sebaliknya).

Detail implementasi

Perubahan kodenya langsung. Alih-alih:

// LAMA: Urutkan berdasarkan skor mentah (rusak)
results.sort((a, b) => b.score - a.score);

Sekarang kami melakukan:

// BARU: Hitung skor RRF dari peringkat
const RRF_K = 60;
const vectorRank = vectorRanks.get(id) ?? maxRank;
const bm25Rank = bm25Ranks.get(id) ?? maxRank;
const rrfScore = 1/(RRF_K + vectorRank) + 1/(RRF_K + bm25Rank);

// Urutkan berdasarkan skor RRF
results.sort((a, b) => b.rrfScore - a.rrfScore);

Mengapa ini penting untuk pencarian AI

Sistem pencarian modern sering menggabungkan beberapa metode retrieval:

  • Embedding vektor untuk pemahaman semantik
  • BM25/TF-IDF untuk pencocokan kata kunci yang tepat
  • Retrieval berbasis graf untuk pencarian yang sadar hubungan
  • Sinyal temporal untuk kebaruan

Setiap metode memiliki distribusi skor yang berbeda. RRF menyediakan cara yang solid untuk menggabungkan mereka tanpa perlu menormalisasi skor atau menyetel skema pembobotan yang kompleks.

"Keindahan RRF adalah kesederhanaannya. Tanpa penyetelan hyperparameter selain nilai k (60 bekerja baik dalam praktik). Tanpa normalisasi skor. Hanya peringkat dan sebuah formula."

Hasilnya

Setelah mengimplementasikan RRF, kueri yang sama "Tanggal berapa yang harus saya cantumkan di perjanjian?" sekarang dengan benar mengambil pesan "1 Februari" di bagian atas hasil. AI menemukan jawabannya dengan segera.

Diperbaiki: Pesan dengan kecocokan kata kunci yang tepat sekarang diperingkatkan dengan semestinya bersama hasil yang secara semantik serupa. Jawaban yang benar naik ke atas.

Kesimpulan utama

  • Jangan bandingkan skor mentah antar metode pencarian yang berbeda — mereka berada di skala yang berbeda
  • RRF mengubah skor menjadi peringkat, membuat perbandingan yang adil menjadi mungkin
  • Konstanta k=60 sudah mapan dalam penelitian dan berfungsi di sebagian besar kasus
  • Hasil di beberapa metode pencarian secara alami mendapat peringkat lebih tinggi — yang umumnya benar

Terkadang solusi untuk perilaku AI yang membingungkan bukan ada di AI-nya sendiri — tapi di cara Anda memberikan informasi kepadanya.

Ingin pencarian AI yang lebih cerdas untuk percakapan Anda?

Querygen menggunakan pencarian hibrida canggih dengan RRF untuk memastikan Anda tidak pernah melewatkan informasi penting dalam pesan WhatsApp Anda.

Coba Querygen Gratis