İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
DersOrta32 dakikaGenerative AI Engineer · 11. ders

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. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 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.

python
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.

  1. 1Sorgu hazırlığı

    Kısaltmalar açılır, yetki ve tarih filtreleri eklenir.

  2. 2Paralel arama

    Anlamsal ve lexical arama aynı anda, geniş n ile koşar.

  3. 3Birleştirme

    Karşılıklı sıra birleştirmesiyle tek liste üretilir.

  4. 4Yeniden sıralama

    İlk 20-50 aday cross-encoder ile puanlanır.

  5. 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

  1. 120 gerçek sorgu ve her biri için doğru kabul edilen parçaları elle işaretleyin.
  2. 2Yalnızca anlamsal arama ile Recall@5 ölçün.
  3. 3Yalnızca lexical arama ile Recall@5 ölçün.
  4. 4Karşılıklı sıra birleştirmesiyle hibrit kurun ve Recall@5 ölçün.
  5. 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.