Genera y administra incorporaciones en BigQuery

El SDK de IA y ML de BigQuery para ABAP te permite generar y administrar incorporaciones en tus datos empresariales en la fuente en BigQuery.

BigQuery puede servir como una base de datos vectorial rentable para usar sus capacidades de búsqueda vectorial, lo que te permite almacenar y consultar incorporaciones (representaciones vectoriales de datos) directamente en el almacén de datos, lo que podría reducir la necesidad de tener una infraestructura de base de datos vectorial independiente. Puedes generar incorporaciones para tus datos empresariales almacenados en tus conjuntos de datos de BigQuery con la función ML.GENERATE_EMBEDDING de BigQuery.

Para acceder a los modelos de incorporación en Vertex AI, crea un modelo remoto en BigQuery ML que represente el extremo del modelo de Vertex AI. Una vez que hayas creado un modelo remoto sobre el modelo de Vertex AI que deseas usar, puedes acceder a las capacidades de ese modelo mediante la ejecución de la función de BigQuery ML en el modelo remoto.

Con el SDK de BigQuery AI y ML para ABAP, puedes usar modelos de incorporación para lo siguiente:

  • Genera y almacena incorporaciones para datos de texto
  • Genera y almacena incorporaciones para datos multimodales
  • Mantén tu base de datos vectorial de BigQuery actualizada con los datos empresariales más recientes

Antes de comenzar

Antes de usar el SDK de BigQuery AI y AA para ABAP con los modelos de embedding, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:

Precios

El SDK de BigQuery AI y ML para ABAP se ofrece sin costo. Sin embargo, eres responsable de los cargos en las plataformas de BigQuery y Vertex AI:

  • BigQuery ML: Se generan costos por los datos que procesas en BigQuery.
  • Vertex AI: Se generan costos por las llamadas al servicio de Vertex AI que representa el modelo remoto.

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Para obtener más información sobre los precios de BigQuery, consulta la página Precios de BigQuery.

Para obtener más información sobre los precios de Vertex AI, consulta la página Precios de Vertex AI.

Genera embeddings en BigQuery

En esta sección, se explica cómo generar embeddings para los datos empresariales almacenados en BigQuery desde la lógica de tu aplicación de ABAP con el SDK de BigQuery AI y ML para ABAP.

Crea una instancia de la clase de invocador de incorporaciones de BigQuery

Para invocar los modelos multimodales y de incorporación de texto en conjuntos de datos de BigQuery, debes crear una instancia de la clase /GOOG/CL_BQ_GENERATIVE_MODEL.

TRY.
    DATA(lo_bqml_embeddings_model) = NEW /goog/cl_bq_embeddings_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Reemplaza CLIENT_KEY por la clave de cliente que configuraste para la autenticación en Google Cloud durante la configuración de autenticación.

Genera embeddings

Para ejecutar consultas que generen incorporaciones de texto y datos multimodales con la función ML.GENERATE_EMBEDDING de BigQuery, usa el método GENERATE_EMBEDDINGS de la clase /GOOG/CL_BQ_EMBEDDINGS_MODEL.

El objeto de la clase /GOOG/CL_BQ_QUERY establecido con la consulta se pasa como entrada al método.

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).

LO_BQ_QUERY es la referencia de la clase /GOOG/CL_BQ_QUERY después de configurar la consulta.

Cómo anular los parámetros de generación de modelos

Puedes definir los parámetros de generación del modelo de incorporación en la consulta guardada en BigQuery o en el texto de la consulta que se pasó. Sin embargo, si necesitas anular los parámetros de la misma consulta desde la lógica de la aplicación ABAP, puedes usar el método SET_GENERATION_CONFIG de la clase /GOOG/CL_BQ_EMBEDDINGS_MODEL. Los parámetros de generación en la consulta inicial se superponen con los parámetros que se pasan a través de este método.

lo_bqml_embeddings_model->set_generation_config( iv_flatten_json_output   = 'IS_FLATTEN_JSON_OUTPUT'
                                 iv_task_type             = 'TASK_TYPE'
         iv_output_dimensionality = 'OUTPUT_DIMENSIONALITY' ).

Reemplaza lo siguiente:

  • IS_FLATTEN_JSON_OUTPUT: Es un valor booleano que determina si el contenido JSON que muestra la función se analiza en columnas separadas.
  • TASK_TYPE: Es el valor que especifica la aplicación descendente prevista para ayudar al modelo a producir incorporaciones de mejor calidad. Busca valores probables del argumento task_type en la sintaxis de entrada para ML.GENERATE_EMBEDDING.
  • OUTPUT_DIMENSIONALITY: Es el valor que especifica la cantidad de dimensiones que se usarán cuando se generen embeddings. Busca valores probables del argumento output_dimensionality en la sintaxis de entrada para ML.GENERATE_EMBEDDING.

Obtén resultados de consultas para generar incorporaciones

Para recibir respuestas procesadas de BigQuery ML para generar incorporaciones y presentarlas de una manera significativa, el SDK usa métodos encadenados en la clase /GOOG/CL_BQ_GENERATIVE_MODEL, de modo que puedas acceder directamente a la respuesta en una sola sentencia sin necesidad de variables para almacenar los resultados intermedios.

Obtén vectores de incorporación de texto

Para obtener los vectores de inserción de texto para cada fila en la lógica de tu aplicación ABAP, usa el método GET_TEXT_EMBEDDING_VECTORS.

DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                             )->get_text_embedding_vectors( ).

Obtén el estado de las incorporaciones de texto

Para obtener el estado de cada generación de incorporaciones de texto para cada fila, usa el método GET_TEXT_EMBEDDING_STATUS.

Si la operación se realizó correctamente, el estado estará vacío.

DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                                                    )->get_text_embedding_status( ).

Obtén el estado del trabajo de consulta

Cada consulta en BigQuery se ejecuta como un trabajo de consulta.

Para obtener el estado del trabajo de consulta de las incorporaciones, usa el método GET_QUERY_JOB_STATUS.

lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
                       )->get_query_job_status(
IMPORTING ev_job_complete          = DATA(lv_job_complete)
  ev_job_creation_reason   = DATA(lv_job_creation_reason)
  ev_job_id                = DATA(lv_job_id)
  ev_query_id              = DATA(lv_query_id)
  ev_total_bytes_processed = DATA(lv_total_bytes_processed)
  ev_total_rows            = DATA(lv_total_rows) ).

El método muestra las siguientes métricas de estado del trabajo:

  • Indica si la consulta se completó o no.
  • Es el motivo por el que se creó un trabajo.
  • Es la referencia al trabajo que se creó para ejecutar la consulta.
  • Es el ID generado automáticamente para la consulta.
  • Es la cantidad total de bytes procesados para esta consulta.
  • Es la cantidad total de filas en el conjunto de resultados de la consulta completa.

Cómo obtener errores de trabajos de consulta

Para recuperar los errores de la tarea de consulta (si los hay), usa el método GET_QUERY_JOB_ERRORS.

DATA(lt_query_job_errors) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                   )->get_query_job_errors( ).

Obtén una respuesta general para las incorporaciones de texto

Para obtener una tabla de respuestas general de la consulta de incorporaciones de texto que ejecutas, usa el método GET_TEXT_EMBEDDING_RESPONSE.

Una respuesta se propaga solo cuando el parámetro de generación de modelos FLATTEN_JSON_OUTPUT se establece en TRUE en la consulta.

DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
                                                           )->get_text_embedding_response( ).