24 puan yazan GN⁺ 2024-04-18 | 1 yorum | WhatsApp'ta paylaş

Uygulama geliştiricileri için embedding kullanım rehberi

  • Vektör embedding'ler, çeşitli girdiler arasındaki benzerliği ölçmede etkili olduğu için arama ve öneri özellikleri için uygundur. Fransızca veya Japonca gibi farklı dillerde de iyi çalışır.
  • Pgvector, embedding'leri depolayıp sorgulayabilen bir Postgres eklentisidir; yeni bir servis eklemeden SQL mantığı ile embedding işlemlerini birleştirmeyi mümkün kıldığı için güçlüdür.
  • LLM'lerden farklı olarak embedding kullanımı, genel olarak deterministik kod yazmaya benzer bir his verir.

İkon arama ve öneri projesi geliştirme

  • Pgvector kurulumu sonrasında, ikon verilerini embedding vektörlerine kodlama stratejisi oluşturulur.
  • OpenAI'nin text-embedding-3-small modeli kullanılır.
  • Arama terimi ile her ikon embedding'i arasındaki benzerlik cosine similarity ile ölçülür.
  • Embedding aramasına ikon seti filtreleme gibi iş mantıkları eklenir.
  • Arama terimine yönelik ikon tıklama verilerini kullanan bir sıralama algoritması örneği sunulur.
  • Seçilen ikona benzer ikonlar önermek için embedding karşılaştırmasından yararlanılır.

Uygulama yaklaşımının özeti

  • Vektör veritabanı olarak pgvector/Postgres seçilir. MongoDB gibi başka seçenekler de vardır.
  • Geliştirme için Typescript kullanılır ve drizzle-orm tercih edilir. Diğer diller ve framework'ler için de çeşitli kütüphaneler bulunur.
  • Uygulama Neon üzerinde barındırılır. fly.io, Supabase gibi yönetilen DB barındırma hizmetleri de kullanılabilir.
  • OpenAI'nin text-embedding-3-small embedding modeli kullanılır. Huggingface liderlik tablosundan başka modeller de seçilebilir.
  • İkon özellikleri içinde arama açısından en ilgili olanlar key-value çiftleri olarak embedding'e dönüştürülür.
  • Uzaklık fonksiyonu olarak cosine similarity kullanılır. Pgvector ayrıca l2 distance ve inner product da destekler.
  • Arama sonuçları en fazla ilk 50 ile sınırlandırılır. Uzaklık aralığı kullanılıyorsa geniş tutulması ve limit ile birlikte kullanılması önerilir.

GN⁺ görüşü

  • Çoğu projede pgvector gibi mevcut veritabanına vektör özelliği ekleyen bir yaklaşım yeterli olacaktır. Ayrı bir vektör veritabanı ancak büyük ölçekli hizmetlerde gerekli görünüyor.
  • Embedding aramasına iş mantığını doğal biçimde ekleyebilmek büyük bir avantaj. SQL'in gücünden doğrudan yararlanılabiliyor.
  • Sıralama algoritmasına kullanıcı geri bildirim verisini yansıtma fikri iyi görünüyor. Arama doğruluğunu sürekli iyileştirmeyi sağlayabilir.
  • LLM'lere kıyasla embedding tabanlı hizmetlerde çalışma biçimi daha nettir ve hata ayıklama daha kolaydır; bu da bunları gerçek hizmetlere uygulamayı çok daha pratik hale getirebilir.
  • Çeşitli açık kaynak embedding modelleri yayımlandığı için, kendi modelini geliştirmek zor olan durumlarda bile yüksek kaliteli embedding'lerden kolayca yararlanmak mümkündür.

1 yorum

 
GN⁺ 2024-04-18
Hacker News görüşleri

Hacker News yorum özeti

RAG modelini kullanarak belge embedding'i ve benzerlik aramasının pratikliği

  • sentence-transformers ve faiss kütüphaneleriyle belge embedding'i ve benzerlik araması kolayca uygulanabilir
  • New York Times'ın öneri sisteminden daha iyi performans göstermek ilginç bir proje olabilir
  • James Briggs'in YouTube kanalında bununla ilgili iyi açıklamalar bulunuyor

Embedding'in temel kavramlarını anlama

  • AI/derin öğrenme olmadan da kelimelere benzersiz indeksler verip frekanslarına göre değer biriktirerek embedding oluşturulabilir
  • Kosinüs benzerliği gibi yöntemlerle benzerlik araması da yapılabilir
  • Derin öğrenme tabanlı embedding'ler, bu temel kavramların üzerine kelime/token filtreleme, eş anlamlı işleme gibi özellikler eklenmiş halidir

Embedding oluşturma sürecine dair ayrıntılı açıklama eksikliği

Eşsesli kelimeleri işlemenin zorluğu

  • Eşsesli kelimeler yüzünden arama sonuçları niyet edilenden farklı çıkabiliyor (ör. "king" diye aratınca ruler(cetvel) ikonu çıkması gibi)
  • İlgili ikonları bulabilme avantajının yanında eğlenceli bir zorluk da olabilir

Vektör veritabanı olmadan da embedding kullanımı mümkün

  • Büyük veriyle çalışan prodüksiyon ortamlarında gecikme gibi nedenlerle vektör veritabanı önemli olsa da, oyuncak proje düzeyinde Numpy vb. ile basitçe uygulanabilir
  • Numpy'nin @ operatörüyle normalize edilmiş sorgu vektörü ile kayıt matrisi arasında iç çarpım alınarak benzerlik hesaplanabilir

Yerel ortamda embedding mantığını çalıştırma yöntemi

  • OpenAI API'ye bağlı kalmadan yerel ortamda veya veritabanında doğrudan embedding üretmenin yollarına dair merak dile getiriliyor

Teknik dokümantasyon yazımında embedding kullanım potansiyeli

  • ChatGPT'nin ortaya çıkışından sonra teknik dokümantasyon yazarları arasında bunun semantik arama aracı olarak kullanım potansiyeli üzerine aktif tartışmalar var
  • Dokümantasyon için gereken araştırma aşamasında verimliliği artırmaya yardımcı olabilir

Embedding'leri saklama ve kullanma yöntemleri

  • Embedding'ler üretildikten sonra saklanıp ihtiyaç olduğunda yeniden yüklenerek kullanılması yaygındır
  • Basit durumlarda embedding'ler doğrudan dizi olarak da aktarılıp kullanılabilir
  • Zor kısım embedding'leri saklamaktır; özel bir veritabanı şart değildir, SQLite'ın BLOB alanı da kullanılabilir
  • Embedding'lerin "süresi dolması" gibi bir durum yoktur

Yapay zekaya yeni başlayan geliştiriciler için arka plan bilgisinin eksikliği

  • Yazı, embedding veya vektör veritabanı gibi kavramları açıklamadan doğrudan kullanım kısmına geçiyor
  • Yapay zekaya meraklı uygulama geliştiricileri için iyi bir başlangıç noktası arayanlar açısından bu kavramlara giriş yapılması gerekirdi