Robocikowo>ROBOCIKOWO
Wyszukiwanie

Cosine Similarity

AktywnyOpublikowany
Miara podobieństwa dwóch wektorów oparta na kosinusie kąta między nimi, niezależna od ich długości.
Kluczowa innowacja
Mierzy podobieństwo kierunku wektorów ignorując ich długość, dzięki czemu dokumenty różnej wielkości są porównywalne.
Kategoria
Wyszukiwanie
Poziom abstrakcji
Primitive
Poziom operacji
RetrievalDane
Zastosowania
Ranking dokumentów w wyszukiwarkachWyszukiwanie semantyczne nad embeddingamiSystemy rekomendacjiDeduplikacja i klasteryzacja tekstuWyszukiwanie najbliższych sąsiadów (k-NN)

Jak działa

cos(θ) = (A · B) / (||A|| · ||B||). Iloczyn skalarny wektorów A i B dzielony przez iloczyn ich norm euklidesowych. Wynik w zakresie [-1, 1] (dla wektorów nieujemnych, np. TF-IDF, w zakresie [0, 1]): 1 = identyczny kierunek, 0 = ortogonalność (brak wspólnych cech).

Rozwiązany problem

Odległość euklidesowa między wektorami dokumentów jest zdominowana przez ich długość — dłuższy dokument jest "dalej" mimo tej samej tematyki. Cosine similarity normalizuje ten efekt, patrząc tylko na kąt.

Implementacja

Pułapki implementacyjne
Niestabilność numeryczna przy zerowych wektorachŚrednia

Wektor zerowy (np. dokument bez żadnego znanego terminu) daje dzielenie przez zero w normie.

Rozwiązanie:Dodaj epsilon do mianownika lub odfiltruj puste wektory przed porównaniem.
Pominięcie normalizacji L2 przy wielokrotnych zapytaniachNiska

Powtórne liczenie norm dla tych samych wektorów marnuje czas.

Rozwiązanie:Prenormalizuj wektory do długości jednostkowej — wtedy cosine to zwykły iloczyn skalarny.

Hiperparametry (konfigurowalne osie)

Prenormalizacja L2Średnia

Czy wektory są wcześniej znormalizowane do długości jednostkowej — wtedy cosine = iloczyn skalarny.

trueStandard przy wielokrotnych zapytaniach do tego samego indeksu.

Złożoność obliczeniowa

Złożoność czasowa: O(d) na parę, O(n·d) batch. Złożoność przestrzenna: O(d) na wektor.

Paradygmat wykonania

Tryb główny
Gęsty
Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
W pełni równoległy
Zakres
Inferencja

Wymagania sprzętowe

Dobry fit

Batchowe cosine similarity to mnożenie macierzy — idealne dla GPU przy gęstych embeddingach.

Dobry fit

Dla wektorów rzadkich (TF-IDF) CPU z SIMD jest efektywne.