- Embedding’ler, son dönemde teknik yazım alanında devrim niteliğinde gelişme potansiyeli sunuyor
- Girdi metninin boyutundan bağımsız olarak sabit boyutlu sayısal bir dizi döndürme özelliğine sahip
- Bu sayısal dizi sayesinde rastgele metinler arasında matematiksel karşılaştırma yapmak mümkün hale geliyor
- Embedding’ler, çok boyutlu uzayda metin anlamına göre mesafe hesaplıyor ve ilişkili öneriler, anlamsal analiz vb. pek çok kullanım sunuyor
- İleride teknik dokümantasyon sitelerinin embedding verilerini yayımlamasıyla yeni araçların ve topluluk kullanım senaryolarının yaygınlaşması bekleniyor
Makine öğrenimi tabanlı embedding teknolojisine genel bakış
- Makine öğrenimi teknolojilerinde, metin üretim modellerinden farklı olarak embedding’ler, teknik yazım üzerinde dönüştürücü bir etki yaratma potansiyeline sahip
- Son birkaç yılda embedding kullanımı çok daha erişilebilir hale geldi
- Embedding’ler sayesinde teknik yazarlar, farklı metinler arasında anlamsal karşılaştırma ve analiz yapabiliyor
Embedding’ler için sezgi geliştirmek
- Embedding’ler, metni (kelime, cümle, birden çok belge vb.) girdi olarak alıp sabit boyutlu bir sayısal dizi döndürüyor
- Girdi metninin uzunluğundan bağımsız olarak her zaman aynı boyutta dizi verisi üretiliyor
- Bu sayede farklı uzunluktaki rastgele metinler arasında bile matematiksel karşılaştırma olanağı doğuyor
Embedding üretme yöntemi
- Başlıca hizmet sağlayıcılar üzerinden yalnızca birkaç satır kodla embedding üretilebiliyor
- Kullanılan modele göre embedding dizisinin boyutu değişiyor; Gemini için 768, Voyage AI için ise 1024 sayı döndürülüyor
- Sağlayıcıya veya modele göre embedding’lerin anlamı tamamen değiştiği için karşılıklı uyumluluk bulunmuyor
Maliyet ve çevresel etki
- Embedding üretiminin kendisi yüksek maliyetli değil
- Üretim sürecinin, metin üretim modellerine kıyasla daha az hesaplama kaynağı tükettiği tahmin ediliyor; ancak çevresel etki için ileride daha fazla bilgiye ihtiyaç var
Embedding modeli seçme ölçütleri
- En uygun model, büyük hacimli girdi verisini destekleme kapasitesine göre değişiyor
- Voyage AI’nin voyage-3 modeli, 2024 itibarıyla en yüksek girdi sınırını sunuyor
- Kullanım amacı ve gereksinimlere uygun modelin seçilmesi önemli
Çok boyutlu uzay kavramı
- Embedding sayısal dizisindeki her değer, çok boyutlu uzaydaki bir koordinata karşılık gelir ve metnin özellikleri bu uzaydaki anlamsal konumuyla ifade edilir
- Örneğin
king - man + woman ≈ queen gibi işlemler, anlamsal ilişkilerin ifade edilebildiğini gösterir
- Embedding uzayındaki her boyutun özelliği çoğunlukla belirsiz ve soyuttur
- Bu süreç sayesinde makinenin anlam öğrenmesi ve metin anlamını çıkarımlaması mümkün hale gelir
Embedding’leri karşılaştırma ve saklama
- Üretilen embedding’ler, her metin (ör. sayfa vb.) için veritabanı gibi yerlere kaydedilir
- İki embedding arasındaki matematiksel mesafe hesaplaması (lineer cebir kullanarak) ile anlamsal benzerlik değerlendirilebilir
- NumPy, scikit-learn gibi kütüphaneler kullanılarak karmaşık formülleri uygulama yükü azalır
Embedding’lerin uygulama örnekleri
- Teknik dokümantasyon sitelerinde ilgili sayfa öneri özelliğinde embedding’ler etkili biçimde kullanılır
- Her sayfa için embedding üretildikten sonra, sayısal benzerliği yüksek sayfalar arasında anlamsal olarak ilişkili belge önerileri yapılabilir
- Sayfa içeriği her değiştiğinde yalnızca embedding’i yenilemek yeterli olduğundan verimliliği oldukça yüksektir
- Gerçek [Sphinx] dokümantasyonunda uygulanması sonucunda olumlu performans görüldü
Topluluk ve açık veri olasılığı
- Gelecekte dokümantasyon siteleri, REST API veya well-known URI’ler üzerinden embedding verisi sunabilir
- Böylece topluluk, çeşitli uygulama araçları ve hizmetler geliştirebilir
Son söz
- Yüzlerce boyutlu uzay kavramını günlük işle ilişkilendirebilmek ilgi çekici
- Embedding’lerin benimsenmesiyle dokümantasyon bakımı ve özellik genişletme gibi alanlarda çığır açıcı ilerlemeler beklenebilir
1 yorum
Hacker News görüşü
Merhaba, bu yazıyı yazdığım için teşekkür etmek istedim
6 ay önce de benzer bir tartışma olduğunu belirtmek isterim
"Embedding'lerin küçümsendiği" ifadesi, makine öğrenmesiyle uğraşanlardan çok teknik yazarlar için faydalı bir araç olduğunu vurgulamak içindi
Bu yazıda embedding'leri teknik yazımda tam olarak nasıl kullandığıma dair yeterli ayrıntı olmadığının farkındayım
Embedding kullanımıyla ilgili projeler ve blog yazıları hazırlıyorum
Embedding'ler, teknik yazımda çözmesi zor 3 probleme yardımcı olabildiği için önemli
Kullanıcının istediği bilgiyi kolayca bulamaması sorununu embedding'lerle herkese açık biçimde deneyimletebilmek için UX katmanında "semantic scrolling" denedim
Bu, aramadan çok
<details>/<summary>ağaç yapısı içinde kümeler arasında dolaşmak gibi[1] başlangıç noktası, [2] ise tüm koleksiyon (kitaplar, filmler, müzik, anime vb.)
Bağlantıları da paylaşıyorum
Yazının, makine öğrenmesi uzmanlarından çok teknik yazarlara daha çekici gelmesi için içeriğin buna göre kurgulanması iyi olurdu
Örneğin, "daha önce imkânsız olan ölçekte metinler arası bağlantıları keşfedebilirsiniz" kısmı daha ayrıntılı açıklanabilir
Uygulama örneklerini daha başa almak, okuyucuya daha etkili ulaşabilir
Embedding'lerin teknik yazıma doğrudan uygulamasına örnek olarak ilgili bir makale öneriyorum
Bağlantı verildi
Bu yazıyı okuyunca elde edilen çıktının kalitesinin nasıl olduğunu merak ettim
Makine öğrenmesindeki sevilen değerlendirmelere (evals) kadar gitmeden de, kabaca sonuçların makul görünüp görünmediğini bilmek isterim
Yazıyı okudum ama "embedding"in ne olduğuna dair bir açıklama bulamadım
Üçüncü paragrafta nasıl kullanılacağından bahsediliyor ama embedding'in tanımı başta yeterince yok
Yeni başlayan biri için fazla temel bir yazı gibi geldi
Okuduktan sonra yeni bir bilgi ya da içgörü edinmedim
En azından embedding'lerin temel kullanım örneklerinden kısa bir tadımlık gösterilseydi bir sonraki yazıyı daha çok bekleyebilirdim
Paylaştığın için teşekkür ederim
Embedding'lerin ve embedding aramasının bir diğer avantajı, istemci tarafında düşük yükle uygulanabilmesi
ONNX modelleri transformer.js ile yüklenip çalıştırılabiliyor
hnswgibi bir indeks oluşturup statik olarak barındırmak da mümkünKendim de bir açık kaynak demo yaptım
İndeksi sorgulanabilir parquet dosyaları olarak temsil edip duckdb ile sorguluyorsunuz
Github Pages kullanırsanız bunu ücretsiz ya da neredeyse ücretsiz yapmak mümkün
İstemci tarafında JS ile embedding yapılabildiğini öğrenmek benim için yeni oldu
Bunun dokümantasyon siteleri için yeni uygulamaların önünü açacağını düşündüğüm için heyecanlıyım
Parquet ve Polars'a da daha önce okuduğum bir yazı yüzünden dikkat kesilmiştim
Bu tür bir uygulama hakkında hep merak ettiğim şeyler vardı
Embedding tabanlı aramanın gecikmesinden (latency) endişe ettiğim için kullanmaya çekiniyordum
Model yerelde tutulup render edildiğinde kalitenin OpenAI/Google ile kıyasla nasıl olduğunu merak ediyorum
Ücretsiz olması ve anındalık önemli avantajlar
Demo'da tam olarak neler olduğunu daha ayrıntılı anlatsanız iyi olurdu
Sonuçları pek anlayamadım
"Embedding'ler, girdi metninin boyutundan bağımsız olarak her zaman aynı boyutta bir sayı dizisi döndürür; bu yüzden rastgele metinleri matematiksel olarak birbiriyle karşılaştırabilirsiniz" kısmının daha net açıklanmasını isterdim
Hash fonksiyonları da girdi boyutundan bağımsız olarak aynı boyutta çıktı verir ama o matematiksel karşılaştırma ile embedding karşılaştırması anlamca tamamen farklıdır
Embedding kalitesinin eğitim süreci tarafından belirlendiğini vurgulamak gerekir
Rastgele her metin için anlamlı karşılaştırma yapabilen "genel amaçlı embedding" diye bir şey yok
Bağlantıları da paylaşıyorum
Embedding, hash gibi büyük girdileri sıkıştırılmış biçimde temsil ediyor ama hash'ten farklı olarak içkin bir anlam taşıyor
O halde embedding'den tersine gidip benzer anlamlı metin üretmeye yönelik bir "cracking" araştırması var mı diye merak ediyorum
LLM çıktısında bir sonraki token değerlendirmesine embedding ile benzerlik ya da yön değişimini de katmak mümkün olabilir gibi geliyor
Yazarın bahsettiği embedding vektörleri arası işlemler gibi, bütün paragraflar/kitaplar gibi büyük metinlerde de "anlam cebiri" uygulanabilir mi diye düşünüyorum
"Yakınlık" gibi temel bir kavramı vektörleştirip mevcut metne eklemek de mümkün olabilir mi diye merak ediyorum
"Embedding'den tersine gidip benzer anlamlı metin üretmek" embedding inversion ya da Universal Zero-shot Embedding Inversion olarak adlandırılır
Bununla ilgili makaleler var; görüntülerde CLIP embedding'leriyle yapılan diffusion çalışmaları da bununla ilişkili
Embedding'ler, kabaca söylemek gerekirse fuzzy hash'lere benzer bir rol oynuyor
Bu alanın uzmanı değilim ama inference-time intervention denen araştırma da ilgili olabilir
Makale bağlantısı eklenmiş
"Embedding'leri kullanarak teknik yazımda üst düzey ilerlemeler elde edebilirsiniz" sözü yeterince somut değil, bu yüzden okuyucu olarak bana pek yardımcı olmuyor
Teknik belge okurken ya da yazarken genel olarak hiç "benzer sayfalar" bileşeni istemedim
Tez ikinci paragrafta yer alıyor
Embedding'ler, teknik yazarların daha önce keşfedemeyeceği biçimlerde metinler arası bağlantılar bulmasını sağlıyor
Yazının bu tezi örneklerle pratik biçimde gösteremediğini kabul ediyorum
Embedding'lerin teknik yazımdaki çeşitli zor problemleri çözebileceğini düşünüyorum; doğrudan örnekleri daha sonra ele alacağım
İlgili belgelerin ötesinde, teknik dokümanlar için mükemmel arama son derece faydalı
Embedding'ler özellikle "fuzzy matching" için çok kullanışlı; kullanıcı tam kelimeyi hatırlamasa bile aslında istediği özelliği bulabiliyor
Anahtar kelime aramasıyla vektör benzerliği aramasını birleştiren hibrit yaklaşım etkili
Daha somut kullanım örnekleri bulmak isterim
İki boyutlu harita benzetmesi anlamayı kolaylaştıran iyi bir başlangıç ama embedding'ler yüzlerce hatta binlerce boyutta çalışır
Her boyutun hangi anlama geldiği de açık değildir;
king - man + woman = queenörneği de "gender kavramına sahip bir boyut" olduğu için değil, "belirli bir yön" olduğu için çalışırn boyutlu uzayda neredeyse ortogonal yönler üstel olarak çok sayıdadır
1000 boyutlu bir alana milyarlarca kavram sığdırılabilmesinin nedeni budur
Gerçek arXiv makalelerinde embedding'e 1000 erkek sözcüğü verince 950 kadın sözcüğünü kusursuz bulmak gibi bir şey olmuyor
Yaklaşık 20 kadar sözcük gözle görülür biçimde gruplanıyor ama boyut çok olduğu için projeksiyonda her şey "uyuyormuş" gibi görünebilir
N büyüdükçe sonuçların belirsizleşmesi kolaylaşıyor
Transformer tabanlı embedding'ler bağlamı dikkate aldığı için eski sözcük vektörlerinden çok daha iyi
Tam metin aramada da bağlam farkındalığı olan embedding'ler, eş anlamlılar gibi konularda bilgi erişiminde son 50 yılda karşılaşılan sorunları etkili biçimde çözüyor
Ayrıntılı eleştiri için teşekkürler; tek bir boyutun bir kavramla bire bir eşlendiği izlenimini veren açıklamamın kavramsal bir hata olduğunu kabul ediyorum
Kosinüs benzerliğinin nasıl çalıştığını da ekleyip kavramı daha iyi işleyerek yazıyı güncelleyeceğim
Bu yorumlar sayesinde düşünme kalitemin arttığını hissediyorum
"Neredeyse ortogonal boyutlar" yerine "neredeyse ortogonal yönler" demek daha doğru olur
Johnson-Lindenstrauss lemma ile ilgili bilgiyle birlikte, embedding'lerde boyut koruma ve mesafe koruma doğruluğu konusunda merakım var
Mesafeleri %10 hatayla korumak için yaklaşık 18 bin boyut gerekiyor
Wiki bağlantısı da verilmiş
Daha doğru ifade "neredeyse ortogonal boyutlar" değil, "neredeyse ortogonal yönler"
Eğer tek tek boyutlar anlamlı kavramlarla örtüşseydi, örneğin bir gender boyutu olsaydı,
kingilequeenarasındaki farkın yalnızca tek boyutta olduğunu kolayca anlayabilirdikHer kavramın ayrı bir boyutu olsaydı, bu farklar üzerinden kavramları sezgisel biçimde takip etmek mümkün olurdu
Neredeyse ortogonal vektörler kavramı üzerine iyi bir makale öneriliyor
Bağlantı paylaşılmış
Her boyutu ikili bit gibi ele alıp
2^nyön kodlayabildiğimiz mantığı mı kastediliyor, yoksa yanlış mı anlıyorum diye soruluyorEğer cinsiyet iki boyutla temsil ediliyorsa, "cinsiyetin farklı olması" ile "her boyutun farklı bileşen taşıması"nı ayırt etmek imkânsız olmaz mı diye soruluyor
Görselleştirme mümkün olmasa da Öklid mesafesi hesaplanabilir
UMAP gibi araçlarla boyut azaltma yapılabilir
king-man+woman=queenörneğine ilişkin olarak, vektör toplama işlemi her zaman beklendiği gibi çalışmayabilirAnlam, tek bir vektör yönü ve büyüklüğüyle sınırlı olabilir; ayrıca ağ doğrusal olmayan davranışlar öğrendiği için başlangıç noktasına göre anlam değişebilir
Deneysel kanıt olmadan basit vektör işlemlerinden genelleme yapmak sınırlıdır
Embedding'ler, alfabe ya da sayılar gibi evrenselliğe doğru yeni bir sıçrama
Bağlantı paylaşılmış
Uzmanlara bir sorum var
Embedding'ler içeriği, yani anlamın kendisini vektör olarak taşıyorsa, yalnızca "stil" için ayrı bir vektör de var mı diye merak ediyorum
Yazı stilini analiz eden araştırmalarda embedding'ler kolayca kullanılabilirse büyük bir ilerleme olabilir diye düşünüyorum
Embedding kullanımına tamamen katılıyorum
Recallify adında bir şey geliştirirken internette okuduğum nadir bilgileri bile hızla yeniden bulabilir hale geldim
Sadece 1024 boyut kullanmak bile içerikleri anahtar kelimelerle değil anlamsal benzerlikle etkili biçimde ilişkilendirmeye yetiyor
Belirsiz kavramları uygulanabilir içgörülere dönüştürmede devrim niteliğinde bir araç
iOS uygulaması için beta test kullanıcıları da aranıyor
Yazıda teknik yazarlar için doğrudan kullanım örneği gerçekten var mıydı emin olamadım
Embedding'ler LLM'lerde, anlamsal aramada vb. çok önemli ama yazarın ima ettiği doğrudan faydaya dair açıklama eksik
Doğrudan uygulama örneği yoktu
Devam yazıları ve projelerle embedding'lerin farklı kullanımlarını ele almayı planlamıştım ama son dönemde bebek bakımıyla (3 aylık bebek) geciktim
İlgili proje ve yazılar üzerinde çalışıyorum; embedding'ler teknik yazımda önemli 3 zorluğu çözmeye yardımcı oluyor
Embedding'lerin pratik kullanım alanları anlamsal arama, sınıflandırma ve kümeleme
Arama alanında yaklaşık her 10 yılda bir büyük sıçrama yaşanıyor
Embedding üretip mevcut ML algoritmalarına verdiğinizde etkili sınıflandırma yapabiliyorsunuz
Bag-of-Words yaklaşımı artık zayıf sonuç veriyor; embedding + basit algoritmalarla bile iyi kümeler elde edilebiliyor
Yakın vektörleri bulmak için de lineer cebirden çok noktasal çarpım düzeyi çoğu zaman yeterli
Makale, literatür vb. şeyleri embedding kullanarak anlamsal olarak aramak çok faydalı olur
Ancak embedding'in kendisinde kaynak bilgisi yer almadığı için RAG aramalarında yalnızca kaynak sayfaya bağlantı verilebiliyor
Alıntı ve doğrulama sorunları hâlâ sürüyor
GraphRAG gibi grafik tabanlı atıf modelleri daha ileri bir yaklaşım
Embedding tabanlı anlamsal aramayla bir RSS besleme sınıflandırıcısı yapmıştım
İsteğe bağlı kategorilerle sınıflandırma da mümkündü
Şu anda AWS'den ayrıldığım için hizmet kapalı