In diesem Dokument wird beschrieben, wie Sie die Einbettungsmodelle aufrufen, um mit dem Vertex AI SDK for 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 Sprache zu verstehen und zu generieren und selbst die komplexesten Bedeutungen und Beziehungen in Ihren spezifischen Inhalten zu erkennen. 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 Text-Embeddings:
- 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 mit dem SDK geliefert werden, 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 Abosystem weitergeleitet werden kann.
Hinweise
Bevor Sie das Vertex AI SDK für 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.
- Konfigurierte Parameter zur Modellgenerierung Zum Generieren von Einbettungen sind nur die folgenden Parameter erforderlich: Modellschlüssel, Modell-ID, Google Cloud-Schlüsselname, Standort-ID der Google Cloud-Region und Publisher-ID des LLM.
Einbettungen generieren
In diesem Abschnitt wird erläutert, 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 in den Parametern für die Modellgenerierung konfigurierten Modellschlüssel übergeben.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Ersetzen Sie MODEL_KEY
durch den Namen des Modellschlüssels, der in den Parametern für die Modellgenerierung konfiguriert ist.
Texteinbettungen generieren
Zum Generieren von Einbettungen für einen Textausschnitt 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 Dimension der Ausgabevektoren. Die Standarddimension ist768
.INPUT_TEXT
: Text, für den Einbettungen generiert werden sollen.
Sie können auch mithilfe einer vorkonfigurierten Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, die im SDK enthalten ist, Einbettungen für einen Textausschnitt generieren.
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 Dimension der Ausgabevektoren. 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 Bedeutung für den Inhalt eines Bildes für das Einbettungsmodell.
Sie können auch Einbettungen für Bilder generieren, indem Sie eine vorkonfigurierte Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
verwenden, die im SDK enthalten ist.
Mit dieser Vorlage können Sie unternehmensspezifische schematische Informationen zusammen mit den Einbettungen in der generierten Einbettungsdatei erfassen.
Mit der Methode GEN_IMAGE_EMBEDDINGS_BY_STRUCT
können Sie anhand der Vorlage /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
Einbettungen für ein Bild generieren.
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 den 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.
Video-Embeddings generieren
Mit der Methode GET_VIDEO_EMBEDDINGS
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
können Sie Einbettungen für ein Eingabevideo generieren.
Du kannst den Cloud Storage-URI einer Videodatei zusammen mit optionalen Start- und Endzeitoffsets 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 Dimension der Ausgabevektoren. Verfügbare Dimensionen:128
,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 mit 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 mithilfe der im SDK enthaltenen Vorlage an einen Cloud Storage-Bucket oder ein BigQuery-Dataset senden.
Einbettungen in Cloud Storage speichern
Wenn Sie die generierten Einbettungen an einen Cloud Storage-Bucket senden möchten, können Sie die SEND_STRUCT_TO_GCS
-Methode der /GOOG/CL_EMBEDDINGS_MODEL
-Klasse verwenden.
Bevor Sie Einbettungen an Cloud Storage senden, 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 einzelne Bildeinbettungen an einen Cloud Storage-Bucket gesendet werden:
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 erfasste Einbettungen an ein BigQuery-Dataset 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_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
Um die generierten Einbettungen in einem Pub/Sub-Thema zu veröffentlichen, können Sie die Methode SEND_STRUCT_TO_PUBSUB
der Klasse /GOOG/CL_EMBEDDINGS_MODEL
verwenden.
Das kann in Szenarien nützlich sein, in denen Sie eigene benutzerdefinierte Pipelines zum Speichern von Einbettungen und zum Erstellen nachfolgender Geschäftsprozesse erstellen müssen.
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 zum Aufrufen der Pub/Sub API.TOPIC_ID
: Pub/Sub-Themen-ID.
Gesammelte 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 zum 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.