Hibrit arama kurmak
Anlamsal ve lexical aramayı birleştirme.
Önkoşul: Embedding, Retrieval-Augmented Generation
BU DERSİN SONUNDA
- Anlamsal ve lexical aramanın hangi sorgu tiplerinde güçlü olduğunu ayırt edebilmek
- İki sıralama listesini karşılıklı sıra birleştirmesiyle birleştirebilmek
- Yeniden sıralayıcının ne zaman değer kattığını değerlendirebilmek
- Geri getirme kalitesini ölçülebilir bir metriğe bağlayabilmek
- 1
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 5
Proje
Rotadaki projeye katkı
Kısa cevap
Hibrit arama, anlamsal (vektör) ve lexical (kelime) aramayı paralel koşturup iki sonuç listesini tek listede birleştirmektir. Kurumsal belge setlerinde neredeyse her zaman tek yöntemden iyi sonuç verir, çünkü iki yöntemin zayıf noktaları farklıdır.
Teori: iki farklı körlük#
Lexical arama kelimeyi görür, anlamı görmez: "fatura" arayan kişiye "irsaliye" getirmez. Anlamsal arama anlamı görür, kelimeyi görmez: "madde 7/b" arayan kişiye anlamca yakın ama numarası farklı maddeleri getirir. İki yöntem birbirinin körlüğünü kapatır.
Birleştirme: neden puan değil sıra?#
İki yöntemin ürettiği puanlar aynı ölçekte değil: kosinüs benzerliği sınırlı bir aralıkta, lexical puan ise belge uzunluğuna ve terim seyrekliğine göre serbestçe değişir. Bu yüzden puanları doğrudan toplamak yanıltıcı. Karşılıklı sıra birleştirmesi (reciprocal rank fusion) bunun yerine yalnızca sıraları kullanır.
def karsilikli_sira_birlestir(listeler, k=60):
"""Her belgenin, bulunduğu listelerdeki sıralarının tersini toplar.
listeler: her biri sıralı belge kimliği listesi (en iyi en başta)
k: küçük sıraların baskınlığını yumuşatan sabit
"""
puanlar = {}
for liste in listeler:
for sira, kimlik in enumerate(liste, start=1):
puanlar[kimlik] = puanlar.get(kimlik, 0) + 1 / (k + sira)
return sorted(puanlar, key=puanlar.get, reverse=True)
# Kullanım
birlesik = karsilikli_sira_birlestir([
anlamsal_ara(sorgu, n=50),
lexical_ara(sorgu, n=50),
])Yöntemin iki pratik avantajı var: ölçek uyumu gerektirmez ve üçüncü bir sinyal (örneğin başlık eşleşmesi veya güncellik) eklemek için yeni bir liste vermek yeterlidir.
Yeniden sıralama#
Birleştirilmiş listenin ilk 20-50 adayı, bir cross-encoder ile yeniden puanlanabilir. Cross-encoder sorgu ve belgeyi birlikte okur; bu yüzden gömme aramadan daha isabetli ama çok daha yavaştır. Bu nedenle tüm dizine değil yalnızca ilk adaylara uygulanır.
- 1Sorgu hazırlığı
Kısaltmalar açılır, yetki ve tarih filtreleri eklenir.
- 2Paralel arama
Anlamsal ve lexical arama aynı anda, geniş n ile koşar.
- 3Birleştirme
Karşılıklı sıra birleştirmesiyle tek liste üretilir.
- 4Yeniden sıralama
İlk 20-50 aday cross-encoder ile puanlanır.
- 5Bağlam kurma
İlk k parça, kaynak künyesiyle isteme yerleştirilir.
Ölçüm#
- Recall@k: doğru parça ilk k sonuç içinde var mı? RAG için en kritik metrik.
- MRR: doğru parçanın sırasının tersi; üstte olmasını ödüllendirir.
- nDCG: birden çok ilgili parça olduğunda sıralama kalitesini ölçer.
- Boş dönüş oranı: hiç sonuç gelmeyen sorgu yüzdesi; içerik açığının göstergesi.
LAB · UYGULAMALI ALIŞTIRMA
Hibrit aramayı ölçerek kurun
- 120 gerçek sorgu ve her biri için doğru kabul edilen parçaları elle işaretleyin.
- 2Yalnızca anlamsal arama ile Recall@5 ölçün.
- 3Yalnızca lexical arama ile Recall@5 ölçün.
- 4Karşılıklı sıra birleştirmesiyle hibrit kurun ve Recall@5 ölçün.
- 5İlk 30 adaya yeniden sıralayıcı uygulayıp Recall@5 ile gecikmeyi birlikte raporlayın.
Beklenen çıktı
Dört kurulumun Recall@5 ve p95 gecikme karşılaştırması; üretim için seçilen kurulumun gerekçesi.
Sık sorulan sorular
Hibrit arama her zaman daha iyi mi?
Kurumsal belge setlerinde genellikle evet. Ancak yalnızca kavramsal sorguların geldiği, kod ve kimlik içermeyen setlerde tek başına anlamsal arama yeterli olabilir. Kararı kendi sorgu günlüğünüzle verin.
RRF sabiti k neden 60?
Literatürde yaygın bir başlangıç değeri; ilk sıraların aşırı baskın olmasını yumuşatır. Kendi setinizde 10-100 aralığını denemek anlamlı bir ayar çalışmasıdır.
ÖLÇ
RAG Testi
7 soru · 12 dakika · RAG
LEARN
Generative AI Engineer rotasına devam et
Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.
