Örnek sorular
Rag Embeddings SimilarityZorluk 2
a=[1,0,1] ve b=[1,1,0] vektörleri arasındaki cosine similarity'yi cos(a,b) = dot(a,b) / (||a|| * ||b||) formülüyle hesaplıyorsun. dot(a,b) = 1, ||a|| = sqrt(2), ||b|| = sqrt(2). cos(a,b) kaçtır?
Açıklama:cos(a,b) = 1 / (sqrt(2) * sqrt(2)) = 1 / 2 = 0.5. Dot product ortak boyutu sayar (0. indekste ikisi de 1), büyüklüklerin çarpımına bölmek vektör uzunluğunu normalize eder.
Rag Embeddings SimilarityZorluk 2
Bir vektör veritabanı döküman vektörlerini bir D matrisinin satırları olarak saklıyor (hepsi L2-normalize) ve sorgu q'yu da birim uzunluğa normalize ediyor. Her dökümanı tek seferde skorlamak için D @ q matris-vektör çarpımını hesaplıyor. Satırlar [1,0], [0.6,0.8], [0,1] ve q=[1,0] iken sonuç [1.0, 0.6, 0.0]'dır. D @ q'nun her bir elemanı neyi temsil eder?
- aSorgudan her dökümana olan euclidean distance
- bSorgu ile her döküman arasındaki ham kelime-örtüşme sayısı
- cSorgunun her dökümana cosine similarity'si, hepsi tek seferde✓
- dHer dökümanın sorguyla paylaştığı sıfır olmayan boyut sayısı
Açıklama:D'nin her satırı ve sorgu q birim uzunlukta olduğundan, her satır·q dot product'ı zaten cosine similarity'ye eşittir. Bu dot product'ları tek bir D @ q çarpımı olarak istiflemek, cosine skorlarının tamamını tek işlemde verir — bir vektör index'inin bütün bir aday kümesini verimli skorlamasının standart yolu budur.
Rag Embeddings SimilarityZorluk 3
a=[1,2,2] ve b=[2,2,1] vektörlerinin ikisinin de büyüklüğü 3'tür. Her birini L2-normalize ediyorsun: a_n = [1/3, 2/3, 2/3], b_n = [2/3, 2/3, 1/3]. dot(a_n, b_n) 3 ondalıkla kaçtır?
- a0.889✓
- b0.750
- c0.667
- d1.000
Açıklama:dot(a_n, b_n) = (1/3)(2/3) + (2/3)(2/3) + (2/3)(1/3) = 2/9 + 4/9 + 2/9 = 8/9 ≈ 0.889. a ve b'nin büyüklüğü zaten 3 olduğundan bu değer, ham vektörler üzerinde doğrudan hesaplanan cos(a,b)'ye de eşittir — önce normalize etmek cosine değerini değiştirmez, sadece dot product'ın onun yerine kullanılabilmesini sağlar.
Rag Embeddings SimilarityZorluk 1
v = [3, 4] vektörünün büyüklüğü ||v|| = sqrt(3^2 + 4^2) = 5'tir. L2-normalize edilmiş v / ||v|| vektörü nedir?
- a[3, 4]
- b[1.5, 2.0]
- c[0.5, 0.5]
- d[0.6, 0.8]✓
Açıklama:v / ||v|| = [3/5, 4/5] = [0.6, 0.8]. Her bileşen büyüklüğe bölünür, böylece elde edilen vektör orijinaliyle aynı yönü gösterirken uzunluğu tam olarak 1 olur.
Rag Embeddings SimilarityZorluk 2
Bir junior mühendis dökümanları ham dot product ile sıralıyor (normalizasyon yok). q=[1,0] sorgusu için: dot(q, d1=[2,0]) = 2, dot(q, d2=[10,0]) = 10, yani d2 birinci sırada. Ama cos(q,d1) = 1.0 ve cos(q,d2) = 1.0 — ikisi de sorgu yönüyle tam hizalı. Burada ne olduğunu en doğru şekilde açıklayan hangisidir?
- aHiçbir sorun yok; d2 sorguya gerçekten daha yüksek anlamsal benzerliğe sahip
- bİkisi de aynı yönde, cosine ikisini eşit raporluyor; dot product d2'yi sadece büyüklüğü fazla diye kayırdı✓
- cDot product formülü matematiksel olarak hatalıdır ve retrieval'da asla kullanılmamalıdır
- dd2'nin vektör büyüklüğünün daha fazla olmasının nedeni d1'den daha fazla kelime içermesi olmalı
Açıklama:Dot product yalnızca yöne değil vektör büyüklüğüne de duyarlıdır — aynı yönde bile olsa daha uzun bir vektör skoru şişirir. Cosine büyüklükleri böler, bu yüzden iki dökümanı da sorguyla eşit hizalı olarak doğru raporlar (her ikisi için cos=1.0). Ham dot product ile sıralama, gerçek anlamsal alaka ile ilgisi olmayan, sadece embedding normu büyük olan dökümanları sessizce kayırabilir.
Rag Embeddings SimilarityZorluk 1
Bir retrieval sistemi cosine similarity'yi distance = 1 - similarity formülüyle 'cosine distance'a çeviriyor. cos(sorgu, döküman) = 0.8 ise cosine distance kaçtır?
Açıklama:distance = 1 - 0.8 = 0.2. Bu dönüşüm yaygındır çünkü birçok en-yakın-komşu kütüphanesi bir distance metriğini minimize etmek üzere kurulmuştur; daha düşük cosine distance daha yüksek benzerlik demektir, böylece aynı 'en küçük mesafeyi bul' arama mantığı hem similarity hem distance tabanlı index'lerde çalışır.