Satuan 4 / 11

Strategi Pengambilan: Top-k, Hybrid, Pemeringkatan Ulang

Keuntungan:

  • Menerapkan pencarian hybrid yang menggabungkan pemilihan top-k dan pencarian semantik dan kata kunci
  • Meningkatkan akurasi pencarian pertama dengan pemeringkatan ulang
  • Membuat pertanyaan sulit lebih mudah dicari dengan teknik seperti transformasi kueri dan HyDE

Anda merobek-robek dokumen dengan baik dan memasukkannya ke dalam database vektor. Sekarang pekerjaan sebenarnya: mengambil bagian yang tepat ketika pengguna mengajukan pertanyaan. Ini disebut pengambilan dan merupakan tulang punggung kualitas RAG. Ingat ungkapan "Kualitas pengambilan = kualitas RAG"; Unit ini merupakan seni untuk meningkatkan kualitas tersebut. Kami akan membahas teknik praktis mulai dari pemilihan top-k hingga pencarian hibrid, dari pemeringkatan ulang hingga transformasi kueri.

Top-k: Berapa Banyak Barang yang Akan Kami Bawa?

Pengaturan paling dasar: berapa banyak potongan (k) yang akan dikembalikan dari pencarian. Jika Anda membawa lebih sedikit (k=1) ada risiko tinggi kehilangan bagian yang benar; Jika Anda menambahkan terlalu banyak (k=20), hal ini akan menambah noise pada model dan biaya token akan meningkat.

Bedakan antara dua konsep. Ingat: tingkat pengambilan bagian yang benar. Presisi: tingkat relevansi apa yang diambil. Meningkatkan k meningkatkan perolehan tetapi menurunkan presisi. Tujuannya adalah untuk menyeimbangkan keduanya.

atas-k

Dampak

situasi yang cocok

1-3

Presisi tinggi, risiko meleset

Pertanyaan sederhana dengan satu jawaban

4-8

Saldo; sebagian besar skenario

RAG perusahaan umum

10-20

Ingatan yang lebih tinggi, kebisingan meningkat

Dengan pemeringkatan ulang (di bawah)

Tip: Pola umum dan kuat: ambil lebar (k=20), lalu persempit dengan pemeringkatan ulang (4 teratas). Dengan cara ini Anda tidak akan melewatkan apa pun dan memberikan konteks yang jelas pada model.

Pencarian Hibrid: Kekuatan Dua Pencarian

Pencarian semantik (vektor) menangkap maknanya tetapi melewatkan beberapa hal: kode produk lengkap ("XR-4471"), singkatan langka, nama yang tepat, nomor versi. Untuk tugas pencocokan tepat ini, pencarian kata kunci kuno—terutama algoritma klasik yang disebut BM25—sangat bagus.

Pencarian hibrid menggabungkan keduanya: pencarian semantik dan kata kunci berfungsi, menggabungkan hasilnya. Jadi, dalam pertanyaan seperti "Masa garansi

Penggabungan biasanya dilakukan dengan RRF (Reciprocal Rank Fusion): trek yang lebih tinggi di kedua daftar akan maju.

# Pengambilan hibrid (konseptual)sem = vector_search(question, k=20) # Meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # menggabungkan keduanya, 8 teratas

Pemeringkatan ulang: Tiket Kedua dan Lebih Cerdas

Panggilan pertama bisa saja cepat namun kasar. Pemeringkatan ulang memberi skor pada kandidat yang dikembalikan pada pencarian pertama satu per satu dengan model yang lebih kuat (biasanya cross-encoder — model yang membaca pertanyaan dan bagian secara bersamaan dan menilai relevansinya) dan memindahkan kandidat yang paling relevan ke atas.

Logikanya begini: pencarian pertama menetapkan sejumlah besar kandidat untuk dipanggil kembali (20 kandidat), pemeringkatan ulang memilih 4 yang terbaik untuk presisi. Pendekatan dua tahap ini jauh lebih akurat dibandingkan pencarian satu tahap. Perlu penundaan dan pemrosesan tambahan; Keuntungannya adalah peningkatan kualitas yang signifikan.

# Pengambilan dua tahap (konseptual)kandidat = hybrid_search(pertanyaan, k=20) # luas, skor cepat = reranker.score(pertanyaan, kandidat) # skor relevansi untuk setiap konteks kandidat = diberi peringkat.peringkat()[:4] # 4 teratas

Mengubah Kueri

Terkadang masalahnya bukan pada pencarian, tetapi pada pertanyaan itu sendiri. Jika pengguna bertanya “bagaimana dengan pekerja jarak jauh?” ', hal ini tidak dapat dicapai sendirian (tidak jelas apa yang diperuntukkan bagi pekerja jarak jauh). Berikut adalah teknik transformasi kueri:

  • Tulis ulang: Gunakan riwayat percakapan untuk menjadikan pertanyaan mandiri: "Apa saja hak pekerja jarak jauh untuk mendapatkan cuti tahunan?"
  • Multi-kueri: Hasilkan 3 ekspresi berbeda dari pertanyaan yang sama, telusuri semuanya, gabungkan hasilnya. Kata-kata yang berbeda menemukan bagian yang berbeda.
  • HyDE (Hypothetical Document Embeddings): Pertama cetak "kemungkinan jawaban" untuk model, lalu sematkan dan cari jawaban imajiner tersebut. Jawaban khayalan terkadang ditemukan lebih baik karena kata-katanya lebih mirip dengan dokumen sebenarnya.

# Multi-query (konseptual)variants = model.uret("Ekspresikan pertanyaan ini dalam 3 cara berbeda: " + question)tum_sonuc = []untuk v dalam varian: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

Pengambilan Lemah / Pengambilan Kuat

Lemah (satu tahap, hanya semantik, konstanta k=3):

hasil = vector_search(pertanyaan, k=3)# Masalah: kode produk hilang, tidak dapat memasukkan bagian 3 yang benar pada soal sulit.

Kuat (hibrida + widek + pemeringkatan ulang + multi-kueri jika perlu):

kandidat = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, kandidat).first(4)# Baik kecocokan persis maupun maknanya ditangkap; Ini berlaku untuk 4 model terbaik.

Tiga Kasus Mini

Kasus 1 — Kode produk lolos. Pencarian semantik murni pada tim dukungan tidak dapat menemukan "RTX-9080" kata demi kata dalam pertanyaan "Kesalahan driver RTX-9080"; Ia pun memboyong produk lain dengan nama serupa. Ketika penelusuran hibrid ditambahkan, pencocokan kode persis terjadi dan tingkat pengembalian artikel yang benar meningkat dari 58% menjadi 92%.

Kasus 2 — Perbedaan pemeringkatan ulang. Seorang paralegal bekerja dengan k=5 tetapi item yang benar sering kali adalah 7-10. Dia tetap berada di barisan. Ketika k=20 + pemeringkatan ulang diperkenalkan, tingkat artikel yang benar berada di 3 teratas meningkat dari 61% menjadi 94%; Latensi hanya meningkat 300 ms — sebuah kompromi yang dapat diterima.

Kasus 3 — Pertanyaan lanjutan tanpa konteks. Di asisten SDM, pengguna bertanya “bagaimana dengan pekerja paruh waktu?” Ketika saya bertanya, sistem membawa bagian yang tidak relevan. Dengan menulis ulang kueri (menghilangkan konteks "cuti tahunan" dari masa lalu dan menambahkan "Karyawan paruh waktu berhak atas cuti tahunan"), tingkat jawaban yang benar meningkat dari 40% menjadi 86%.

Kesalahan umum

  • Hanya mengandalkan pencarian semantik: Kode produk, singkatan, nama diri tidak ada; Tambahkan hibrida.
  • Menjaga k terlalu kecil: Bagian yang benar tidak dapat masuk daftar; buatlah lebar dan persempit dengan peringkat ulang.
  • Jangan pernah berpikir untuk menentukan peringkat ulang: Pencarian pertama tidak sopan; Smart pass kedua secara signifikan meningkatkan kualitas.
  • Mencari pertanyaan lanjutan apa adanya: Pertanyaan tanpa konteks mencari yang tidak ada artinya; menulis kembali.
  • Meningkatkan k secara membabi buta (tanpa pemeringkatan ulang): Model dipenuhi dengan noise, respons terdistorsi, dan biaya meningkat.
Hati-hati: Setiap teknik menambah biaya dan penundaan. Multi-kueri berarti pencarian 3 kali lipat, pemeringkatan ulang berarti panggilan model tambahan. Mulailah dengan hybrid sederhana + k yang masuk akal terlebih dahulu; Ukur dan tambahkan teknik berat jika benar-benar diperlukan. Menambah tanpa mengukur.

Singkatnya

  • Top-k adalah keseimbangan antara perolehan dan presisi; Umumnya 4-8 adalah awal yang baik.
  • Pencarian hibrid menggabungkan pencarian semantik dengan pencarian kata kunci (BM25); Memulihkan kecocokan persis.
  • Pemeringkatan ulang akan menilai ulang kandidat dari pencarian awal yang luas dengan model yang kuat dan memilih yang terbaik.
  • Transformasi kueri (penulisan ulang, multi-kueri, HyDE) membuat pertanyaan sulit dan bebas konteks dapat dicari.
  • Pola yang kuat: pengambilan luas → penggabungan dengan hibrida → sempit dengan pemeringkatan ulang; tetapi tambahkan setiap teknik dengan mengukurnya.

Tugas aplikasi

Siapkan 6 soal sulit dengan data dari unit sebelumnya: minimal 2 memerlukan kecocokan persis (kode produk, singkatan, tanggal), 2 semantik (topik sama dengan kata berbeda), 2 soal lanjutan tanpa konteks. (1) Pertama-tama anggaplah setiap pertanyaan sebagai pencarian semantik murni dan tandai secara manual bagian mana yang akan muncul. (2) Evaluasi ulang soal yang sama dengan hybrid dan rangking ulang ditambah. (3) Tulis ulang pertanyaan lanjutan tanpa konteks. Catat dalam bentuk tabel teknik mana yang membedakan jenis pertanyaan.

daftar periksa

  • [ ] Saya tahu top-k adalah keseimbangan presisi penarikan dan rentang awal yang masuk akal.
  • [ ] Saya dapat menjelaskan mengapa penelusuran hibrid memulihkan kecocokan persis.
  • [ ] Saya dapat menerapkan logika dua langkah pemeringkatan ulang (luas → pintar sempit).
  • [ ] Saya menyadari perlunya menulis ulang pertanyaan lanjutan tanpa konteks.
  • [ ] Saya tegaskan bahwa saya menambahkan teknik berat dengan mengukur, bukan dengan mengukur.