- Yazar, metin embedding'lerini kullanarak 40 milyondan fazla Hacker News gönderisi ve yorumunu analiz eden bir proje yürütüyor
- Projenin temel hedefi gelişmiş arama, öneri ve analiz işlevleri sunmaktı
- Bunun için Hacker News API'siyle veriler toplandı ve web sayfası taramasıyla ek bağlam elde edildi
- Toplanan verilerden metin embedding'leri üretildi ve bunlar UMAP kullanılarak 2D uzaya haritalandı
- Haritalanan veriler temel alınarak etkileşimli bir "Hacker News Universe" haritası oluşturuldu
- Ayrıca embedding'ler kullanılarak anlamsal arama, otomatik sanal topluluklar, popülerlik/duygu analizi gibi işlevler hayata geçirildi
- Büyük ölçekli veri işleme için GPU kümesi kullanıldı ve kullanıcı deneyimini iyileştirmek için edge sunucuları dağıtıldı
Hacker News verilerinin toplanması
- Hacker News API'si kullanılarak 40 milyondan fazla gönderi ve yorum verisi toplandı
- API yanıtları yavaş olduğu için paralel işleme amacıyla Node.js tabanlı bir servis geliştirildi
- Gönderi puanları -1'in altına düşmüyor ve yorum puanları API üzerinden görülemiyor
- Bazı gönderi ve yorumların başlığı ile gövdesi boş durumda (muhtemelen moderatör tarafından düzenlenmiş)
- Yorum ID'sinin üst yorumdan daha küçük olduğu durumlar da var (muhtemelen moderatör yorum ağacını taşımış)
Metin embedding'lerinin oluşturulması
- Yalnızca başlıklar, gönderileri anlamsal olarak temsil etmek için yeterli olmadığından web sayfası taramasıyla ek bağlam elde edildi
- Metin embedding'i üretmek yüksek performanslı GPU gerektiriyor ve 40 milyon girdiyi işlemek neredeyse 1 yıl sürebiliyor
- RunPod kullanılarak düşük maliyetli bir GPU kümesi kuruldu; db-rpc ve queued geliştirilerek dağıtık işleme verimliliği artırıldı
- 150 GPU kullanılarak 40 milyon metnin embedding'i birkaç saat içinde üretildi
Web sayfası taramasıyla ek bağlam elde etme
- Yalnızca gönderi başlıklarıyla embedding kalitesi iyi olmadığından, bağlantı verilen web sayfaları taranarak ek bağlam elde edildi
- Crawler Rust ile yazıldı ve Node.js sürümüne kıyasla 10 kat daha yüksek performans sağladı
- Çok sayıda bağlantı bozuk olduğu için (link rot), Internet Archive API'si kullanılarak kurtarma yapıldı
- Sonuçta 4 milyon sayfanın %5'inden azı getirilemedi
Geliştirilmiş metin embedding'leri üretimi
- Tüm web sayfasını girdi olarak kullanmak için
jina-embeddings-v2-small-en modeline geçildi
- Bağlamı yetersiz gönderiler, üst yorumlar eklenerek tamamlandı
- Yorumlar için, hiyerarşik yapı dikkate alınarak üst ata yorumlar da girdiye dahil edildi
UMAP ile boyut indirgeme
- UMAP kullanılarak 1024 boyutlu embedding'ler 2 boyutlu uzaya indirildi
- Boyut indirgeme için PyNNDescent grafiği ve özgün embedding'ler gerekiyor
- Yüksek boyutlu 1 milyon girdinin işlenmesi 96 çekirdekli CPU'da yaklaşık 1,5 saat sürüyor
- Boyut indirgeme sonucunda ilgi alanları ve popülerlik dağılımı görselleştirilebildi
Kosinüs benzerliği
- Embedding'ler arası benzerlik hesabında yaygın olarak kosinüs mesafesi kullanılır
- Kosinüs mesafesi, vektörler arasındaki açı farkını gösterir ve Öklid mesafesinin aksine vektör büyüklüğünden etkilenmez
- Bu, metin benzerliği hesabı için uygundur; çünkü uzun ve yoğun tartışmalar olsa bile konu benzerse yakın haritalanmalıdır
- Kosinüs benzerliği hesabı matris çarpımıyla kolayca uygulanabilir
Hacker News Universe haritasının oluşturulması
- Embedding'ler temel alınarak Google Maps benzeri etkileşimli bir Hacker News haritası yapıldı
- Yakınlaştırma/uzaklaştırmada görünen nokta sayısının ayarlanması, bazı noktalara etiket eklenmesi ve tıklayınca ayrıntı gösterilmesi gibi özellikler destekleniyor
- Milyonlarca noktayı tarayıcıya tek seferde göndermek pratik olmadığından, tile'lama ve LOD ile kademeli yükleme uygulandı
- Her tile en fazla 1500 nokta içeriyor ve boyut 20KB altında tutuluyor; bölgesel yoğunluk gözetilerek çeşitlilik sağlanıyor
- Web uygulaması Canvas ve WebWorker ile geliştirildi; harita işlevleri Google Maps'ten esinlenerek benzer biçimde uygulandı
Görsel efektlerin eklenmesi
- Gerçek haritalardaki gibi landmark'lar, sınırlar ve arazi detayları eklenerek sürükleyicilik ve yön duygusu iyileştirildi
- Nokta yoğunluğuna göre parlaklık konturları çizilerek HN'de ilginin yoğun olduğu bölgeler gösterildi
- Gaussian blur ile yumuşak konturlar çizildi ve SVG'ye dönüştürülerek bozulmayan vektör görseller üretildi
- Temsili konuları gösteren "şehirler" eklenerek belirli bölgelere yönlendirme sağlandı
Arama işlevinin test edilmesi
- Anlamsal embedding tabanlı arama, anahtar kelime aramasına kıyasla daha ilgili ve daha çeşitli sonuçlar gösteriyor
- Soru biçimindeki sorguları da iyi anlıyor ve tam eşleşen kelimeler olmasa bile benzer konuları bulabiliyor
- HN gönderilerinin yüksek kalitesi sayesinde arama sonuçlarında da içgörülü ve faydalı bilgiler öne çıkıyor
- Sonuç sıralamasında yalnızca ilgililik değil, gönderi puanı ve zaman ağırlığı da kullanılarak güvenilirlik ve güncellik hesaba katılıyor
Otomatik sanal topluluk oluşturma
- Anahtar kelimelerle sanal topluluklar oluşturularak ilgi alanına uygun gönderi kümeleri anında görülebiliyor
- Yalnızca gönderiler değil, ilgi alanıyla ilgili yoğun tartışmaların geçtiği yorumlar da birlikte incelenebiliyor
- Belirli bir konuda etkili ve aktif kullanıcılar da tespit edilebiliyor
- Ön filtreleme yerine sonradan filtreleme kullanıldığında hesaplama maliyeti ciddi biçimde azaltılabiliyor
Büyük ölçekli veri analizi
- Açık kaynak bir duygu analizi modeli kullanılarak 30 milyon yorumun olumlu/olumsuz duygusu sınıflandırıldı
- Konuların duygusunu zaman serisi olarak analiz etmek, önemli olaylara bağlı değişimleri gözlemlemeyi sağlıyor
- Benzerlik ve puanlar kullanılarak konular arasında popülerlik karşılaştırması da yapılabiliyor
- Sorgu hesaplama hızını iyileştirmek için GPU destekli matris işlemleri uygulandı ve işleme hızı büyük ölçüde artırıldı
Gelecek planları
- Gerçek zamanlı veri güncellemeleri desteği
- Derin öğrenme tabanlı öneri sistemi geliştirme
- Yeniden sıralama modeliyle arama kalitesini iyileştirme
- Kullanıcı analizini güçlendirme (benzerlik, uzmanlık vb.)
- Topluluk geri bildirimiyle ek iyileştirme fikirleri çıkarma
GN⁺'un görüşü
- Bu proje, büyük ölçekli veriyi etkili biçimde toplama, temizleme ve analiz etme sürecini iyi gösteren bir örnek. Özellikle paralel işleme ve GPU kullanımı gibi performans optimizasyonu teknikleri etkileyici.
- Metin embedding'leri ve UMAP'i birleştirerek gönderiler arasındaki benzerliği görselleştiren Hacker News haritası son derece yaratıcı ve ilgi çekici bir çıktı. Kullanıcıların ilgi alanlarını keşfetmesine ve yeni bilgi bulmasına büyük katkı sağlayabilir.
- Anlamsal arama ve otomatik topluluk oluşturma özellikleri, Hacker News kullanım deneyimini bir üst seviyeye taşıyabilecek yenilikçi fikirler. Basit anahtar kelime eşleştirmenin ötesine geçip bağlam ve niyeti anlayan arama teknolojilerinin daha geniş kullanıcı kitlesine yayılması umut verici.
- Büyük ölçekli gerçek zamanlı veri işleme hattının kurulması muhtemelen en kritik nokta olacak. Edge computing, in-memory DB gibi performans darboğazlarını giderecek yöntemler dikkatle değerlendirilmeli.
- Güvenilirliği yüksek HN verisi sayesinde duygu analizi sonuçları da yeterince değerli görünüyor. Ancak algoritmik önyargıya dikkat edilmeli ve alana özgü ek eğitim de düşünülebilir.
1 yorum
Başlık eksik görünüyor.