Hacker News, 28 milyon 740 bin yorumu vektör gömme arama veri kümesi olarak sunuyor
(clickhouse.com)- Hacker News veri kümesi 28 milyon 740 bin gönderi ve yorumu kapsar ve her metin, SentenceTransformers all-MiniLM-L6-v2 modeli ile üretilmiş 384 boyutlu bir vektör gömme ile temsil edilir
- Veri, ClickHouse tarafından sağlanan tekil bir Parquet dosyası (S3 bucket) biçiminde yayınlanır ve büyük ölçekli vektör arama uygulamalarınin tasarımı ile performans değerlendirmesinde kullanılabilir
- Örnek SQL kodlarıyla tablo oluşturma, veri yükleme, HNSW tabanlı vektör benzerliği indeksi oluşturma ve arama sorgusu çalıştırma adımları ayrıntılı olarak açıklanır
- Python örneğinde, SentenceTransformers ile sorgu gömmesi oluşturulup, ClickHouse'ta cosineDistance() fonksiyonu ile anlamsal arama gerçekleştirilir
- Sonraki özetleme demo uygulaması, LangChain ve OpenAI GPT-3.5-turbo kullanarak bulunan gönderileri özetler ve kurumsal üretken yapay zeka kullanım senaryolarına genişletme potansiyeli sunar
Hacker News Vektör Arama Veri Kümesi Genel Bakış
- Veri kümesi, Hacker News’in 28 milyon 740 bin gönderi ve yorumunu içerir ve her öğe, SentenceTransformers all-MiniLM-L6-v2 modeli ile üretilmiş 384 boyutlu vektör gömme barındırır
- Gömme, cümle ve paragrafların anlamını yakalamak için yerel bir gömme modeli kullanır
- Bu veri kümesi, kullanıcı tarafından üretilen metin verisine dayalı büyük ölçekli vektör arama uygulamalarının tasarımı, kapasite planlaması ve performans analizinde kullanılabilir
Veri Kümesi Ayrıntıları
- Tüm veri, ClickHouse tarafından sağlanan tek bir Parquet dosyası olarak sunulur ve
https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…adresindeki S3 bucket üzerinden indirilebilir - Kullanıcılara depolama ve bellek gereksinimlerini tahmin etmek için ClickHouse belgelerindeki ANN index kılavuzuna bakmaları önerilir
Veri Yükleme ve İndeks Oluşturma Süreci
hackernewstablosu, gönderi kimliği, metin, vektör, yazar, zaman ve puan gibi çeşitli alanları içerecek şekilde oluşturulur- Veri yükleme şu SQL komutuyla yapılır
INSERT INTO hackernews SELECT * FROM s3('https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…');- Yaklaşık 28 milyon 740 bin satırın eklenmesi birkaç dakika sürer
- Vektör benzerliği indeksi, HNSW algoritması ve cosineDistance kullanılarak oluşturulur
ALTER TABLE hackernews ADD INDEX vector_index vector TYPE vector_similarity('hnsw', 'cosineDistance', 384, 'bf16', 64, 512); ALTER TABLE hackernews MATERIALIZE INDEX vector_index SETTINGS mutations_sync = 2;M=64veef_construction=512ile ayarlanır; CPU çekirdeği sayısına ve depolama bant genişliğine göre indeks oluşturma birkaç dakikadan birkaç saate kadar sürebilir
- İndeks oluştuktan sonra vektör arama sorguları otomatik olarak indeksi kullanır
SELECT id, title, text FROM hackernews ORDER BY cosineDistance(vector, <search vector>) LIMIT 10- İndeksin belleğe yüklenmesi birkaç saniye ile birkaç dakika sürebilir
Python Tabanlı Anlamsal Arama Örneği
- Python betiği, SentenceTransformers ile giriş sorgusunun gömmesini oluşturur ve ClickHouse Connect üzerinden sorguyu çalıştırır
- Benzerlik, giriş vektörü ile veri kümesindeki vektörler arasındaki mesafe için cosineDistance() fonksiyonu kullanılarak hesaplanır
- Örnek çalışmada, "Are OLAP cubes useful" sorgusu için en alakalı 20 gönderi listelenir
- Çıktıda her gönderinin kimliği ve metnin bir kısmı (100 karakter) gösterilir
Özetleme Demo Uygulaması
- ClickHouse ile anlamsal arama ve belge arama örneğinin ardından üretken yapay zeka temelli özetleme uygulaması sunulur
- Ana adımlar
- Kullanıcıdan konu girişi alınır
SentenceTransformers all-MiniLM-L6-v2ile konu gömmesi oluşturulur- ClickHouse'ta vektör benzerliği aramasıyla ilgili gönderiler/yorumlar getirilir
- Sonuçlar,
LangChainve OpenAIgpt-3.5-turboile özetlenir
- Örnek çalışmada "ClickHouse performance experiences" konusu için arama yapıldıktan sonra GPT-3.5 özet üretir
- Özette, ClickHouse'ın performans, basitlik, verimlilik ve büyük ölçekli analize uygunluğu vurgulanır; ayrıca bazı DML ve yedekleme zorlukları da belirtilir
- Bu uygulama, müşteri duygu analizi, teknik destek otomasyonu, toplantı tutanaklarının özetlenmesi, finansal belge analizi gibi çok çeşitli kurumsal üretken yapay zeka kullanım senaryolarına genişletilebilir
Özetleme Uygulaması Kod Yapısı
- Python kodunda
SentenceTransformer,clickhouse_connect,LangChain,ChatOpenAIgibi bileşenler kullanılır - Arama sonuçları birleştirilip GPT-3.5 modeline iletilir ve en fazla 10 cümlelik bir özet üretilir
- Giriş metninin token sayısına göre, işleme için
stuffveyamap_reducezincirlerinden biri seçilir - Sonuç şu formatta yazdırılır: “Summary from chatgpt-3.5:”
1 yorum
Hacker News görüşleri
Yeni vektör gömme veri seti için all-MiniLM-L6-v2 kullanılmaması öneriliyor
Bu model, ilk dönem eğitimlerde sık kullanılan sentence-transformers tabanlı pratik bir modeldi, ancak artık eskidiği için güncel mimari ve eğitim pipeline’larını yansıtmıyor
Bağlam uzunluğu da 512 ile kısa. Bunun yerine EmbeddingGemma öneriliyor. 2k context window destekliyor ve benchmark performansı çok iyi
Yavaş ama değer. Orta yol olarak bge-base-en-v1.5 veya nomic-embed-text-v1.5 da iyi seçenekler
Açık ağırlıklar, çok dilli destek ve 32k bağlam sunuyor
Yaklaşık 70MB olduğu için indirmesi kolay. EmbeddingGemma ise 300MB’ın üzerinde, bu da yük oluşturuyor
100MB altı kullanılabilir bir model olup olmadığı merak ediliyor
“Gemma lisansı” belirsiz olduğu için hukuki inceleme gerektirebilir
Google “kısıtlı kullanım” listesini değiştirirse, kullanımın her an yasaklanma riski var
Örneğin Cohere vs OpenAI small vs OpenAI large gibi karşılaştırmalar yeterince yok
Hangi ölçüte göre benchmark yapılması gerektiği de belirsiz
CPU’da da iyi çalışıyor
2023’ten beri tüm HN yorumları BigQuery üzerinde embed edilip hn.fiodorov.es adresinde barındırılıyor
Kaynak kodu GitHub üzerinde açık
“Who’s Gary Marcus” aratıldığında Google’a kıyasla daha olumsuz sonuçlar çıkmış
İşletme maliyetinin ne kadar olduğu merak ediliyor
HN’nin Privacy ve Data Policy metnine göre yorumların ticari kullanımı yasak
Vektör temsilleri de teknik olarak türev eser sayılabilir
site içeriğinin ticari amaçla kopyalanması, dağıtılması, değiştirilmesi ve türevlerinin üretilmesi yasak
Ayrıca data mining, scraping gibi faaliyetler de yasaklanmış durumda
Kendi hafızamın harici destek aracı olarak bir vektör veritabanı oluşturmanın hakkım olduğunu düşünüyorum
HN’de “benzer cümleleri göster” gibi bir sağ tık menüsü olsa güzel olurdu
Daha önce aynı önerinin yapılıp yapılmadığı da görülebilirdi
Aynı tartışmanın başka gönderilerde ne kadar tekrarlandığı görülebilir ve
yazmak üzere olunan şeye geçmişte nasıl tepki verildiği önceden kontrol edilebilir
Bir tür semantic thread fikrine dönüşebilir
Acaba vektör arama vs düz metin arama karşılaştırması yapan bir makale var mı diye merak ediliyor
Vektör aramanın gerçekten buna değip değmediği sorgulanıyor
HN gönderileri ile embedding metadata’sının toplamda 55GB olduğu söyleniyor; Parquet dosyaları için bunun doğru olup olmadığı soruluyor
Eğer yorumların ticari model eğitimi için kullanılmasının tek amacı buysa, bu biraz buruk hissettiriyor
Bunun ileride katılım isteğini etkileyebileceği söyleniyor
Eskiden yabancılara yardım ediyormuş gibi geliyordu, şimdi ise hoşlanılmayan insanlara yardım ediliyormuş gibi hissettiriyor
Geleceğin dev modelinin bir yerlerinde sözlerinin hafifçe yankılanabileceği düşünülüyor
Keşke hesap/yorum silme özelliği olsaydı
Fiilen kalıcı veri hâline geldi ve bir gün yorumlarım antik bilgelik gibi kalabilir
Yapılacaklar listesinden bir madde silinmiş (bu proje sayesinde)
Diyelim ki bir arkadaş soruyor… Buraya yorum yazınca bu vektöre dönüştürülüyor mu?