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:
- L'API BigQuery è stata attivata nel tuo Google Cloud progetto. Per informazioni su come abilitare le Google Cloud API, consulta Abilitazione delle API.
- La fatturazione sia attivata per il tuo Google Cloud progetto.
- Hai generato e archiviato gli embedding vettoriali in un set di dati vettoriale in BigQuery. Per informazioni su come eseguire questa operazione dalle tue applicazioni SAP utilizzando l'SDK BigQuery AI e ML per ABAP, consulta Generare embedding.
- Hai creato l'indice di vettori dei dati aziendali. Per ulteriori informazioni, consulta Creare un indice di vettori.
- Sono state concesse le autorizzazioni richieste all'account di servizio configurato nella chiave client per l'autenticazione.
- Hai installato l'SDK BigQuery AI e ML per ABAP nel tuo ambiente SAP.
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 valoreINT64
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'argomentoDISTANCE_TYPE
nelle definizioni della funzioneVECTOR_SEARCH
.FRACTION_LISTS_TO_SEARCH
: un valore di stringa che specifica la percentuale di elenchi da cercare. Cerca i valori probabili dall'argomentoFRACTION_LISTS_TO_SEARCH
nelle opzioni di definizione della funzioneVECTOR_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.