Embeddings
Gömüler, benzer metinleri, görüntüleri veya öğeleri birbirine yakın konumlandıran öğrenilmiş vektörlerdir. Nasıl oluşturuldukları, karşılaştırıldıkları ve büyük ölçekte arandıkları ele alınır.
Gömme vektörü; sözcük, görüntü, ürün veya kullanıcı gibi bir öğeyi temsil eden, öğrenilmiş sayılardan oluşan bir vektördür. Benzer anlam veya içeriğe sahip öğelerin vektörleri birbirine yakın olur. Bu vektör uzayındaki uzaklık, benzerliğin ölçüsüne dönüşür; böylece yazılımlar ham pikselleri veya dizeleri karşılaştırmak yerine vektörleri karşılaştırarak arama yapabilir, kümeleyebilir, öneride bulunabilir ve sınıflandırabilir. Gömme vektörleri aynı zamanda sinir ağlarının çalışma temsilleridir: Bir büyük dil modeli (LLM), ilk Transformer katmanından önce her belirteci gömme vektörüne dönüştürür; bir görüntü modeli ise omurgası aracılığıyla görüntüyü özellik vektörlerine dönüştürür. Arama için kullanılan gömme vektörleri genellikle birkaç yüz ila birkaç bin boyut içerir; ham girdideki değer sayısı ise çok daha fazladır.
Gömme Vektörleri Nasıl Oluşturulur#
Gömme vektörleri, öğrenilmiş iki tür bileşenden elde edilir:
- Arama tabloları: Belirteçler, ürün kimlikleri veya kullanıcı kimlikleri gibi ayrık öğeler için bir gömme katmanı, her öğe için öğrenilebilir bir satır saklar ve bir öğe arandığında o satırı döndürür. PyTorch
nn.Embeddingböyle bir tablodur. Satırları başlangıçta rastgele değerlerden oluşur ve modelin geri kalanıyla birlikte geri yayılım yoluyla güncellenir; bu nedenle eğitim görevinde benzer roller üstlenen öğeler, benzer vektörlere doğru kayar. - Kodlayıcılar: Görseller, ses ve serbest metin için bir ağ, girdinin tamamını tek bir vektöre eşler; bunu genellikle bir CNN'in özellik haritalarını havuzlayarak veya bir Transformer'ın çıktı belirteçlerini okuyarak yapar. Sınıflandırma gibi bir görev için eğitilen kodlayıcılar, yan ürün olarak kullanışlı gömme vektörleri üretir; karşıtsal öğrenme ile eğitilen kodlayıcılar ise gömme uzayını doğrudan şekillendirir. CLIP, görselleri ve bunların açıklamalarını ortak bir uzayda konumlandırarak bunu yapar.
2013'te Tomas Mikolov ve Google'daki çalışma arkadaşları tarafından yayımlanan Word2vec, bu tür bir eğitimin ne kadar çok yapı yakaladığını gösterdi. Sözcük vektörlerinde vector("King") − vector("Man") + vector("Woman"), vector("Queen") vektörüne en yakın noktaya denk gelir ve yayımlanan önceden eğitilmiş Google News vektörleri, 300 boyutta 3 milyon sözcük ve ifade içerir.
Gömme Vektörlerini Karşılaştırma#
Kosinüs benzerliği, iki vektörün yönlerini karşılaştırır ve −1 ile 1 arasında değer alır. İç çarpım, vektörlerin uzunluklarını da hesaba katar; Öklid uzaklığı ise aralarındaki düz çizgi mesafesini ölçer. Birçok sistem, gömme vektörlerini birim uzunluğa normalize eder; bu durumda kosinüs benzerliği ile iç çarpım aynı olur ve komşular, Öklid uzaklığıyla aynı sırada sıralanır. YOLO26 modelleri, embed() aracılığıyla görsel gömme vektörleri üretir; bu işlem tahmin başlığını atlar ve modelin sondan bir önceki katmanının çıktısını ortalama havuzlayarak her görsel için bir vektör döndürür:
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
# embed() returns one pooled feature vector per image instead of predictions
bus, zidane = model.embed([ASSETS / "bus.jpg", ASSETS / "zidane.jpg"])
print(f"Embedding length: {bus.shape[0]}")
# Higher cosine similarity means the model sees more similar content
print(f"Cosine similarity: {F.cosine_similarity(bus, zidane, dim=0).item():.3f}")YOLO26n-cls için gömme, omurgasını sonlandıran dikkat bloğunun havuzlanmış çıktısı olan 256 boyutlu bir vektördür; ikinci satır, paketle birlikte gelen iki örnek fotoğrafın kosinüs benzerliğini yazdırır. Aynı karşılaştırmayı bütün bir koleksiyonun saklanan gömmeleriyle çalıştırmak, görüntü benzerliği aramasının sonuçlarını sıralama yöntemidir.
Büyük Ölçekte Gömme Vektörlerinde Arama#
Bir sorguyu saklanan milyonlarca vektörle tek tek karşılaştırmak çok yavaştır; bu nedenle vektör veritabanları, koleksiyonun küçük bir bölümünü denetleyerek yakın eşleşmeleri bulmak için grafik tabanlı HNSW dizinleri veya ters dosya dizinleri gibi yaklaşık en yakın komşu dizinleri oluşturur. Koleksiyonun gömme vektörleri bir kez oluşturulur; her sorgunun gömme vektörü ise arama sırasında aynı kodlayıcıyla ya da metin görsellerde aranıyorsa eşleşen metin kodlayıcısıyla oluşturulur:
Depolama gereksinimleri, tasarımı doğruluk kadar etkiler. Matruşka temsil öğrenimi, baştaki boyutları tek başına da işe yarayan gömme vektörleri eğitir; böylece yerden tasarruf etmek için vektörler kısaltılabilir. Vektör niceleme ise her vektörü birkaç bayta sıkıştırır. Hibrit arama, gömme benzerliğini anahtar sözcük eşleştirmeyle birleştirir.
Uygulamalar#
- Anlamsal arama ve bilgi erişimiyle zenginleştirilmiş üretim (RAG): Metin gömme vektörleri, metin parçalarını anlama göre getirir; böylece "araba sigortası talepleri" hakkındaki bir sorgu, "motorlu taşıt poliçesi" diyen belgeleri de bulur. RAG, getirilen metin parçalarını bağlam olarak bir LLM'ye aktarır.
- Öneri sistemleri: Kullanıcılar ve öğeler aynı uzaya gömülür; kullanıcının vektörüne en yakın öğeler öneri adayları olur.
- Sıfır örnekli sınıflandırma: Ortak bir görsel-metin uzayına sahip modeller, bir görselin gömme vektörünü metin olarak yazılmış sınıf adlarının gömme vektörleriyle karşılaştırarak görseli sınıflandırır.
- Nesne yeniden tanımlama: Görünüş gömme vektörleri, aynı kişiyi veya aracı farklı kameralar arasında ve bir izdeki kesintilere rağmen eşleştirir.
- Veri kümesini keşfetme: Gömmeleri t-SNE veya UMAP ile iki boyuta yansıtmak, veri kümesindeki kümeleri, neredeyse yinelenen örnekleri ve aykırı değerleri ortaya çıkarır; Ultralytics Platform veri kümeleri için Kümeleme paneli de bunu yapar.
Gömme Vektörleri ve İlgili Terimler#
- Gizil uzay: Gömme vektörlerinin bulunduğu vektör uzayıdır. "Gizil temsil" ve "gömme vektörü" terimleri çoğu zaman eş anlamlı kullanılır.
- Özellik çıkarımı: Ham veriyi özelliklere dönüştüren her türlü işlemdir. Gömme vektörü, vektörler arasındaki mesafeler anlam taşıyacak şekilde öğrenilen bir özellik vektörüdür.
- Belirteçleştirme: Metni belirteçlere böler ve her belirteci bir tam sayı kimliğine eşler. Ardından gömme katmanı, her kimliği bir vektöre dönüştürür.
- One-hot kodlama: Bir sözlükteki i öğesini, i konumunda 1 ve diğer konumlarda 0 bulunan bir vektörle temsil eder. Böylece her öğe çifti birbirinden aynı uzaklıkta olur ve kodlama benzerlik bilgisi taşımaz. Bir one-hot vektörün gömme tablosunun ağırlık matrisiyle çarpılması, tam olarak bir satırı seçer; gömme aramasının çarpma işlemini gerçekleştirmeden döndürdüğü sonuç da budur.










