Makine Öğrenmesi·3 dk okuma·

Üretim Düzeyinde Bir Makine Öğrenimi Aday Sıralama Sistemi Geliştirdim

Paylaş
Üretim Düzeyinde Bir Makine Öğrenimi Aday Sıralama Sistemi Geliştirdim

Meydan Okuma

Redrob India Data & AI Challenge kapsamında, bir Kıdemli ML/AI Mühendisi pozisyonu için 100.000 aday profilini inceleyip en uygun 100 adayı gerekçeleriyle sıralayan bir yapay zekâ sistemi kurmam gerekiyordu. Resmi bir makine öğrenimi eğitimi almamış, 2 yıllık bir bulut ve backend mühendisi olarak bu problemi doğrudan "inşa ederek öğrenme" yaklaşımıyla ele aldım.

Anahtar Kelime Eşleştirme Neden Başarısız Olur?

Geleneksel anahtar kelime eşleştirme sistemleri, pratikte ciddi açıklar barındırır:

  • Anlamsal Uyuşmazlık: "Vektör arama hattı geliştirdi" ifadesi ile "embedding tabanlı arama sistemi kurdu" ifadesi aynı tecrübeyi anlatır. Ancak BM25 gibi standart kelime eşleyiciler, kelimeler birebir örtüşmediği için bunları tamamen alakasız görür.
  • Özgeçmiş Şişirme: CV'sine anahtar kelime yığan vasat bir aday, gerçekte üretim ortamına değer katan özlü ve başarılı bir mühendisten daha yüksek puan alabilir.
  • İnsan Tutarsızlığı: İşe alım uzmanları bile ihbar süresi, konum, GitHub aktivitesi, şirket prestiji ve teknik derinlik gibi 20'den fazla sinyali yüzlerce profil boyunca zihinlerinde adil biçimde tartamaz.

Mimari: Tek Bir Sinyale Bağımlı Kalmayın

Sistemin temel felsefesi hiçbir sinyale tek başına güvenmemektir:

  • BM25 anlamsal eşleşmeleri kaçırır.
  • Vektör benzerliği anahtar kelime ağırlıklı rolleri gözden kaçırabilir.
  • Kariyer bağlamı olmayan yetenek eşleştirme, sadece popüler kavramları toplayanları ödüllendirir.
  • Davranışsal sinyalleri dikkate almayan kariyer puanlaması, kağıt üzerinde mükemmel görünen fakat 6 ay ihbar süresi isteyen adayları filtreleyemez.

Bu doğrultuda, her sinyalin birbirini denetlediği 4 bileşenli hibrit bir yapı tasarlandı.

Formül

Nihai sıralama skoru, hibrit sinyaller ile filtreleyici katsayıların çarpımıyla elde edilir: skor = (0.20 × BM25 + 0.30 × FAISS + 0.20 × Yetenek + 0.30 × Kariyer Yörüngesi) × tecrübe_faktörü × ml_ürün_yılı_faktörü × eşik_çarpanı × davranışsal_filtre

Aşama 1: Her Şeyi Önceden Hesaplayın (~1.7 Saat)

İşlem hattı operasyonel verimlilik için ikiye ayrılmıştır:

  • Aşama 1 (Ağır İş): 100.000 adayın tüm metinlerinin vektörleştirilmesi bir defalık çalıştırılır ve diske kaydedilir (~1.7 saat).
  • Aşama 2 (Hızlı Sıralama): Tamamen matematiksel işlemlerden oluşur ve CPU üzerinde 2 dakikanın altında tamamlanır.

Sinyal 1: BM25 (Ağırlık: 0.20)

BM25Okapi ile iş tanımındaki "vector search", "FAISS", "learning to rank" gibi teknik terimlerden bir sorgu oluşturuldu. Açık eşleşmeleri yakalamada hızlı olsa da manipülasyona açık yapısı nedeniyle ağırlığı %20 ile sınırlandırıldı.

Sinyal 2: FAISS Kosinüs Benzerliği (Ağırlık: 0.30)

100.000 adayın kariyer özeti BAAI/bge-small-en-v1.5 modeliyle 384 boyutlu vektörlere dönüştürülüp FAISS IndexFlatIP ile arandı. all-MiniLM-L6-v2 yerine BGE-small seçilmesinin sebebi, MTEB kıyaslamasında 56.9'a karşı 61.7 (%8.4 artış) skor üretmesi ve asimetrik kodlama desteğidir (iş tanımı sorgusuna özel arama öneki eklenir).

Yazılım Geliştiriciler İçin Pratik Çıkarımlar

  • Hibrit Arama Zorunluluğu: Üretim ortamlarında leksikal (BM25) ve semantik (vektör) aramayı birleştirmek en dengeli arama doğruluğunu sağlar.
  • İki Aşamalı Mimari Tasarımı: Ağır çıkarım işlemlerini önceden hesaplayıp sıralamayı saf matematiksel formüllere indirgemek, büyük veri setlerinde gecikmeyi saatlerden dakikalara düşürür.

Orijinal kaynağa buradan ulaşabilirsiniz.


Bu konuyu derinlemesine öğrenmek isterseniz: Reranking Modelleri: Serving ve Entegrasyon modülüne göz atın.

Paylaş

Bu konuyu daha derinlemesine öğrenmek ister misin?

Edumints'teki ücretsiz kursları incele ve bugün başla.

Kurslara Göz At →