Scegliere un indice di vettori in AlloyDB AI

Selezionando la strategia e l'indice di Vector Search giusti in AlloyDB AI, puoi bilanciare la latenza delle query e l'accuratezza della ricerca per il tuo carico di lavoro. Per impostazione predefinita, AlloyDB per PostgreSQL utilizza la ricerca esatta del vicino più prossimo (KNN) per trovare vettori simili. Quando crei un indice vettoriale, AlloyDB AI utilizza la ricerca Approximate Nearest Neighbor (ANN) per accelerare il rendimento delle query su larga scala, sacrificando una quantità configurabile di richiamo.

Il richiamo misura l'efficacia con cui una ricerca recupera tutti gli elementi pertinenti per una determinata query. Ad esempio, supponiamo che tu abbia 100 embedding, ognuno dei quali rappresenta un'entità nel tuo database. Esegui una query sugli embedding con un vettore target e la limiti a 10 risultati. Una Vector Search 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 viene utilizzato ANN, che potrebbe partizionare i vettori in base alla somiglianza per facilitare il 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.

Scegli una strategia di ricerca

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

Strategia di ricerca Descrizione Casi d'uso
Risultati vicini K-nearest (KNN)

Un algoritmo che trova i punti dati dei risultati vicini K-nearest 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 embedding 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 Neighbors (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 somiglianze.
  • 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.

Scala bene fino 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 Vector Search con il motore colonnare.
HNSW

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

Scala bene fino a 10-20 milioni di vettori.

L'indice HNSW accelerato dal 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 Vector Search 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 somiglianza, consulta Creare indici utilizzando ScaNN.

Per accelerare la ricerca KNN con filtro, utilizza il motore colonnare.

Passaggi successivi