Trascinare il punto di query e cambiare le unità di misura per osservare come cambiano i vicini più prossimi.
Misura la distanza in linea retta tra due punti. I cerchi concentrici mostrano le zone equidistanti: tutti i punti sullo stesso cerchio sono ugualmente “lontani” dalla query.
Una metrica è semplicemente una funzione che accetta due vettori e restituisce un unico numero che indica quanto siano simili (o diversi). La ricerca vettoriale consiste, in sostanza, nel «trovare i K vettori con il miglior punteggio metrico rispetto alla mia query». Tutto il resto — indici, cluster, grafi — è solo una questione di gestione per evitare di calcolare questo punteggio rispetto a ogni singolo vettore nel database.
La metrica scelta definisce cosa significa “simile” per i propri dati. Due embedding possono essere “vicini” secondo una metrica e “lontani” secondo un’altra: stessi dati, risposta diversa. Ecco perché questa scelta va effettuata prima ancora di creare un indice.
Prova questo: trascina il punto di query vicino all’origine e passa da “Cosine” a “ L2 ”. Osserva come “Cosine” tenga conto solo della “direzione” verso cui punta la query: i punti sul lato opposto dell’origine possono risultare “vicini” con “ L2 ”, ma “lontani” con “Cosine”. Quella rappresentazione visiva incarna l’intero concetto.
In Milvus, la metrica viene impostata per ogni indice tramite metric_type — L2, IP, oppure COSINE per i vettori densi — al momento della creazione dell’indice. Ogni ricerca effettuata su quella raccolta utilizza quindi la stessa funzione che avete appena sperimentato sopra. La regola più affidabile in assoluto: utilizzate la metrica con cui è stato addestrato il vostro modello di embedding, che è indicata praticamente su ogni scheda del modello.
Due scorciatoie utili. La maggior parte delle moderne API di embedding testuale (OpenAI, Cohere, Voyage e la maggior parte dei transformer di frasi) produce vettori destinati alla similarità coseno. E se i vostri vettori sono normalizzati a lunghezza unitaria, il coseno e il prodotto interno restituiscono classifiche identiche — quindi IP sui vettori normalizzati è un sostituto comune e leggermente più economico di COSINE.
Utilizzare la similarità coseno (metric_type COSINE in Milvus). Quasi tutti i moderni modelli di embedding testuale — compresa la famiglia text-embedding-3 di OpenAI — sono addestrati per la similarità coseno. Poiché OpenAI gli embedding sono normalizzati a lunghezza unitaria, il prodotto interno (IP) fornisce classifiche identiche e rappresenta una valida alternativa.
La similarità coseno misura solo l’angolo tra due vettori, ignorandone le lunghezze. Il prodotto interno (prodotto scalare) tiene conto sia dell’allineamento che della grandezza, quindi un vettore più lungo che punta nella stessa direzione ottiene un punteggio più alto. Su vettori normalizzati per unità, i due concetti sono matematicamente equivalenti.
No. La metrica è integrata nell’indice in fase di creazione. Per cambiare metrica è necessario eliminare l’indice e ricrearlo con un nuovo `metric_type`. Inoltre, i punteggi ottenuti con metriche diverse non sono comparabili tra loro, quindi non mescolarli durante la post-elaborazione dei risultati.
La velocità è sostanzialmente identica: " L2", " IP" e "cosine" richiedono tutti un unico passaggio sul vettore. Il "recall" è l’aspetto cruciale: effettuare ricerche con una metrica diversa da quella per cui è stato addestrato il modello di embedding degrada silenziosamente la qualità dei risultati, spesso in modo drammatico.
Approfondisci: leggi la documentazione sulle metriche di similarità per l’elenco completo delle metriche supportate d Milvus, tra cui Hamming e Jaccard per i vettori binari e BM25 per la ricerca full-text.
Confronto affiancato tra ricerca a forza bruta e ricerca a cluster. Ottimizzare in tempo reale l’ nprobe.
Osserva passo dopo passo la ricerca sul grafo multistrato — dai salti su autostrada alle passeggiate locali.
Scopri come PQ-in-RAM + full-vectors-on-SSD ti permette di effettuare ricerche su set di dati dell’ordine dei miliardi su un laptop.