AI Sözlüğü
Orta· ~2 dk okuma#bm25#tf-idf#search

BM25

Best Matching 25 — Klasik Arama Skoru

Anahtar kelime aramasında bir dokümanın bir sorguya ne kadar alakalı olduğunu hesaplayan klasik formül. TF × IDF'nin gelişmiş hali.

BM25 — TF × IDF KLASİĞİTFTerim Sıklığı"GDPR" geçti:4 kezdaha çok geçen→ daha alakalı×IDFTers Dök. Sıklığı"GDPR" dokümanlarda:12 / 10Knadir = ayırt edici→ daha değerli=ALAKA SKORU8.4→ üstte sıralaElasticsearch, Lucene, OpenSearch — hepsinin altında BM25 (1994)
Tanım

BM25 (Best Matching 25), 1994'te Stephen Robertson ve ekibi tarafından geliştirilen, geleneksel arama motorlarının çekirdeğinde çalışan bir alaka skoru formülüdür. Modern AI çağında bile hibrit arama ve RAG sistemlerinin önemli bir parçasıdır.

Mantığı iki bileşenden oluşur: - TF (Term Frequency): arama kelimesi dokümanda kaç kez geçiyor? Çok geçen → daha alakalı. - IDF (Inverse Document Frequency): kelime tüm dokümanlarda ne kadar nadir? Az dokümanda geçen → daha ayırt edici.

BM25, naive TF×IDF'nin üstüne iki düzeltme ekler: doluluk doygunluğu (uzun dokümanı haksız öne çıkarma) ve doküman uzunluk normalizasyonu (kısa doküman + tam terim eşleşmesi → yüksek skor).

Elasticsearch, OpenSearch, Lucene, Solr — hepsi default arama algoritması olarak BM25 kullanır. Postgres'in tsvector da benzer bir TF-IDF yaklaşımı.

Benzetme

Bir kitabın senin sorguna ne kadar alakalı olduğunu anlamanın matematiksel yolu. "TF": "kanser" kelimesi kaç sayfada geçiyor? Çok geçiyorsa konu o. "IDF": "kanser" kelimesi tüm kütüphanede nadir mi yoksa her kitapta mı? Eğer her kitapta varsa ayırt etmiyor. İkisi birlikte: alaka skoru.

Gerçek dünyadan örnek

Sorgu: "GDPR Madde 17 silme hakkı" Korpus: 10000 yasal doküman.

BM25 hesabı (basitleştirilmiş): - Doc A: "GDPR" geçiyor (TF=8, IDF yüksek), "Madde 17" geçiyor (TF=3, IDF çok yüksek), "silme" geçmiyor → skor: 12.4 - Doc B: "GDPR" var (TF=2), "silme" var (TF=15), "Madde 17" yok → skor: 6.8 - Doc C: tüm terimler var, ama 500 sayfalık genel rapor (uzun) → skor: 9.1 (uzunluk düzeltmesi nedeniyle)

Sıralama: A > C > B. Doc A en alakalı çünkü tam terim eşleşmesi + nadir IDF skorları + makul uzunluk.

Ne zaman kullan
  • Hibrit arama — vektör araması yanında BM25 her zaman bulundur
  • Tam-terim arama (kod, ürün kodları, yasal madde numaraları)
  • Düşük kaynak ortamı — embedding model gerekmeden çalışır
  • Açıklanabilir arama — neden o sonuç döndüğünü gösterebilirsin
  • Multilingual ortam — vektör model dilinden bağımsız
Ne zaman kullanma
  • Sadece anlamsal benzerlik gerekiyor (eş anlamlılar, parafraz)
  • Kelime sırası önemli (BM25 kelimeleri torba olarak ele alır)
  • Çok kısa dokümanlar (TF anlamsızlaşır)
  • Kullanıcı yazım hatası yapıyorsa (BM25 toleranssız)
Sık yapılan hatalar

Tek başına yetmez (modern bağlamda)

BM25 'compliance' arayan kullanıcıya 'uyum' geçen dokümanı getirmez. Hibrit (BM25 + vektör) yaklaşımı standart pratik. Sadece BM25'e güvenmek 30 yıl geride kalmak.

Stop word'leri ihmal etmek

İngilizce'de 'the', 'a', Türkçe'de 'bir', 'ile' yüksek TF, düşük IDF — BM25 doğal olarak filtreler ama yanlış konfig gürültü üretebilir. Dile özel stop word listesi şart.

Stemming yapmamak

'Çalış', 'çalışma', 'çalıştı' farklı token sayılırsa TF düşer. Snowball, Zemberek (TR) gibi stemmerlar şart. Aksi halde alakalı dokümanları kaçırırsın.