Scegliere un indice di vettori in AlloyDB AI

Questa pagina descrive le strategie di ricerca vettoriale di AlloyDB AI e spiega quando utilizzare ciascuna strategia. Per impostazione predefinita, AlloyDB per PostgreSQL utilizza la ricerca del vicino più prossimo (KNN) per trovare i vettori simili a una query. Gli indici vettoriali implementano una strategia di ricerca chiamata Approximate Nearest Neighbor (ANN). Quando crei un indice vettoriale, AlloyDB AI utilizza ANN, che offre prestazioni migliori rispetto a KNN. Tieni presente che, quando selezioni un indice vettoriale, devi bilanciare la latenza delle query e il richiamo.

Il richiamo misura l'efficacia con cui una ricerca recupera tutti gli elementi pertinenti per una determinata query. Ad esempio, supponiamo di avere 100 incorporamenti, ognuno dei quali rappresenta un'entità nel database. Esegui una query sugli incorporamenti con un vettore di destinazione e la limiti a 10 risultati. Una ricerca vettoriale KNN trova i 10 vettori più vicini esatti utilizzando un metodo di calcolo di forza bruta, che genera un richiamo del 100%. AlloyDB AI utilizza questo metodo per impostazione predefinita se non viene creato o scelto alcun indice di ricerca vettoriale. Quando crei un indice vettoriale in AlloyDB, in genere utilizza ANN, che potrebbe partizionare i vettori in base alla similarità per facilitare un recupero più rapido. Di conseguenza, utilizzando ANN, i 10 vettori restituiti nell'esempio precedente potrebbero non essere esattamente i 10 vettori più vicini in termini di distanza. Se 9 dei 10 vettori recuperati sono i più vicini nello spazio al vettore di query, il richiamo è del 90%. Per saperne di più, consulta Misurare il richiamo delle query vettoriali.

La 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 per una ricerca per restituire i vettori dopo l'invio di una query.

Scegliere la strategia di ricerca

Quando esegui una ricerca vettoriale in AlloyDB, scegli una delle seguenti strategie di ricerca:

Strategia di ricerca Descrizione Casi d'uso
K-Nearest Neighbor (KNN)

Un algoritmo che trova i punti dati del vicino più prossimo a un determinato punto dati di query. Quando esegui una ricerca vettoriale senza creare un indice, per impostazione predefinita viene eseguita una ricerca KNN.

Per migliorare ulteriormente il rendimento della ricerca KNN, aggiungi la colonna di incorporamento e altre colonne correlate alla query all'archivio colonne nel motore colonnare. Puoi aggiungere le colonne manualmente o utilizzando la colonnarizzazione automatica.

  • La tua applicazione è molto sensibile all'accuratezza e hai bisogno delle corrispondenze più vicine esatte.
  • Hai decine di migliaia di vettori
Approximate Nearest Neighbor (ANN) Un algoritmo che trova approssimativamente i punti dati più vicini. ANN suddivide i punti dati dei clienti esistenti in piccoli gruppi in base alle similarità.
  • La tua applicazione richiede una bassa latenza.
  • Hai più di 100.000 vettori.

I due tipi di indici vettoriali basati su ANN comuni per AlloyDB sono ScaNN e HNSW. Utilizza le seguenti linee guida per decidere quale tipo di indice è più adatto al tuo caso d'uso:

Tipo di indice Scopo dell'utilizzo Vantaggi Accelerazione del motore colonnare
ScaNN

In genere è adatto per dati a bassa dimensionalità o set di dati di grandi dimensioni che superano la memoria.

Si adatta bene a 10 miliardi di vettori.

Offre diversi vantaggi rispetto a HNSW su PostgreSQL standard:

  • Query vettoriali fino a 6 volte più veloci e query di ricerca vettoriale con filtro fino a 10 volte più veloci
  • Creazione di indici fino a 16 volte più veloce
  • Throughput di scrittura fino a 24 volte superiore
  • Utilizza fino a 4 volte meno memoria
La ricerca vettoriale con l'indice ScaNN può essere accelerata dal motore colonnare AlloyDB. Per saperne di più, consulta Accelerare la ricerca vettoriale con il motore colonnare.
HNSW

In genere è adatto per dati a dimensionalità più elevata che rientrano in gran parte nella cache in memoria.

Si adatta bene a 10-20 milioni di vettori.

L'indice HNSW accelerato del motore colonnare pgvector in AlloyDB offre query vettoriali fino a 4 volte più veloci rispetto a PostgreSQL standard La ricerca vettoriale con l'indice HNSW può essere accelerata dal motore colonnare AlloyDB. Per saperne di più, consulta Accelerare la ricerca vettoriale con il motore colonnare.

Google consiglia di creare un indice vettoriale per ottimizzare il rendimento delle query di ricerca vettoriale. Per saperne di più su come viene utilizzato l'indice ANN per le ricerche di similarità, consulta Creare indici utilizzando ScaNN.

Per accelerare la ricerca KNN filtrata, utilizza il motore colonnare.

Passaggi successivi