Yapay zekaya meraklı uygulama geliştiricileri için iyi bir başlangıç noktası: Embeddings
(bawolf.substack.com)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-smallmodeli kullanılır. - Arama terimi ile her ikon embedding'i arasındaki benzerlik
cosine similarityile ö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-ormtercih 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-smallembedding 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 similaritykullanılır. Pgvector ayrıcal2 distanceveinner productda destekler. - Arama sonuçları en fazla ilk 50 ile sınırlandırılır. Uzaklık aralığı kullanılıyorsa geniş tutulması ve
limitile 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
Hacker News görüşleri
Hacker News yorum özeti
RAG modelini kullanarak belge embedding'i ve benzerlik aramasının pratikliği
sentence-transformersvefaisskütüphaneleriyle belge embedding'i ve benzerlik araması kolayca uygulanabilirEmbedding'in temel kavramlarını anlama
Embedding oluşturma sürecine dair ayrıntılı açıklama eksikliği
They're a bit of a black boxdeniyor ve ayrıntıya girilmiyorEşsesli kelimeleri işlemenin zorluğu
Vektör veritabanı olmadan da embedding kullanımı mümkün
@operatörüyle normalize edilmiş sorgu vektörü ile kayıt matrisi arasında iç çarpım alınarak benzerlik hesaplanabilirYerel ortamda embedding mantığını çalıştırma yöntemi
Teknik dokümantasyon yazımında embedding kullanım potansiyeli
Embedding'leri saklama ve kullanma yöntemleri
Yapay zekaya yeni başlayan geliştiriciler için arka plan bilgisinin eksikliği