Questo documento descrive come richiamare i modelli di embedding per generare embedding di testo e multimodali utilizzando l'SDK Vertex AI per ABAP.
Gli incorporamenti sono essenzialmente codici numerici che rappresentano testo, immagini o video in un modo che ne descriva la relazione. Le applicazioni utilizzano questi codici per comprendere e generare il linguaggio, riconoscendo anche i significati e le relazioni più complessi all'interno dei tuoi contenuti specifici. Il processo funziona trasformando testo, immagini e video in elenchi di numeri, noti come vettori, progettati per cogliere efficacemente il significato dei contenuti originali.
Ecco alcuni casi d'uso comuni per gli embedding di testo:
- Ricerca semantica: il testo di ricerca viene classificato in base alla somiglianza semantica.
- Classificazione: restituisce la classe degli elementi i cui attributi di testo sono simili al testo specificato.
- Clustering: raggruppa gli elementi i cui attributi di testo sono simili al testo specificato.
- Rilevamento di valori anomali: restituisce gli elementi in cui gli attributi di testo sono meno correlati al testo specificato.
- Interfaccia di conversazione: raggruppa in cluster gruppi di frasi che possono portare a risposte simili, ad esempio in uno spazio di embedding a livello di conversazione.
Con l'SDK Vertex AI per ABAP, puoi generare embedding dalla logica dell'applicazione ABAP utilizzando le classi e i metodi forniti con l'SDK. L'SDK fornisce anche metodi pronti all'uso per inviare gli embedding generati ai seguenti datastore:
- Cloud Storage: puoi utilizzare gli incorporamenti di un bucket Cloud Storage per creare indici di vettori ed eseguire la ricerca vettoriale.
- BigQuery: puoi utilizzare gli embedding di un set di dati BigQuery come database vettoriale per i dati aziendali.
Puoi anche pubblicare gli embedding in un argomento Pub/Sub che può essere indirizzato a un set di dati BigQuery o a un sistema di abbonati.
Prima di iniziare
Prima di utilizzare l'SDK Vertex AI per ABAP con i modelli di embedding, assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:
- Hai attivato l'API Vertex AI nel tuo progetto Google Cloud.
- Hai installato l'SDK Vertex AI per ABAP nel tuo ambiente SAP.
- Configura l'autenticazione per accedere all'API Vertex AI.
- Configura i parametri di generazione del modello. Per generare gli embedding, sono richiesti solo i seguenti parametri: Model Key, Model ID, Google Cloud Key Name, Google Cloud Region Location ID e Publisher ID of the LLM.
Genera embedding
Questa sezione spiega come generare embedding utilizzando l'SDK Vertex AI per ABAP.
Crea un'istanza della classe di embedding multimodali
Per richiamare i modelli di embedding multimodali di Vertex AI utilizzando input di testo o multimodali, puoi utilizzare la classe /GOOG/CL_EMBEDDINGS_MODEL
.
Puoi creare un'istanza della classe
passando la chiave del modello configurata nei parametri di generazione del modello.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Sostituisci MODEL_KEY
con il nome della chiave del modello, configurata
nei parametri di generazione del modello.
Genera incorporamenti di testo
Per generare incorporamenti per uno snippet di testo, puoi utilizzare il metodo GEN_TEXT_EMBEDDINGS
della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Se vuoi, puoi anche specificare una dimensione per gli embedding di output.
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings(
iv_content = 'INPUT_TEXT'
is_addln_params = ls_addln_params
)->get_vector( ).
Sostituisci quanto segue:
DIMENSION
: facoltativo. La dimensionalità degli embedding di output. La dimensione predefinita è768
.INPUT_TEXT
: il testo per cui devono essere generati gli incorporamenti.
Puoi anche generare embedding per uno snippet di testo utilizzando un
modello /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
predefinito fornito con l'SDK.
Questo modello ti consente di acquisire informazioni schematiche specifiche dell'azienda nel file degli embedding generati insieme agli embedding.
Per generare incorporamenti per uno snippet di testo, in base al
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
modello, puoi utilizzare il metodo GEN_TEXT_EMBEDDINGS_BY_STRUCT
.
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(ls_addln_params) = VALUE /goog/cl_embeddings_model=>ty_addln_params(
output_dimensionality = 'DIMENSION' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_text_embeddings_by_struct(
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->get_vector_by_struct( ).
Sostituisci quanto segue:
ENTITY_ID
: ID entità per il record degli embedding.INPUT_TEXT
: il testo per cui devono essere generati gli incorporamenti.SOURCE_MODULE
: modulo di origine dei contenuti degli incorporamenti.DIMENSION
: facoltativo. La dimensionalità degli embedding di output. La dimensione predefinita è768
.
Genera embedding di immagini
Per generare embedding per un'immagine di input, puoi utilizzare il metodo GEN_IMAGE_EMBEDDINGS
della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Puoi passare i dati non elaborati
di un'immagine o l'URI Cloud Storage di un file immagine.
Se vuoi, puoi anche specificare un testo contestuale per l'immagine e una dimensione per gli incorporamenti in uscita.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings( iv_image = ls_image
iv_contextual_text = 'CONTEXTUAL_TEXT'
)->get_vector( ).
Sostituisci quanto segue:
IMAGE_URI
: l'URI Cloud Storage dell'immagine di destinazione per cui ottenere gli embedding.CONTEXTUAL_TEXT
: facoltativo. Contesto e significato aggiuntivi ai contenuti di un'immagine per il modello di embedding.
Puoi anche generare embedding per le immagini utilizzando un
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
modello/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
predefinito fornito con l'SDK.
Questo modello ti consente di acquisire informazioni schematiche specifiche dell'azienda nel file degli embedding generati insieme agli embedding.
Per generare embedding per un'immagine in base al
/GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
modello, puoi utilizzare il metodo GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
DATA(ls_embedding_template) = VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
id = ENTITY_ID
content = INPUT_TEXT
source = SOURCE_MODULE ).
DATA(lt_embeddings) = lo_embeddings_model->gen_image_embeddings_by_struct(
iv_image = ls_image
is_input = ls_embedding_template
)->get_vector_by_struct( ).
Sostituisci quanto segue:
IMAGE_URI
: l'URI Cloud Storage dell'immagine di destinazione per cui ottenere gli embedding.ENTITY_ID
: ID entità per il record degli embedding.INPUT_TEXT
: il testo per cui devono essere generati gli incorporamenti.SOURCE_MODULE
: modulo di origine dei contenuti degli incorporamenti.
Per recuperare gli embedding per un testo contestuale, utilizza il seguente codice:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Questa opzione è disponibile solo per la creazione di singoli incorporamenti di immagini.
Genera embedding video
Per generare embedding per un video di input, puoi utilizzare il GET_VIDEO_EMBEDDINGS
metodo della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Puoi passare l'URI Cloud Storage di un file video insieme all'ora di offset di inizio e di fine facoltativa in secondi.
Se vuoi, puoi anche specificare un testo contestuale per il video e una dimensione per gli embedding di output.
DATA(ls_video) = VALUE /goog/cl_embeddings_model=>ty_video( gcs_uri = 'VIDEO_URI' ).
DATA(lt_embeddings) = lo_embeddings_model->gen_video_embeddings( iv_video = ls_video
iv_contextual_text = 'CONTEXTUAL_TEXT'
iv_dimension = 'DIMENSION'
)->get_vector( ).
VIDEO_URI
: l'URI Cloud Storage del video di destinazione per cui ottenere gli embedding.CONTEXTUAL_TEXT
: facoltativo. Contesto e significato aggiuntivi ai contenuti di un video per il modello di embedding.DIMENSION
: facoltativo. La dimensionalità degli embedding di output. Le dimensioni disponibili sono:128
,256
,512
e1408
(valore predefinito).
Il metodo GET_VECTOR
restituisce gli elementi incorporati solo per il primo segmento del video.
Per recuperare l'embedding per il testo contestuale, utilizza il seguente codice:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Questa opzione è disponibile solo per la creazione di singoli video incorporati.
Raccogliere tutti gli incorporamenti generati
Per raccogliere tutti gli embedding generati in una tabella interna di tipo
/GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, puoi utilizzare il metodo COLLECT
della classe /GOOG/CL_EMBEDDINGS_MODEL
in combinazione con i metodi GEN_TEXT_EMBEDDINGS_BY_STRUCT
e GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Questo è utile quando devi generare embedding per un array di elementi (text/image
) e vuoi generare embedding in un'iterazione del ciclo e ottenere tutti gli embedding contemporaneamente in una tabella interna dopo l'iterazione. Il metodo GET_VECTOR_BY_TABLE
può essere utilizzato per ottenere la tabella interna finale degli embedding.
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
DATA(lt_embeddings) = lo_embeddings_model->get_vector_by_table( ).
Inviare gli embedding a un datastore
Puoi inviare gli embedding generati a un bucket Cloud Storage o a un set di dati BigQuery utilizzando il modello fornito con l'SDK.
Memorizzare le incorporazioni in Cloud Storage
Per inviare gli embedding generati a un bucket Cloud Storage, puoi utilizzare il metodo SEND_STRUCT_TO_GCS
della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Prima di inviare gli incorporamenti a Cloud Storage, assicurati di avere un bucket Cloud Storage a cui inviarli.
Invia singoli embedding a un bucket Cloud Storage
Il seguente esempio di codice illustra come inviare singoli embedding di immagini in un bucket Cloud Storage:
DATA(ls_image) = VALUE /goog/cl_embeddings_model=>ty_image( gcs_uri = 'IMAGE_URI' ).
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Sostituisci quanto segue:
IMAGE_URI
: l'URI Cloud Storage dell'immagine di destinazione per cui ottenere gli embedding.CLIENT_KEY
: chiave client per l'invocazione dell'API Cloud Storage.BUCKET_NAME
: nome del bucket Cloud Storage di destinazione.FILE_NAME
: nome del file degli incorporamenti.
Invia gli embedding raccolti a un bucket Cloud Storage
Il seguente esempio di codice mostra come inviare gli embedding raccolti in un bucket Cloud Storage:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_gcs( iv_key = 'CLIENT_KEY'
iv_bucket_name = 'BUCKET_NAME'
iv_file_name = 'FILE_NAME' ).
Sostituisci quanto segue:
CLIENT_KEY
: chiave client per l'invocazione dell'API Cloud Storage.BUCKET_NAME
: nome del bucket Cloud Storage di destinazione.FILE_NAME
: nome del file degli incorporamenti.
Memorizza gli embedding in BigQuery
Per inviare gli embedding generati a un set di dati BigQuery,
puoi utilizzare il metodo SEND_STRUCT_TO_BQ
di /GOOG/CL_EMBEDDINGS_MODEL
.
Prima di inviare gli embedding a BigQuery, assicurati di avere un set di dati e una tabella BigQuery a cui vuoi inviare gli embedding.
Invia singoli embedding a un set di dati BigQuery
Il seguente esempio di codice illustra come inviare singoli embedding di immagini a un set di dati BigQuery:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Sostituisci quanto segue:
CLIENT_KEY
: chiave client per l'invocazione dell'API BigQuery.DATASET_ID
: ID set di dati BigQuery.TABLE_ID
: ID tabella BigQuery.
Invia gli embedding raccolti a un set di dati BigQuery
Il seguente esempio di codice illustra come inviare gli embedding raccolti a un set di dati BigQuery:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_bq( iv_key = 'CLIENT_KEY'
iv_dataset_id = 'DATASET_ID'
iv_table_id = 'TABLE_ID' ).
Sostituisci quanto segue:
CLIENT_KEY
: chiave client per l'invocazione dell'API BigQuery.DATASET_ID
: ID set di dati BigQuery.TABLE_ID
: ID tabella BigQuery.
Pubblicare gli embedding in un argomento Pub/Sub
Per pubblicare gli embedding generati in un argomento Pub/Sub, puoi utilizzare il metodo SEND_STRUCT_TO_PUBSUB
della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Questa funzionalità può essere utile per scenari in cui devi creare le tue pipeline personalizzate per archiviare gli embedding e sviluppare processi aziendali successivi.
Prima di inviare gli embedding a un argomento Pub/Sub, assicurati di avere un argomento Pub/Sub a cui vuoi inviarli.
Pubblicare singoli embedding in un argomento Pub/Sub
Il seguente esempio di codice illustra come pubblicare singoli incorporamenti di immagini in un argomento Pub/Sub:
lo_embeddings_model->gen_image_embeddings_by_struct( iv_image = ls_image
is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Sostituisci quanto segue:
CLIENT_KEY
: chiave client per l'invocazione dell'API Pub/Sub.TOPIC_ID
: ID argomento Pub/Sub.
Pubblica gli embedding raccolti in un argomento Pub/Sub
Il seguente esempio di codice illustra come pubblicare gli embedding raccolti in un argomento Pub/Sub:
LOOP AT ....
lo_embeddings_model->gen_text_embeddings_by_struct( is_input = ls_embedding_template
is_addln_params = ls_addln_params
)->collect( ).
ENDLOOP.
lo_embeddings_model->send_struct_to_pubsub( iv_key = 'CLIENT_KEY'
iv_topic_id = 'TOPIC_ID' ).
Sostituisci quanto segue:
CLIENT_KEY
: chiave client per l'invocazione dell'API Pub/Sub.TOPIC_ID
: ID argomento Pub/Sub.
Passaggi successivi
Scopri di più sullo sviluppo di applicazioni con la versione on-premise o qualsiasi versione cloud di ABAP SDK for Google Cloud.
Poni le tue domande e discuti dell'SDK Vertex AI per ABAP con la community nei forum di Cloud.