En este documento, se describe cómo invocar los modelos de embedding para generar embedding de texto y multimodales con el SDK de Vertex AI para ABAP.
Los embeddings son, en esencia, códigos numéricos que representan texto, imágenes o videos de una manera que captura cómo se relacionan. Las aplicaciones usan estos códigos para comprender y generar lenguaje, y reconocer incluso los significados y las relaciones más complejos en tu contenido específico. El proceso funciona transformando el texto, las imágenes y los videos en listas de números, conocidos como vectores, que están diseñados para capturar con eficacia el significado del contenido original.
Estos son algunos casos de uso comunes de las incorporaciones de texto:
- Búsqueda semántica: Busca texto clasificado por similitud semántica.
- Clasificación: Muestra la clase de elementos cuyos atributos de texto son similares al texto dado.
- Agrupamiento en clústeres: Elementos de un clúster con atributos de texto similares a los textos proporcionados.
- Detección de valores atípicos: Muestra los elementos en los que los atributos de texto están menos relacionados con el texto dado.
- Interfaz de conversación: Agrupa grupos de oraciones que pueden generar respuestas similares, como en un espacio de embedding a nivel de conversación.
Con el SDK de Vertex AI para ABAP, puedes generar embeddings desde la lógica de la aplicación de ABAP con las clases y los métodos que se envían con el SDK. El SDK también proporciona métodos listos para usar para enviar los embeddings generados a los siguientes almacenes de datos:
- Cloud Storage: Puedes usar los embeddings de un bucket de Cloud Storage para compilar índices vectoriales y realizar la Búsqueda vectorial.
- BigQuery: Puedes usar los embeddings de un conjunto de datos de BigQuery como una base de datos vectorial para tus datos empresariales.
También puedes publicar los embeddings en un tema de Pub/Sub que se pueda dirigir a un conjunto de datos de BigQuery o a un sistema de suscriptores.
Antes de comenzar
Antes de usar el SDK de Vertex AI para ABAP con los modelos de embedding, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de Vertex AI en tu proyecto de Google Cloud.
- Instalaste el SDK de Vertex AI para ABAP en tu entorno de SAP.
- Configura la autenticación para acceder a la API de Vertex AI.
- Configuraste los parámetros de generación del modelo. Para generar embeddings, solo se requieren los siguientes parámetros: Clave del modelo, ID del modelo, Nombre de la clave de Google Cloud, ID de ubicación de la región de Google Cloud y ID del publicador del LLM.
Genera embeddings
En esta sección, se explica cómo generar embeddings con el SDK de Vertex AI para ABAP.
Crea una instancia de la clase de embeddings multimodales
Para invocar los modelos de embeddings multimodales de Vertex AI con entradas multimodales o de texto, puedes usar la clase /GOOG/CL_EMBEDDINGS_MODEL
.
Para crear una instancia de la clase, debes pasar la clave de modelo configurada en los parámetros de generación del modelo.
DATA(lo_embeddings_model) = NEW /goog/cl_embeddings_model( iv_model_key = 'MODEL_KEY' ).
Reemplaza MODEL_KEY
por el nombre de la clave de modelo, que se configura en los parámetros de generación del modelo.
Generar incorporaciones de texto
Para generar embeddings para un fragmento de texto, puedes usar el método GEN_TEXT_EMBEDDINGS
de la clase /GOOG/CL_EMBEDDINGS_MODEL
.
De manera opcional, también puedes especificar una dimensión para los embeddings de salida.
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( ).
Reemplaza lo siguiente:
DIMENSION
: Opcional La dimensionalidad de los embeddings de salida. La dimensión predeterminada es768
.INPUT_TEXT
: Es el texto para el que se deben generar los embeddings.
También puedes generar embeddings para un fragmento de texto con una plantilla /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
lista para usar, que se envía con el SDK.
Esta plantilla te permite capturar información de esquemas específicos de la empresa en el archivo de embeddings generado junto con los embeddings.
Para generar embeddings para un fragmento de texto, según la plantilla /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, puedes usar el método 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( ).
Reemplaza lo siguiente:
ENTITY_ID
: Es el ID de la entidad para el registro de embeddings.INPUT_TEXT
: Es el texto para el que se deben generar los embeddings.SOURCE_MODULE
: Es el módulo de origen del contenido de los embeddings.DIMENSION
: Opcional La dimensionalidad de los embeddings de salida. La dimensión predeterminada es768
.
Genera incorporaciones de imágenes
Para generar embeddings para una imagen de entrada, puedes usar el método GEN_IMAGE_EMBEDDINGS
de la clase /GOOG/CL_EMBEDDINGS_MODEL
.
Puedes pasar los datos sin procesar de una imagen o el URI de Cloud Storage de un archivo de imagen.
De manera opcional, también puedes especificar un texto contextual para la imagen y una dimensión para los embeddings de salida.
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( ).
Reemplaza lo siguiente:
IMAGE_URI
: El URI de Cloud Storage de la imagen para la que se obtendrán embeddings.CONTEXTUAL_TEXT
: Opcional Contexto y significado adicionales al contenido de una imagen para el modelo de embeddings.
También puedes generar embeddings para imágenes con una plantilla /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
lista para usar, que se envía con el SDK.
Esta plantilla te permite capturar información de esquemas específicos de la empresa en el archivo de embeddings generado junto con los embeddings.
Para generar embeddings para una imagen, según la plantilla /GOOG/CL_EMBEDDINGS_MODEL=>TY_EMBEDDINGS_TEMPLATE
, puedes usar el método 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( ).
Reemplaza lo siguiente:
IMAGE_URI
: El URI de Cloud Storage de la imagen para la que se obtendrán embeddings.ENTITY_ID
: Es el ID de la entidad para el registro de embeddings.INPUT_TEXT
: Es el texto para el que se deben generar los embeddings.SOURCE_MODULE
: Es el módulo de origen del contenido de los embeddings.
Para recuperar embeddings para un texto contextual, usa el siguiente código:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Esta opción solo está disponible para la creación de embeddings de imágenes individuales.
Genera embeddings de video
Para generar embeddings para un video de entrada, puedes usar el método GET_VIDEO_EMBEDDINGS
de la clase /GOOG/CL_EMBEDDINGS_MODEL
.
Puedes pasar el URI de Cloud Storage de un archivo de video junto con el tiempo de compensación de inicio y finalización opcional en segundos.
De manera opcional, también puedes especificar un texto contextual para el video y una dimensión para los embeddings de salida.
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
: Es el URI de Cloud Storage del video objetivo del que deseas obtener los embeddings.CONTEXTUAL_TEXT
: Opcional Contexto y significado adicionales al contenido de un video para el modelo de embeddings.DIMENSION
: Opcional La dimensionalidad de los embeddings de salida. Las dimensiones disponibles son:128
,256
,512
y1408
(predeterminada).
El método GET_VECTOR
muestra los embeddings solo para el primer segmento del video.
Para recuperar la embedding de texto contextual, usa el siguiente código:
DATA(lt_context_embeddings) = lo_embeddings_model->get_context_text_vector( ).
Esta opción solo está disponible para la creación de embeddings de un solo video.
Recopila todos los embeddings generados
Para recopilar todos los embeddings generados en una tabla interna de tipo /GOOG/CL_EMBEDDINGS_MODEL=>TY_T_EMBEDDINGS_TEMPLATE
, puedes usar el método COLLECT
de la clase /GOOG/CL_EMBEDDINGS_MODEL
en combinación con los métodos GEN_TEXT_EMBEDDINGS_BY_STRUCT
y GEN_IMAGE_EMBEDDINGS_BY_STRUCT
.
Esto es útil cuando tienes la necesidad de generar embeddings para un array de elementos (text/image
) y deseas generar embeddings en una iteración de bucle y obtener todas los embeddings a la vez en una tabla interna después de la iteración. El método GET_VECTOR_BY_TABLE
se puede usar para obtener la tabla interna final de embeddings.
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( ).
Envía embeddings a un almacén de datos
Puedes enviar los embeddings generados a un bucket de Cloud Storage o a un conjunto de datos de BigQuery con la plantilla que se incluye en el SDK.
Almacenamiento de embeddings en Cloud Storage
Para enviar los embeddings generados a un bucket de Cloud Storage, puedes usar el método SEND_STRUCT_TO_GCS
de la clase /GOOG/CL_EMBEDDINGS_MODEL
.
Antes de enviar embeddings a Cloud Storage, asegúrate de tener un bucket de Cloud Storage al que quieras enviarlos.
Envía embeddings individuales a un bucket de Cloud Storage
En la siguiente muestra de código, se muestra cómo enviar embeddings de imágenes individuales a un bucket de 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' ).
Reemplaza lo siguiente:
IMAGE_URI
: El URI de Cloud Storage de la imagen para la que se obtendrán embeddings.CLIENT_KEY
: Es la clave de cliente para invocar la API de Cloud Storage.BUCKET_NAME
: Es el nombre del bucket de Cloud Storage de destino.FILE_NAME
: Es el nombre del archivo de embedding.
Envía los embeddings recopilados a un bucket de Cloud Storage
En la siguiente muestra de código, se ilustra cómo enviar embeddings recopilados a un bucket de 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' ).
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave de cliente para invocar la API de Cloud Storage.BUCKET_NAME
: Es el nombre del bucket de Cloud Storage de destino.FILE_NAME
: Es el nombre del archivo de embedding.
Almacena embeddings en BigQuery
Para enviar los embeddings generados a un conjunto de datos de BigQuery, puedes usar el método SEND_STRUCT_TO_BQ
de /GOOG/CL_EMBEDDINGS_MODEL
.
Antes de enviar los embeddings a BigQuery, asegúrate de tener un dataset y una tabla a la que deseas enviar los embeddings.
Envía embeddings individuales a un conjunto de datos de BigQuery
En la siguiente muestra de código, se muestra cómo enviar embeddings de imágenes individuales a un conjunto de datos de 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' ).
Reemplaza lo siguiente:
CLIENT_KEY
: Clave de cliente para invocar la API de BigQuery.DATASET_ID
: ID del conjunto de datos de BigQuery.TABLE_ID
: ID de la tabla de BigQuery
Envía los embeddings recopilados a un conjunto de datos de BigQuery
En la siguiente muestra de código, se muestra cómo enviar embeddings recopilados a un conjunto de datos de 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' ).
Reemplaza lo siguiente:
CLIENT_KEY
: Clave de cliente para invocar la API de BigQuery.DATASET_ID
: ID del conjunto de datos de BigQuery.TABLE_ID
: ID de la tabla de BigQuery
Publica embeddings en un tema de Pub/Sub
Para publicar los embeddings generados en un tema de Pub/Sub, puedes usar el método SEND_STRUCT_TO_PUBSUB
de la clase /GOOG/CL_EMBEDDINGS_MODEL
.
Esto puede ser útil para situaciones en las que necesitas crear tus propias canalizaciones personalizadas para almacenar embeddings y crear procesos comerciales posteriores.
Antes de enviar los embeddings a un tema de Pub/Sub, asegúrate de tener un tema de Pub/Sub al que deseas enviar los embeddings.
Publica embeddings individuales en un tema de Pub/Sub
En la siguiente muestra de código, se muestra cómo publicar embeddings de imágenes individuales en un tema de 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' ).
Reemplaza lo siguiente:
CLIENT_KEY
: Clave de cliente para invocar la API de Pub/Sub.TOPIC_ID
: ID del tema de Pub/Sub
Publica los embeddings recopilados en un tema de Pub/Sub
En la siguiente muestra de código, se muestra cómo publicar embeddings recopilados en un tema de 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' ).
Reemplaza lo siguiente:
CLIENT_KEY
: Clave de cliente para invocar la API de Pub/Sub.TOPIC_ID
: ID del tema de Pub/Sub
¿Qué sigue?
Obtén información sobre el desarrollo de aplicaciones con la edición local o cualquier edición en la nube del SDK de ABAP para Google Cloud.
Haz tus preguntas y analiza el SDK de Vertex AI para ABAP con la comunidad en Cloud Forums.