Eseguire una ricerca vettoriale in BigQuery

L'SDK BigQuery AI e ML per ABAP ti consente di eseguire ricerche vettoriali sui dati aziendali vettorizzati in BigQuery tramite stringhe di ricerca basate sul linguaggio naturale e di recuperare i risultati dagli agenti o dalle applicazioni basati su ABAP.

La ricerca vettoriale di BigQuery ti consente di utilizzare GoogleSQL per eseguire ricerche semantiche utilizzando indici vettoriali per risultati approssimativi. Con la ricerca di vettori, puoi trovare punti dati semanticamente simili all'interno di set di dati di grandi dimensioni utilizzando vettori o embedding di dimensioni elevate. Puoi archiviare gli embedding vettoriali in BigQuery, impostando BigQuery come database vettoriale e applicando la ricerca di somiglianze vettoriali su di esso utilizzando la funzione BigQuery VECTOR_SEARCH.

Prima di iniziare

Prima di utilizzare l'SDK BigQuery AI e ML per ABAP con i modelli Gemini, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:

Prezzi

L'SDK BigQuery AI e ML per ABAP è offerto senza costi. Tuttavia, sei responsabile degli addebiti per l'istruzione CREATE VECTOR INDEX e la funzione VECTOR_SEARCH, che utilizzano i prezzi di calcolo di BigQuery.

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.

Per ulteriori informazioni sui prezzi di BigQuery, consulta la pagina Prezzi di BigQuery.

Eseguire una ricerca vettoriale su BigQuery

Questa sezione spiega come eseguire la ricerca semantica vettoriale sui dati aziendali memorizzati in BigQuery dalla tua applicazione ABAP utilizzando l'SDK BigQuery AI e ML per ABAP.

Crea un'istanza della classe di invocatore della ricerca vettoriale di BigQuery

Per eseguire una ricerca vettoriale utilizzando una stringa di ricerca, devi creare un'istanza della classe /GOOG/CL_BQ_VECTOR_SEARCH.

TRY.
    DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Sostituisci CLIENT_KEY con la chiave client che hai configurato per l'autenticazione a Google Cloud durante la configurazione dell'autenticazione.

Trovare elementi simili per una stringa di ricerca

Per eseguire query per eseguire la ricerca vettoriale con la funzione BigQuery VECTOR_SEARCH, utilizza il metodo FIND_NEAREST_NEIGHBORS della classe /GOOG/CL_BQ_VECTOR_SEARCH.

L'oggetto della classe /GOOG/CL_BQ_QUERY impostato con la query viene passato come input al metodo.

lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).

LO_BQ_QUERY è il riferimento del corso /GOOG/CL_BQ_QUERY dopo aver impostato la query. Puoi passare la stringa di ricerca dal testo della query.

Sostituire i parametri di ricerca vettoriale

Puoi definire i parametri di ricerca di vettori (nelle definizioni di funzioni VECTOR_SEARCH) nella query salvata in BigQuery o nel testo della query passato. Tuttavia, se devi override i parametri per la stessa query dalla logica dell'applicazione ABAP, puoi utilizzare il metodo SET_SEARCH_PARAMETERS della classe /GOOG/CL_BQ_VECTOR_SEARCH. I parametri di ricerca nella query iniziale vengono completamente sostituiti con i parametri passati tramite questo metodo.

lo_bq_vector_search->set_search_parameters( iv_top_k            = TOP_K
    iv_distance_type            = DISTANCE_TYPE
    iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).

Sostituisci quanto segue:

  • TOP_K: un valore INT64 che specifica il numero di vicini più vicini da restituire.
  • DISTANCE_TYPE: un valore di stringa che specifica il tipo di metrica da utilizzare per calcolare la distanza tra due vettori. Cerca i valori probabili dell'argomento DISTANCE_TYPE nelle definizioni della funzione VECTOR_SEARCH.
  • FRACTION_LISTS_TO_SEARCH: un valore di stringa che specifica la percentuale di elenchi da cercare. Cerca i valori probabili dall'argomento FRACTION_LISTS_TO_SEARCH nelle opzioni di definizione della funzione VECTOR_SEARCH.

Ottenere la risposta della ricerca vettoriale

Per ricevere le risposte elaborate da BigQuery ML per le query di ricerca di vettori e presentarle in modo significativo, utilizza la classe /GOOG/CL_BQ_SEARCH_RESPONSE.

La risposta acquisita dalla classe /GOOG/CL_BQ_SEARCH_RESPONSE viene collegata alle richieste effettuate tramite i metodi della classe /GOOG/CL_BQ_VECTOR_SEARCH, in modo da poter accedere direttamente alla risposta in un'unica istruzione senza dover richiedere variabili per memorizzare i risultati intermedi.

Ottenere i vicini più prossimi per la stringa di ricerca

Per ottenere i vicini più prossimi per la stringa di ricerca, utilizza il metodo GET_NEAREST_NEIGHBORS. Il numero di vicini restituiti dipende dal valore specificato o impostato nel parametro TOP_K della funzione VECTOR_SEARCH nella query invocata.

DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
                                             )->get_nearest_neighbors( ).

LT_SEARCH_RESPONSE contiene anche la distanza dell'elemento della risposta di ricerca dalla stringa di ricerca per indicare il grado di somiglianza.

Ottieni il vicino più prossimo per la stringa di ricerca

Per ottenere il vicino più prossimo per la stringa di ricerca, utilizza il metodo GET_NEAREST_NEIGHBOR. In questo modo viene recuperato solo il vicino più vicino rispetto alla stringa di ricerca, indipendentemente dal valore specificato o impostato nel parametro TOP_K della funzione VECTOR_SEARCH nella query invocata.

DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
                                             )->get_nearest_neighbor( ).

LS_SEARCH_RESPONSE contiene anche la distanza della risposta alla ricerca dalla stringa di ricerca per indicare il grado di somiglianza.