data-infra
Sözlük ↗Kosinüs Benzerliği (Cosine Similarity)
Kosinüs benzerliği, iki vektörün yüksek boyutlu uzaydaki aralarındaki açının kosinüsü olarak hesaplanan, ne kadar benzer olduklarının matematiksel bir ölçüsüdür. -1 (tam zıt) ile 1 (aynı yön) arasında değer alır; 0 ise vektörlerin ortogonal (ilgisiz) olduğu anlamına gelir. AI uygulamalarında embedding'leri karşılaştırmak için açık ara en yaygın kullanılan mesafe metriğidir - çoğu vektör veritabanı varsayılan olarak bunu kullanır ve çoğu embedding modeli (OpenAI'nin, Cohere'in, açık kaynak Sentence-Transformers'ın) kosinüs benzerliğini örtük ya da açık hedef olarak alarak eğitilir; yani embedding'ler özellikle kosinüs karşılaştırmalarını anlamlı kılacak şekilde optimize edilir. AI/SaaS kurucuları için neden önemli: bir ürün "benzer dokümanları bul", "semantik arama", "ilgili ürünleri öner" veya "yinelenen destek taleplerini tespit et" işlevlerinden birini yapıyorsa, arka planda çalışan hesaplama neredeyse kesinlikle kosinüs benzerliğidir; bunu anlamak, vektör veritabanı yanıtlarında karşınıza çıkan aksi halde belirsiz kalan alaka skorlarını açıklığa kavuşturur (`score: 0.89` içeren bir Pinecone sorgu sonucu bir olasılık ya da yüzde değil, bir kosinüs benzerliği değeridir). Nasıl çalışır: A ve B iki vektör verildiğinde, kosinüs benzerliği = (A · B) / (‖A‖ × ‖B‖) - yani vektörlerin nokta çarpımının, büyüklüklerinin çarpımına bölünmesi. Kritik nokta: bu formül vektör uzunluğunu/büyüklüğünü normalize eder ve yalnızca yönü ölçer - iki embedding çok farklı büyüklüklere sahip olabilir (biri kısa bir cümleyi, diğeri uzun bir paragrafı temsil ediyor olabilir) ama anlamsal olarak aynı yöne işaret ediyorlarsa yine de yüksek kosinüs benzerliği skoru alırlar. Bu yüzden metin embedding'lerinde, büyüklüğün genellikle anlamdan çok metin uzunluğu gibi ilgisiz faktörlerle ilişkili olduğu durumlarda, kosinüs benzerliği ham Öklid mesafesinden daha iyi performans gösterme eğilimindedir. Birçok vektör veritabanı, ekleme sırasında vektörleri birim uzunluğa önceden normalize eder; bu da kosinüs benzerliğini matematiksel olarak nokta çarpımına eşdeğer (ve hesaplaması daha hızlı) kılar - vektörler normalize edildikten sonra `cosine` ve `dotproduct` seçeneklerinin neredeyse aynı davranışla sunulmasının nedeni budur. Somut örnek: ürün açıklamalarını embed ederek "müşteriler bunlara da baktı" önerileri sunan bir e-ticaret SaaS'ı düşünün. "Kablosuz gürültü engelleyici kulaklık" ile "ANC özellikli Bluetooth kulak üstü kulaklık" ifadeleri, ortak tam kelime olmamasına rağmen ~0.91 kosinüs benzerliği üreterek neredeyse aynı niyeti doğru şekilde işaret eder; "kablosuz gürültü engelleyici kulaklık" ile "paslanmaz çelik su şişesi" ise ~0.12 skorla ilgisiz ürünleri doğru şekilde işaret eder. Öneri motoru, 0.75 eşiğinin üzerindeki ürünleri "benzer" olarak gösterir. Bu eşiği seçmek sabit bir kural değil, başlı başına bir ürün kararıdır - ekipler genellikle "gerçekten benzer" olarak etiketlenmiş bir veri kümesine karşı ampirik olarak ayarlar yapar, çünkü "doğru" kosinüs eşiği embedding modeline ve alana göre değişir (ürün açıklamaları için ayarlanmış bir eşik, destek talebi benzerliği için ayarlanmış bir eşiğe otomatik olarak aktarılmaz).
İlgili terimler