AI Agents · Lekcja

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ą.

Lekcja 4 z 415 kroki

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.

Bezpłatny start

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

  1. Pinecone, Weaviate, Qdrant: porównanie
  2. Filtrowanie metadanych w wyszukiwaniu hybrydowym
  3. Aktualizowanie i usuwanie wektorów
  4. Wybór miar odległości (cosinusowa, L2, iloczyn skalarny)
← Powrót do AI Agents