Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)
Dowiedz się, kiedy wybrać odległość cosinusową, L2 (euklidesową) lub opartą na iloczynie skalarnym — oraz dlaczego większość modeli embeddingów preferuje miarę cosinusową.
Wybór miar odległości (cosinusowa, L2, iloczyn skalarny) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Trzy popularne metryki
Wektorowe bazy danych pozwalają wybrać metrykę odległości. Najczęściej spotkają się Państwo z trzema:
- Podobieństwo cosinusowe — kąt między wektorami
- Iloczyn skalarny — rzut jednego wektora na drugi
- Euklidesowa (L2) — odległość w linii prostej
Cosinus
Zakres: od -1 do 1. Wyższa wartość = większe podobieństwo.
import numpy as np
def cosine(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))Iloczyn skalarny
Zakres: od -infinity do +infinity. Wyższa wartość = większe podobieństwo.
def dot(a, b):
return np.dot(a, b)
# Equivalent to cosine when both vectors are unit-normalized.Euklidesowa (L2)
Zakres: od 0 do +infinity. Niższa wartość = większe podobieństwo.
def l2(a, b):
return np.linalg.norm(np.array(a) - np.array(b))Którą wybrać?
W przypadku embeddingów tekstowych przyjmuje się następującą konwencję:
- OpenAI text-embedding-3 — cosinus (wektory są wstępnie znormalizowane)
- Cohere — cosinus
- Sentence Transformers / BGE — zwykle cosinus; należy sprawdzić kartę modelu
W razie wątpliwości należy wybrać cosinus.
Iloczyn skalarny równa się cosinusowi dla wektorów znormalizowanych
Jeśli |a| = |b| = 1, to cos(a,b) = a . b. Iloczyn skalarny jest szybszy (nie wymaga dzielenia) — systemy produkcyjne często używają iloczynu skalarnego dla wstępnie znormalizowanych wektorów.
Kiedy używa się L2
Niektóre modele badawcze (starsze warianty Sentence-BERT, embeddingi obrazów) są trenowane z użyciem odległości L2 i działają z nią lepiej. Należy zawsze sprawdzić kartę modelu.
Dlaczego ma to znaczenie dla indeksu?
Struktura indeksu (HNSW, IVF, FAISS) jest tworzona dla KONKRETNEJ metryki. Zmiana metryki po zindeksowaniu zwykle oznacza konieczność przebudowania indeksu od podstaw.
Setting Metric in Pinecone
from pinecone import ServerlessSpec
pc.create_index(
name='docs',
dimension=1536,
metric='cosine', # or 'dotproduct' or 'euclidean'
spec=ServerlessSpec(cloud='aws', region='us-east-1')
)Setting Metric in Qdrant
from qdrant_client.models import VectorParams, Distance
client.create_collection(
collection_name='docs',
vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)Niespójna metryka między systemami
Jeśli później zastosują Państwo ponowne sortowanie za pomocą cross-encodera, będzie on mieć własną skalę wyników. Nie należy łączyć metryk w jeden wynik złożony bez wcześniejszej normalizacji.
Wizualizacja różnicy
Dla dwóch wektorów jednostkowych:
- cos = 1, L2 = 0 -> identyczne
- cos = 0.5, L2 ~ 1 -> powiązane
- cos = 0, L2 ~ sqrt(2) -> ortogonalne
- cos = -1, L2 = 2 -> przeciwne
Normalizuj raz, przed zapisaniem
Normalizacja podczas ingestii jest tania (jedno dzielenie). Zapewnia zgodność z cosinusem i iloczynem skalarnym oraz eliminuje konieczność normalizacji przy każdym zapytaniu.
vec = vec / np.linalg.norm(vec)Domyślna metryka
Jaka metryka odległości jest domyślna dla embeddingów tekstowych OpenAI?
Podsumowanie
W przypadku tekstu należy używać cosinusa. Wektory należy znormalizować raz, a następnie używać iloczynu skalarnego dla większej szybkości. Metrykę należy ustawić podczas tworzenia indeksu — późniejsza zmiana oznacza konieczność jego przebudowania.
Ucz się AI Agents dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 60
- Lekcje
- 239
Często zadawane pytania
Czy lekcja „Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)” jest bezpłatna?
Tak — pełny tekst „Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)”?
Dowiedz się, kiedy wybrać odległość cosinusową, L2 (euklidesową) lub opartą na iloczynie skalarnym — oraz dlaczego większość modeli embeddingów preferuje miarę cosinusową. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pinecone, Weaviate, Qdrant: porównanie
- Filtrowanie metadanych w wyszukiwaniu hybrydowym
- Aktualizowanie i usuwanie wektorów
- Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)