Kosinüs Benzerliği — Temel Kavramlar
functions Formül
cos(θ) = (A·B) / (|A| × |B|) — İç çarpımı vektör büyüklüklerinin çarpımına böler; yönler arasındaki açının kosinüsünü verir.
navigation Yön Odaklı
Büyüklükten bağımsız sadece yönü ölçer. 100 kelimelik ve 1000 kelimelik aynı konuyu anlatan belgeler benzer kosinüs puanı alır.
compare Öklid Mesafesi ile Farkı
Öklid, noktaların konumunu; kosinüs, vektörlerin yönünü karşılaştırır. Metin semantiği için kosinüs genellikle daha anlamlı sonuçlar verir.
linear_scale [-1, 1] Skalası
Normalize edilmiş embedding'ler için 1: özdeş yön, 0: ilgisiz, -1: zıt anlam. Birçok RAG sisteminde 0.7+ eşiği yüksek benzerlik olarak değerlendirilir.
search Kosinüs Benzerliğinin RAG'daki Rolü
RAG akışında: 1) Kullanıcı sorgusu bir embedding modeli ile vektöre dönüştürülür. 2) Vektör veritabanında bu sorgu vektörüne en yüksek kosinüs benzerliğine sahip k belge parçası (chunk) bulunur. 3) Bu parçalar bağlam olarak LLM'e iletilir. 4) Model bağlamı kullanarak yanıt üretir. Benzerlik eşiği, bağlama alınacak parça sayısını ve kalitesini doğrudan etkiler.
Kosinüs Benzerliğinin Teknik Detayları ve Varyantları
- check_circle Matematiksel Formül: cos(θ) = (A·B) / (|A| × |B|). İki vektörün iç çarpımını, her vektörün normlarının çarpımına böler. Sonuç -1 ile 1 arasında değişir.
- check_circle Normalizasyon Avantajı: Vektör büyüklüğünden bağımsız yalnızca yönü karşılaştırır. Bu özellik, farklı uzunluktaki belgeler arasında adil karşılaştırma sağlar.
- check_circle Nokta Çarpımı ile İlişki: L2-normalize edilmiş vektörlerde nokta çarpımı = kosinüs benzerliği. Bu eşdeğerlik GPU matris işlemlerinde büyük hız avantajı sağlar.
- check_circle Euclidean Mesafe ile Karşılaştırma: Euclidean mesafe mutlak uzaklığı ölçerken kosinüs benzerliği yön uyumunu ölçer. Yüksek boyutlu gömme (embedding) uzaylarında kosinüs genellikle daha anlamlı sonuç verir.
- check_circle Simetrik Ölçüm: sim(A,B) = sim(B,A); bu simetri, semantik arama ve kümeleme algoritmalarını basitleştirir.
- check_circle Vektör Veritabanları: Pinecone, Weaviate, Chroma ve pgvector kosinüs benzerliğini en temel dizin ve arama ölçütü olarak destekler.
Kosinüs Benzerliğinin RAG ve Semantik Aramadaki Rolü
Kosinüs benzerliği, modern AI uygulamalarının tam ortasında yer almaktadır. RAG (Retrieval-Augmented Generation) sistemlerinde, sorgu gömmeleri ile belge gommeleri arasındaki kosinüs benzerliği en ilgili belge parçalarını sıralamak için kullanılır. Semantik aramada, anahtar kelime eşleşmesi yerine anlamsal yakınlık ölçülür; 'araba' ve 'taşıt' yüksek kosinüs benzerliğine sahip gömmeler üretir. Öneri sistemlerinde kullanıcı profilini ve ürün özelliklerini gömme olarak temsil edip kosinüs benzerliğiyle en uygun eşleşmeleri bulmak yaygın bir yaklaşımdır. Pratik Python kodu: `from sklearn.metrics.pairwise import cosine_similarity` veya `torch.nn.functional.cosine_similarity(a, b)` ile hesaplanabilir. Numpy ile manuel: `np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))`. Dikkat edilmesi gereken nokta: kosinüs benzerliği sıfır vektörlerle tanımsızdır ve bazı gömme modelleri izotropik olmayan dağılım üretebilir; bu durumlarda MIPS (Maximum Inner Product Search) veya başka metrikler tercih edilebilir.
quiz Sık Sorulan Sorular
- check_circle Normalizasyon neden önemlidir?: Embedding vektörleri L2 normalize edilirse kosinüs benzerliği = nokta çarpımı (dot product). Bu HNSW ve FAISS gibi kütüphanelerde önemli hız kazancı sağlar.
- check_circle Negatif kosinüs benzerliği ne anlama gelir?: Vektörler zıt yönlerdeyse teorik olarak negatif değer alabilir. Ancak çoğu embedding modeli pozitif alanda çalışır (ReLU etkisi) ve pratikte negatif değerler nadirdir.
- check_circle Kosinüs benzerliği nedir?: İki vektör arasındaki açının kosinüsünü hesaplayarak yön benzerliğini ölçen matematiksel metriktir. 1 tam benzerlik, 0 dik açı (ilişkisiz), -1 zıt yönü ifade eder.
- check_circle Kosinüs benzerliği ne zaman kullanılır?: Metin veya görüntü gömmelerini karşılaştırmak, semantik arama, RAG'da ilgili belge bulma, öneri sistemleri ve kümeleme algoritmalarında kullanılır. Vektör boyutu farklılıklarından etkilenmez.
- check_circle Kosinüs benzerliği Python'da nasıl hesaplanır?: `sklearn.metrics.pairwise.cosine_similarity(A, B)`, `torch.nn.functional.cosine_similarity(a, b)` veya numpy ile `np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b))` kullanılabilir.
- check_circle Kosinüs benzerliği ve Euclidean mesafe arasındaki fark nedir?: Euclidean mesafe mutlak uzaklığı ölçer; büyüklük farkı sonucu etkiler. Kosinüs benzerliği yalnızca yönü karşılaştırır; büyüklükten bağımsızdır. Yüksek boyutlu gömme uzaylarında kosinüs genellikle tercih edilir.