Utilizzare l'aiuto vettoriale

Vector Search in AlloyDB per PostgreSQL fornisce un framework SQL dichiarativo che ti consente di eseguire il deployment, ottimizzare e gestire i carichi di lavoro di Vector Search sulle tue istanze. Puoi definire i requisiti di ricerca vettoriale, generare e applicare le configurazioni SQL consigliate e monitorare le prestazioni del carico di lavoro. Per scoprire di più su come funziona l'assistenza vettoriale, consulta la panoramica dell'assistenza vettoriale.

Prima di iniziare

  • Verifica che l'istanza utilizzi la versione di manutenzione corretta. L'assistenza vettoriale richiede un numero di versione di manutenzione minimo di POSTGRES_17.20260128.03_06. Per saperne di più sull'esecuzione della manutenzione self-service, consulta Manutenzione self-service delle prestazioni.
  • Attiva l'estensione di assistenza vettoriale utilizzando il seguente comando nel database che vuoi utilizzare:

    CREATE EXTENSION vector_assist CASCADE;
    

    Viene generato lo schema vector_assist, utilizzato dall'assistenza vettoriale.

Utilizzare l'assistenza vettoriale per eseguire il deployment di un carico di lavoro vettoriale

Per utilizzare l'assistenza vettoriale per eseguire il deployment e gestire un carico di lavoro vettoriale, devi:

Definire la specifica vettoriale

La definizione della specifica vettoriale, o specifica vettoriale, è il primo passo per utilizzare l'assistenza vettoriale. A seconda del tipo di carico di lavoro vettoriale, i campi utilizzati per definire la specifica vettoriale potrebbero essere diversi.

Ad esempio, se vuoi attivare la ricerca semantica su una colonna specifica di una tabella, esegui la vector_assist.define_spec funzione per definire la specifica vettoriale:

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

Sostituisci i seguenti parametri:

  • TABLE_NAME: nome della tabella che vuoi utilizzare nel carico di lavoro vettoriale.
  • (Facoltativo) VECTOR_COLUMN_NAME: colonna su cui vuoi eseguire una ricerca semantica. Se nella tabella è presente una sola colonna con i vettori, vector_assist può impostarla automaticamente. Se sono presenti più tabelle con i vettori, devi specificare la colonna da utilizzare.
  • (Facoltativo) TARGET_RECALL: richiamo target che vuoi che l'assistenza vettoriale soddisfi. Se specificato, vector_assist sperimenta diversi valori ef_search, confrontando il richiamo nelle ricerche esatte e di vicini più prossimi. vector_assist imposta ef_search sul valore che fornisce il richiamo target più vicino. Il valore predefinito è 0.95.
  • (Facoltativo) TUNE_INDEX: valore booleano che specifica se l'assistenza vettoriale ottimizza gli indici vettoriali nel carico di lavoro. Il valore predefinito è false, il che significa che vengono ottimizzati solo i parametri relativi alla ricerca (ef_search), mentre i parametri di build (m, ef_construction) non vengono ottimizzati.

Per visualizzare un elenco completo di tutti i parametri disponibili per la specifica vettoriale, consulta Riferimenti alle funzioni di assistenza vettoriale.

Dopo aver eseguito la query per creare la specifica vettoriale, l'assistenza vettoriale genera automaticamente passaggi, chiamati consigli, che devi eseguire per eseguire il deployment del carico di lavoro vettoriale.

Visualizzare i consigli dell'assistenza vettoriale

Per visualizzare i consigli generati dall'assistenza vettoriale utilizzando la specifica vettoriale, esegui la vector_assist.get_recommendations funzione:

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

Sostituisci SPEC_ID con l'ID della specifica vettoriale per cui vuoi visualizzare i consigli. Per visualizzare l'el enco delle specifiche vettoriali disponibili, consulta Elencare le specifiche vettoriali.

vector_assist.get_recommendations restituisce una tabella denominata vector_assist.RECOMMENDATIONS che contiene tutti i consigli. Ogni consiglio viene archiviato in una tabella con l'spec_id associato. Ogni consiglio in genere contiene le seguenti informazioni:

  • Query SQL da eseguire
  • Spiegazione dettagliata del consiglio
  • Altre informazioni pertinenti che spiegano il consiglio

Applicare i consigli dell'assistenza vettoriale

Puoi applicare i consigli generati singolarmente o nel loro complesso.

Per applicare un consiglio specifico, esegui la vector_assist.apply_recommendation funzione:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

Sostituisci RECOMMENDATION_ID con l'ID del consiglio di assistenza vettoriale che vuoi applicare dalla tabella vector_assist.RECOMMENDATIONS.

Per applicare tutti i consigli contemporaneamente, esegui la vector_assist.apply_spec funzione con il parametro spec_id o table_name:

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

Sostituisci SPEC_ID con l'ID della specifica vettoriale che vuoi utilizzare.

Se vuoi, puoi anche inserire i parametri schema_name o column_name. Per informazioni su tutti parametri di ricerca disponibili, consulta Riferimenti alle funzioni di assistenza vettoriale.

Una volta applicati i consigli generati dall'assistenza vettoriale, l'indice vettoriale è pronto per l'uso.

Generare query di ricerca

Puoi utilizzare l'assistenza vettoriale per creare query di ricerca ottimizzate per i carichi di lavoro vettoriali di cui hai eseguito il deployment utilizzando la specifica vettoriale del carico di lavoro e l'indice vettoriale generato. Per generare una query di ricerca ottimizzata, esegui la vector_assist.generate_query funzione:

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => 'TOP_K',
  target_recall => TARGET_RECALL,
  filter_expression => 'FILTER_EXPRESSION'
);

Sostituisci i seguenti parametri:

  • SPEC_ID: ID della specifica che vuoi utilizzare.
  • SEARCH_VECTOR: vettore per la query di ricerca. Ad esempio, [1, 2, 3].
  • (Facoltativo) TOP_K: numero di vicini più prossimi da restituire. Se non specificato, il valore predefinito è 10.
  • (Facoltativo) TARGET_RECALL: richiamo target che vuoi che l'assistenza vettoriale soddisfi. Se specificato, vector_assist sperimenta diversi valori ef_search, confrontando il richiamo nelle ricerche esatte e di vicini più prossimi. vector_assist imposta ef_search sul valore che fornisce il richiamo target più vicino.
  • (Facoltativo) FILTER_EXPRESSION: eventuali filtri per la query di ricerca. Ad esempio, il filtro in base ad altre colonne.

Per visualizzare un elenco completo di tutti i parametri disponibili per la generazione di una query di ricerca, consulta Riferimenti alle funzioni di assistenza vettoriale.

L'output di questa funzione restituisce il testo contenente una query SQL. Puoi eseguire o salvare questa query SQL in base alle esigenze.

Elencare le specifiche vettoriali

Se devi elencare una o tutte le specifiche vettoriali esistenti, esegui la funzione vector_assist.list_specs:

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

Sostituisci i seguenti parametri:

  • (Facoltativo) SPEC_ID: ID della specifica vettoriale che vuoi utilizzare.
  • TABLE_NAME: nome della tabella utilizzata per definire la specifica vettoriale.

Passaggi successivi