Termini chiave
Prima di decidere una strategia di indicizzazione, devi conoscere i seguenti termini:
- Richiamo: definisce l'efficacia con cui una ricerca recupera tutti gli elementi pertinenti per una determinata query. Ad esempio, se hai 100 immagini e 10 sono di gatti, che è una corrispondenza vera, e la ricerca di "gatto" restituisce 6 immagini di gatti, il richiamo è 6 su 10, ovvero il 60%. Nella ricerca del vicino più prossimo approssimativo (ANN) per gli indici vettoriali, il richiamo viene misurato confrontando i risultati ottenuti con l'indice ANN con i risultati di corrispondenza vera ottenuti tramite una ricerca di forza bruta.
- Latenza delle query: definisce la velocità con cui vengono generati i risultati di ricerca. Ad esempio, la latenza viene calcolata in base al tempo trascorso in una ricerca per restituire le 6 immagini di gatti dopo aver inviato una query.
Strategia di ricerca
Devi selezionare una delle seguenti strategie di ricerca. Considera una tabella di esempio con i dati dei clienti che includono dettagli come la cronologia degli acquisti, le preferenze e i dati demografici per capire in che modo i due algoritmi differiscono:
K-Nearest Neighbor (KNN) è un algoritmo che trova i punti dati k-nearest a un determinato punto dati di query. Per l'esempio precedente, per eseguire una query che consiglia i prodotti ai nuovi clienti in base alle preferenze di clienti simili, KNN calcola la distanza tra i punti dati dei nuovi clienti e i punti dati di ogni cliente nella tabella utilizzando una metrica di distanza. KNN identificherebbe k clienti che corrispondono ai criteri in base alla distanza e quindi consiglierebbe al nuovo cliente i prodotti che piacciono ai clienti identificati (k).
Per i set di dati più piccoli è consigliata una query KNN con metrica di distanza, come la distanza euclidea o la similarità del coseno. Se il tuo caso d'uso richiede una precisione del 100% e puoi tollerare una latenza delle query più elevata, ti consigliamo di utilizzare KNN. Per saperne di più su come eseguire una ricerca KNN, consulta Eseguire la ricerca di similarità.
Gli indici basati sull'algoritmo Approximate Nearest Neighbor (ANN) consentono di eseguire le query più velocemente, ma potrebbero compromettere l'accuratezza o il richiamo delle query. Per l'esempio precedente, per eseguire una query che consiglia i prodotti ai nuovi clienti in base alle preferenze di clienti simili, ANN divide i punti dati dei clienti esistenti in piccoli gruppi in base alle similarità. Quando viene aggiunto un nuovo punto dati del cliente, ANN identifica prima un gruppo, tra più gruppi, a cui appartiene il punto dati, quindi calcola la distanza utilizzando una metrica di distanza all'interno del gruppo. Questo filtro riduce il numero di calcoli necessari per mostrare i consigli.
Google consiglia di creare un indice vettoriale che implementi l'indice ANN quando hai un set di dati di grandi dimensioni, poiché trova le similarità più velocemente ed è meno intensivo in termini di risorse, ma compromette l'accuratezza. Per saperne di più su come viene utilizzato l'indice ANN per le ricerche di similarità, consulta Creare indici ed eseguire query sui vettori utilizzando ScaNN. Per ottenere l'accuratezza KNN con un indice vettoriale, imposta i parametri di ricerca in modo che siano uguali al numero di partizioni. Questa strategia consente di ottenere l'accuratezza KNN con un equilibrio della latenza delle query.
Utilizza il seguente diagramma di flusso come guida per decidere quale tipo di indice è ottimale in base al set di dati e ai requisiti.

Passaggi successivi
- Creare indici ed eseguire query sui vettori utilizzando ScaNN
- Ottimizzare il rendimento delle query vettoriali