In diesem Dokument wird beschrieben, wie Sie die Einbettungsmodelle aufrufen, um mit dem Vertex AI SDK für ABAP Text- und multimodale Einbettungen zu generieren.
Einbettungen sind im Wesentlichen numerische Codes, die Text, Bilder oder Videos so darstellen, dass ihre Beziehung zueinander erfasst wird. Anwendungen verwenden diese Codes, um die Sprache zu verstehen und zu generieren. Dadurch werden selbst die komplexesten Bedeutungen und Beziehungen in Ihren spezifischen Inhalten erkannt. Dabei werden Text, Bilder und Videos in Listen mit Zahlen umgewandelt, die als Vektoren bezeichnet werden. Diese sollen die Bedeutung der ursprünglichen Inhalte effektiv erfassen.
Typische Anwendungsfälle für Texteinbettungen sind:
- Semantische Suche: Suchtext, geordnet nach der semantischen Ähnlichkeit.
- Klassifizierung: Gibt die Klasse von Elementen zurück, deren Textattribute dem angegebenen Text ähneln.
- Clustering: Clusterelemente, deren Textattribute dem angegebenen Text ähneln.
- Ausreißererkennung: Gibt Elemente zurück, bei denen Textattribute am wenigsten mit dem angegebenen Text zusammenhängen.
- Unterhaltungsschnittstelle: Gruppiert Gruppen von Sätzen, die zu ähnlichen Antworten führen können, z. B. in einem Einbettungsbereich auf Unterhaltungsebene.
Mit dem Vertex AI SDK für ABAP können Sie mithilfe der Klassen und Methoden, die im SDK enthalten sind, Einbettungen aus der ABAP-Anwendungslogik generieren. Das SDK bietet auch vorkonfigurierte Methoden, um die generierten Einbettungen in die folgenden Datenspeicher zu übertragen:
- Cloud Storage: Sie können die Einbettungen aus einem Cloud Storage-Bucket zum Erstellen von Vektorindexen und Ausführen der Vektorsuche verwenden.
- BigQuery: Sie können die Einbettungen aus einem BigQuery-Dataset als Vektordatenbank für Ihre Unternehmensdaten verwenden.
Sie können die Einbettungen auch in einem Pub/Sub-Thema veröffentlichen, das an ein BigQuery-Dataset oder ein Abonnentensystem weitergeleitet werden kann.
Hinweise
Bevor Sie das Vertex AI SDK for ABAP mit den Einbettungsmodellen verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:
- Sie haben die Vertex AI API in Ihrem Google Cloud-Projekt aktiviert.
- Sie haben das Vertex AI SDK für ABAP in Ihrer SAP-Umgebung installiert.
- Sie haben die Authentifizierung eingerichtet, um auf die Vertex AI API zuzugreifen.
- Sie haben die Parameter für die Modellgenerierung konfiguriert. Für das Generieren von Einbettungen sind nur die folgenden Parameter erforderlich:
Client Key
,Model Key
,Model ID
,Google Cloud Region Location
undPublisher
.
Einbettungen generieren
In diesem Abschnitt wird beschrieben, wie Sie mit dem Vertex AI SDK für ABAP Einbettungen generieren.
Klasse für multimodale Einbettungen instanziieren
Wenn Sie die multimodalen Einbettungsmodelle von Vertex AI mithilfe von Text- oder multimodalen Eingaben aufrufen möchten, können Sie die Klasse /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Sie instanziieren die Klasse, indem Sie den Modellschlüssel übergeben, der in den Parametern zur Modellgenerierung konfiguriert ist.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Ersetzen Sie MODEL_KEY
durch den Modellschlüsselnamen, der in den Modellgenerierungsparametern konfiguriert ist.
Texteinbettungen generieren
Zum Generieren von Einbettungen für ein Text-Snippet können Sie die Methode GEN_TEXT_EMBEDDINGS
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Optional können Sie auch eine Dimension für die Ausgabe-Einbettungen angeben.
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( ).
Ersetzen Sie Folgendes:
DIMENSION
: Optional. Die Dimensionalität der Ausgabeeinbettungen. Die Standarddimension ist768
.INPUT_TEXT
: Text, für den Einbettungen generiert werden sollen.
Sie können auch Einbettungen für ein Snippet aus Text generieren, indem Sie eine vorkonfigurierte Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
verwenden, die mit dem SDK geliefert wird.
Mit dieser Vorlage können Sie unternehmensspezifische schematische Informationen zusammen mit den Einbettungen in der generierten Einbettungsdatei erfassen.
Wenn Sie anhand der Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
Einbettungen für einen Textausschnitt generieren möchten, können Sie die Methode GEN_TEXT_EMBEDDINGS_BY_STRUCT
verwenden.
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( ).
Ersetzen Sie Folgendes:
ENTITY_ID
: Entitäts-ID für den Einbettungsdatensatz.INPUT_TEXT
: Text, für den Einbettungen generiert werden sollen.SOURCE_MODULE
: Quellmodul des Einbettungsinhalts.DIMENSION
: Optional. Die Dimensionalität der Ausgabeeinbettungen. Die Standarddimension ist768
.
Bildeinbettungen generieren
Mit der Methode GEN_IMAGE_EMBEDDINGS
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
können Sie Einbettungen für ein Eingabebild generieren.
Sie können entweder die Rohdaten eines Bilds oder den Cloud Storage-URI einer Bilddatei übergeben.
Optional können Sie auch einen kontextbezogenen Text für das Bild und eine Dimension für die Ausgabe-Einbettungen angeben.
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( ).
Ersetzen Sie Folgendes:
IMAGE_URI
: Der Cloud Storage-URI des Zielbildes, für das Einbettungen abgerufen werden sollen.CONTEXTUAL_TEXT
: Optional. Zusätzlicher Kontext und zusätzliche Bedeutung für den Inhalt eines Bildes im Einbettungsmodell.
Sie können auch Einbettungen für Bilder mithilfe einer vorkonfigurierten Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
generieren, die mit dem SDK geliefert wird.
Mit dieser Vorlage können Sie unternehmensspezifische schematische Informationen zusammen mit den Einbettungen in der generierten Einbettungsdatei erfassen.
Wenn Sie anhand der Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
Einbettungen für ein Bild generieren möchten, können Sie die Methode GEN_IMAGE_EMBEDDINGS_BY_STRUCT
verwenden.
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( ).
Ersetzen Sie Folgendes:
IMAGE_URI
: Der Cloud Storage-URI des Zielbildes, für das Einbettungen abgerufen werden sollen.ENTITY_ID
: Entitäts-ID für den Einbettungsdatensatz.INPUT_TEXT
: Text, für den Einbettungen generiert werden sollen.SOURCE_MODULE
: Quellmodul des Einbettungsinhalts.
Verwenden Sie folgenden Code, um Einbettungen für einen kontextbezogenen Text abzurufen:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Diese Option ist nur für das Einbetten eines einzelnen Bildes verfügbar.
Videoeinbettungen generieren
Mit der Methode GET_VIDEO_EMBEDDINGS
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
können Sie Einbettungen für ein Eingabevideo generieren.
Sie können den Cloud Storage-URI einer Videodatei zusammen mit einem optionalen Start- und Endversatz in Sekunden übergeben.
Optional können Sie auch einen kontextbezogenen Text für das Video und eine Dimension für die Ausgabe-Einbettungen angeben.
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
: Der Cloud Storage-URI des Zielvideos, für das Einbettungen abgerufen werden sollen.CONTEXTUAL_TEXT
: Optional. Zusätzlicher Kontext und Bedeutung für den Inhalt eines Videos für das Einbettungsmodell.DIMENSION
: Optional. Die Dimensionalität der Ausgabeeinbettungen. Verfügbare Dimensionen sind128
,256
,512
und1408
(Standard).
Die Methode GET_VECTOR
gibt die Einbettungen nur für das erste Segment des Videos zurück.
Verwenden Sie den folgenden Code, um das Einbetten für kontextbezogenen Text abzurufen:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Diese Option ist nur für das Einbetten einzelner Videos verfügbar.
Alle generierten Einbettungen erfassen
Um alle generierten Einbettungen in einer internen Tabelle vom Typ /GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
zu erfassen, können Sie die Methode COLLECT
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
in Kombination mit den Methoden GEN_TEXT_EMBEDDINGS_BY_STRUCT
und GEN_IMAGE_EMBEDDINGS_BY_STRUCT
verwenden.
Das ist nützlich, wenn Sie Einbettungen für ein Array von Elementen (text/image
) generieren möchten und die Einbettungen in einer Schleifeniteration generieren und nach der Iteration alle Einbettungen gleichzeitig in einer internen Tabelle abrufen möchten. Mit der Methode GET_VECTOR_BY_TABLE
können Sie die endgültige interne Tabelle der Einbettungen abrufen.
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( ).
Einbettungen an einen Datenspeicher senden
Sie können die generierten Einbettungen mit der mit dem SDK gelieferten Vorlage an einen Cloud Storage-Bucket oder ein BigQuery-Dataset senden.
Einbettungen in Cloud Storage speichern
Um die generierten Einbettungen an einen Cloud Storage-Bucket zu senden, können Sie die Methode SEND_STRUCT_TO_GCS
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Vor dem Senden der Einbettungen an einen Cloud Storage benötigen Sie einen Cloud Storage-Bucket, an den Sie die Einbettungen senden möchten.
Einzelne Einbettungen an einen Cloud Storage-Bucket senden
Im folgenden Codebeispiel wird gezeigt, wie Sie einzelne Bildeinbettungen an einen Cloud Storage-Bucket senden:
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' ).
Ersetzen Sie Folgendes:
IMAGE_URI
: Der Cloud Storage-URI des Zielbildes, für das Einbettungen abgerufen werden sollen.CLIENT_KEY
: Clientschlüssel zum Aufrufen der Cloud Storage API.BUCKET_NAME
: Name des Cloud Storage-Ziel-Buckets.FILE_NAME
: Dateiname der Einbettungen.
Erfasste Einbettungen an einen Cloud Storage-Bucket senden
Im folgenden Codebeispiel wird gezeigt, wie erfasste Einbettungen an einen Cloud Storage-Bucket gesendet werden:
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' ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Clientschlüssel zum Aufrufen der Cloud Storage API.BUCKET_NAME
: Name des Cloud Storage-Ziel-Buckets.FILE_NAME
: Dateiname der Einbettungen.
Einbettungen in BigQuery speichern
Wenn Sie die generierten Einbettungen an ein BigQuery-Dataset senden möchten, können Sie die SEND_STRUCT_TO_BQ
-Methode des /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Bevor Sie die Einbettungen an BigQuery senden, benötigen Sie ein Dataset und eine Tabelle, an die Sie die Einbettungen senden möchten.
Einzelne Einbettungen an ein BigQuery-Dataset senden
Im folgenden Codebeispiel wird gezeigt, wie einzelne Bildeinbettungen an ein BigQuery-Dataset gesendet werden:
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' ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Clientschlüssel zum Aufrufen der BigQuery API.DATASET_ID
: BigQuery-Dataset-ID.TABLE_ID
: BigQuery-Tabellen-ID.
Erfasste Einbettungen an ein BigQuery-Dataset senden
Im folgenden Codebeispiel wird gezeigt, wie Sie erfasste Einbettungen an ein BigQuery-Dataset senden:
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' ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Clientschlüssel zum Aufrufen der BigQuery API.DATASET_ID
: BigQuery-Dataset-ID.TABLE_ID
: BigQuery-Tabellen-ID.
Einbettungen in einem Pub/Sub-Thema veröffentlichen
Zum Veröffentlichen der generierten Einbettungen in einem Pub/Sub-Thema können Sie die Methode SEND_STRUCT_TO_PUBSUB
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Dies kann nützlich sein, wenn Sie eigene benutzerdefinierte Pipelines erstellen müssen, um Einbettungen zu speichern und nachfolgende Geschäftsprozesse zu erstellen.
Bevor Sie die Einbettungen an ein Pub/Sub-Thema senden, benötigen Sie ein Pub/Sub-Thema, an das Sie die Einbettungen senden möchten.
Einzelne Einbettungen in einem Pub/Sub-Thema veröffentlichen
Das folgende Codebeispiel zeigt, wie Sie einzelne Bildeinbettungen in einem Pub/Sub-Thema veröffentlichen:
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' ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Clientschlüssel für das Aufrufen der Pub/Sub API.TOPIC_ID
: Pub/Sub-Themen-ID.
Erfasste Einbettungen in einem Pub/Sub-Thema veröffentlichen
Das folgende Codebeispiel zeigt, wie Sie erfasste Einbettungen in einem Pub/Sub-Thema veröffentlichen:
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' ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Clientschlüssel für das Aufrufen der Pub/Sub API.TOPIC_ID
: Pub/Sub-Themen-ID.
Nächste Schritte
In den Cloud-Foren können Sie Ihre Fragen stellen und mit der Community über das Vertex AI SDK sprechen.