Scegliere le metriche di distanza (coseno, L2, prodotto scalare)
Scopra quando scegliere la distanza coseno, L2 (euclidea) o il prodotto scalare e perché la maggior parte dei modelli di embedding preferisce il coseno.
Scegliere le metriche di distanza (coseno, L2, prodotto scalare) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Tre metriche comuni
I DB vettoriali permettono di scegliere una metrica di distanza. Le tre che incontrerà più spesso:
- Similarità coseno — l'angolo tra i vettori
- Prodotto scalare — la proiezione di un vettore sull'altro
- Distanza euclidea (L2) — la distanza in linea retta
Coseno
Intervallo: da -1 a 1. Più è alto, maggiore è la similarità.
import numpy as np
def cosine(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))Prodotto scalare
Intervallo: da -infinity a +infinity. Più è alto, maggiore è la similarità.
def dot(a, b):
return np.dot(a, b)
# Equivalent to cosine when both vectors are unit-normalized.Euclidea (L2)
Intervallo: da 0 a +infinity. Più è basso, maggiore è la similarità.
def l2(a, b):
return np.linalg.norm(np.array(a) - np.array(b))Quale dovrebbe usare?
Per gli embedding testuali, la convenzione è:
- OpenAI text-embedding-3 — coseno (i vettori sono pre-normalizzati)
- Cohere — coseno
- Sentence Transformers / BGE — di solito coseno; verifichi la model card
In caso di dubbio, scelga il coseno.
Il prodotto scalare equivale al coseno dopo la normalizzazione
Se |a| = |b| = 1, allora cos(a,b) = a . b. Il prodotto scalare è più veloce (non richiede divisioni): i sistemi di produzione usano spesso il prodotto scalare su vettori pre-normalizzati.
Quando si usa L2
Alcuni modelli di ricerca (varianti meno recenti di Sentence-BERT, embedding di immagini) vengono addestrati con la distanza L2 e ottengono risultati migliori con essa. Verifichi sempre la model card.
Perché è importante per l'indice
La struttura dell'indice (HNSW, IVF, FAISS) viene creata per una metrica SPECIFICA. Cambiare metrica dopo l'indicizzazione significa generalmente ricostruire l'indice da zero.
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)
)Metrica incoerente tra i sistemi
Se in seguito esegue un re-ranking con un cross-encoder, quest'ultimo ha una propria scala dei punteggi. Non combini metriche in un unico punteggio composito senza normalizzarle prima.
Visualizzazione della differenza
Per due vettori unitari:
- cos = 1, L2 = 0 -> identici
- cos = 0.5, L2 ~ 1 -> correlati
- cos = 0, L2 ~ sqrt(2) -> ortogonali
- cos = -1, L2 = 2 -> opposti
Pre-normalizzare una volta
La normalizzazione durante l'ingestion è economica (una sola divisione). Garantisce la compatibilità con coseno e prodotto scalare ed evita di normalizzare ogni query in seguito.
vec = vec / np.linalg.norm(vec)Metrica predefinita
Per gli embedding testuali di OpenAI, qual è la metrica di distanza predefinita?
Riepilogo
Coseno per il testo. Pre-normalizzi una volta e usi il prodotto scalare per una maggiore velocità. Imposti la metrica alla creazione dell'indice: cambiarla in seguito richiede una ricostruzione.
Domande Frequenti
La lezione «Scegliere le metriche di distanza (coseno, L2, prodotto scalare)» è gratuita?
Sì — il testo completo di «Scegliere le metriche di distanza (coseno, L2, prodotto scalare)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Scegliere le metriche di distanza (coseno, L2, prodotto scalare)»?
Scopra quando scegliere la distanza coseno, L2 (euclidea) o il prodotto scalare e perché la maggior parte dei modelli di embedding preferisce il coseno. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Scegliere le metriche di distanza (coseno, L2, prodotto scalare)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Pinecone, Weaviate e Qdrant: confronto
- Filtraggio dei metadati per la ricerca ibrida
- Aggiornare ed eliminare i vettori
- Scegliere le metriche di distanza (coseno, L2, prodotto scalare)