Generare e gestire gli embedding in BigQuery

L'SDK BigQuery AI e ML per ABAP ti consente di generare e gestire gli embedding dei dati aziendali in BigQuery.

BigQuery può fungere da database vettoriale conveniente per l'utilizzo delle sue funzionalità di ricerca vettoriale, consentendoti di archiviare ed eseguire query sugli embedding (rappresentazioni vettoriali dei dati) direttamente all'interno del data warehouse, potenzialmente riducendo la necessità di un'infrastruttura di database vettoriale separata. Puoi generare embedding per i dati aziendali archiviati nei set di dati BigQuery utilizzando la funzione BigQuery ML.GENERATE_EMBEDDING.

Per accedere ai modelli di embedding su Vertex AI, crea un modello remoto in BigQuery ML che rappresenti l'endpoint del modello Vertex AI. Dopo aver creato un modello remoto sul modello Vertex AI che vuoi utilizzare, puoi accedere alle funzionalità del modello eseguendo la funzione BigQuery ML sul modello remoto.

Con l'SDK BigQuery AI e ML per ABAP, puoi utilizzare i modelli di embedding per:

  • Genera e memorizza gli incorporamenti per i dati di testo
  • Genera e memorizza gli embedding per i dati multimodali
  • Mantieni aggiornato il database di vettori BigQuery con i dati aziendali più recenti

Prima di iniziare

Prima di utilizzare l'SDK BigQuery AI e ML per ABAP con i modelli di embedding, 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 sulle piattaforme BigQuery e Vertex AI:

  • BigQuery ML: devi sostenere i costi per i dati che elabori in BigQuery.
  • Vertex AI: devi sostenere i costi delle chiamate al servizio Vertex AI rappresentato dal modello remoto.

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.

Per ulteriori informazioni sui prezzi di Vertex AI, visita la pagina Prezzi di Vertex AI.

Genera embedding su BigQuery

Questa sezione spiega come generare embedding per i dati aziendali archiviati in BigQuery dalla logica dell'applicazione ABAP utilizzando l'SDK BigQuery AI e ML per ABAP.

Crea un'istanza della classe di invocatore degli embedding BigQuery

Per richiamare i modelli multimodali e di testo con embedding sui set di dati BigQuery, occorre creare un'istanza della classe /GOOG/CL_BQ_GENERATIVE_MODEL.

TRY.
    DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( 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.

Genera embedding

Per eseguire query per generare embedding per testo e dati multimodali con la funzione BigQuery ML.GENERATE_EMBEDDING, utilizza il metodo GENERATE_EMBEDDINGS della classe /GOOG/CL_BQ_EMBEDDINGS_MODEL.

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

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).

LO_BQ_QUERY è il riferimento del corso /GOOG/CL_BQ_QUERY dopo aver impostato la query.

Sostituire i parametri di generazione del modello

Puoi definire i parametri di generazione del modello di embedding nella query salvata su BigQuery o nel testo della query passato. Tuttavia, se devi eseguire l'override dei parametri per la stessa query dalla logica dell'applicazione ABAP, puoi utilizzare il metodo SET_GENERATION_CONFIG della classe /GOOG/CL_BQ_EMBEDDINGS_MODEL. I parametri di generazione nella query iniziale vengono sostituiti con i parametri passati tramite questo metodo.

lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output   = 'IS_FLATTEN_JSON_OUTPUT'
                                 iv_task_type             = 'TASK_TYPE'
         iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).

Sostituisci quanto segue:

  • IS_FLATTEN_JSON_OUTPUT: un valore booleano che determina se i contenuti JSON restituiti dalla funzione vengono analizzati in colonne separate.
  • TASK_TYPE: il valore che specifica l'applicazione a valle prevista per aiutare il modello a produrre embedding di qualità migliore. Cerca i valori probabili dall'argomento task_type in Sintassi di input per ML.GENERATE_EMBEDDING.
  • OUTPUT_DIMENSIONALITY: il valore che specifica il numero di dimensioni da utilizzare per la generazione di embedding. Cerca i valori probabili dell'argomento output_dimensionality in Sintassi di input per ML.GENERATE_EMBEDDING.

Ottenere i risultati delle query per la generazione di embedding

Per ricevere le risposte elaborate da BigQuery ML per la generazione di embedding e la loro presentazione in modo significativo, l'SDK utilizza metodi incatenati nella classe /GOOG/CL_BQ_GENERATIVE_MODEL, in modo da poter accedere direttamente alla risposta in un singolo statement senza richiedere variabili per memorizzare i risultati intermedi.

Ottenere i vettori di embedding di testo

Per ottenere i vettori di embedding del testo per ogni riga nella logica dell'applicazione ABAP, utilizza il metodo GET_TEXT_EMBEDDING_VECTORS.

DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                             )->get_text_embedding_vectors( ).

Recupera lo stato degli incorporamenti di testo

Per ottenere lo stato di ogni generazione di embedding di testo per ogni riga, utilizza il metodo GET_TEXT_EMBEDDING_STATUS.

Se l'operazione è riuscita, lo stato è vuoto.

DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                                    )->get_text_embedding_status( ).

Ottieni lo stato del job di query

Ogni query su BigQuery viene eseguita come job di query.

Per ottenere lo stato del job di query sugli embedding, utilizza il metodo GET_QUERY_JOB_STATUS.

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                       )->get_query_job_status(
IMPORTING ev_job_complete          = DATA(lv_job_complete)
  ev_job_creation_reason   = DATA(lv_job_creation_reason)
  ev_job_id                = DATA(lv_job_id)
  ev_query_id              = DATA(lv_query_id)
  ev_total_bytes_processed = DATA(lv_total_bytes_processed)
  ev_total_rows            = DATA(lv_total_rows) ).

Il metodo restituisce le seguenti metriche relative allo stato del job:

  • Indica se la query è stata completata o meno.
  • Il motivo per cui è stato creato un job.
  • Riferimento al job creato per eseguire la query.
  • ID generato automaticamente per la query.
  • Il numero totale di byte elaborati per questa query.
  • Il numero totale di righe nel set di risultati completo della query.

Ottieni errori dei job di query

Per recuperare gli eventuali errori del job di query, utilizza il metodo GET_QUERY_JOB_ERRORS.

DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                   )->get_query_job_errors( ).

Ottenere una risposta complessiva per gli incorporamenti di testo

Per ottenere una tabella di risposta complessiva per la query di embedding del testo eseguita, utilizza il metodo GET_TEXT_EMBEDDING_RESPONSE.

Una risposta viene compilata solo quando il parametro di generazione del modello FLATTEN_JSON_OUTPUT è impostato su TRUE nella query.

DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                           )->get_text_embedding_response( ).