Questo documento descrive come richiamare i modelli di embedding per generare embedding di testo e multimodali utilizzando l'SDK Vertex AI per ABAP.
Incorporamenti sono essenzialmente codici numerici che rappresentano testo, immagini o video in modo da capire in che modo sono correlati. 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 testi, immagini e video in elenchi di numeri, chiamati vettori, che vengono progettati per catturare in modo efficace 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.
- Cluster: elementi del cluster 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 conversazionale: raggruppa gruppi di frasi che possono portare a risposte simili, ad esempio in uno spazio di incorporamento a livello di conversazione.
Con l'SDK Vertex AI per ABAP, puoi generare incorporamenti dalla logica dell'applicazione ABAP utilizzando le classi e i metodi che 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 da un bucket per creare indici vettoriali 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 l'incorporamento assicurati che tu o i tuoi amministratori abbiate completato i seguenti prerequisiti:
- Abilitare 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.
- Configurato i parametri di generazione del modello. Per generare gli embedding, sono obbligatori solo i seguenti parametri:
Client Key
,Model Key
,Model ID
,Google Cloud Region Location
ePublisher
.
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 incorporamenti di output. La dimensione predefinita è768
.INPUT_TEXT
: il testo per cui devono essere generati gli incorporamenti.
Puoi anche generare incorporamenti per uno snippet di testo utilizzando una
modello /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, fornito con l'SDK.
Questo modello ti consente di acquisire informazioni schematiche specifiche per l'azienda
nel file degli incorporamenti generato.
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 incorporamenti di output. La dimensione predefinita è768
.
Genera embedding di immagini
Per generare incorporamenti per un'immagine di input, puoi utilizzare 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
: URI Cloud Storage dell'immagine di destinazione per cui ottenere gli incorporamenti.CONTEXTUAL_TEXT
: facoltativo. Contesto e significato aggiuntivi ai contenuti di un'immagine per il modello di embedding.
Puoi anche generare incorporamenti per le immagini utilizzando una
modello /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, fornito con l'SDK.
Questo modello ti consente di acquisire informazioni schematiche specifiche per l'azienda
nel file degli incorporamenti generato.
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
: URI Cloud Storage dell'immagine di destinazione per cui ottenere gli incorporamenti.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 di 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
: URI Cloud Storage del video di destinazione per cui ottenere gli incorporamenti.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.
Raccogli tutti gli incorporamenti generati
a raccogliere tutti gli incorporamenti generati in una tabella interna di tipo.
/GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, puoi usare COLLECT
della classe /GOOG/CL_EMBEDDINGS_MODEL
in combinazione con i metodi GEN_TEXT_EMBEDDINGS_BY_STRUCT
e GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Questa operazione è 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( ).
Invia incorporamenti a un datastore
Puoi inviare gli incorporamenti generati a un bucket Cloud Storage o un set di dati BigQuery utilizzando il modello viene fornito con l'SDK.
Memorizzare le incorporazioni in Cloud Storage
Per inviare gli incorporamenti 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 incorporamenti a un bucket Cloud Storage
Il seguente esempio di codice mostra 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 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 incorporamenti generati a un set di dati BigQuery,
puoi usare il metodo SEND_STRUCT_TO_BQ
di /GOOG/CL_EMBEDDINGS_MODEL
.
Prima di inviare gli incorporamenti a un BigQuery, assicurati di avere un dataset BigQuery e una tabella a cui vuoi inviare gli incorporamenti.
Invia singoli embedding a un set di dati BigQuery
Il seguente esempio di codice illustra come inviare singoli incorporamenti di immagini in 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 richiamare l'API BigQuery.DATASET_ID
: ID set di dati BigQuery.TABLE_ID
: ID tabella BigQuery.
Invia gli incorporamenti 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 richiamare l'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 incorporamenti generati in un argomento Pub/Sub, puoi utilizzare
il metodo SEND_STRUCT_TO_PUBSUB
della classe /GOOG/CL_EMBEDDINGS_MODEL
.
Può essere utile
per scenari in cui devi creare pipeline personalizzate
per l'archiviazione degli incorporamenti e la creazione
di processi aziendali aggiuntivi.
Prima di inviare gli incorporamenti a un argomento Pub/Sub, assicurati di avere un argomento Pub/Sub a cui vuoi inviare gli incorporamenti.
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 incorporamenti 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.
Fai le tue domande e discuti dell'SDK Vertex AI per ABAP con la community nei forum di Cloud.