O SDK de IA e ML do BigQuery para ABAP permite gerar e gerenciar incorporações nos dados corporativos na fonte no BigQuery.
O BigQuery pode ser usado como um banco de dados vetorial econômico para usar os recursos de pesquisa de vetores, permitindo armazenar e consultar incorporações (representações vetoriais de dados) diretamente no repositório de dados, potencialmente reduzindo a necessidade de uma infraestrutura de banco de dados vetorial separada.
É possível gerar incorporações para os dados corporativos armazenados nos conjuntos de dados do BigQuery usando a função ML.GENERATE_EMBEDDING
.
Para acessar os modelos de incorporação na Vertex AI, crie um modelo remoto no BigQuery ML que represente o endpoint do modelo da Vertex AI. Depois de criar um modelo remoto no modelo da Vertex AI que você quer usar, acesse os recursos desse modelo executando a função do BigQuery ML no modelo remoto.
Com o SDK de IA e ML do BigQuery para ABAP, é possível usar modelos de embedding para:
- Gerar e armazenar embeddings para dados de texto
- Gerar e armazenar embeddings para dados multimodais
- Mantenha seu banco de dados de vetores do BigQuery atualizado com os dados corporativos mais recentes
Antes de começar
Antes de usar o SDK de IA e ML do BigQuery para ABAP com os modelos incorporados, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:
- Ative a API BigQuery, a API BigQuery Connection e a API Vertex AI no seu projeto do Google Cloud. Para informações sobre como ativar Google Cloud APIs, consulte Como ativar APIs.
- Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- A conta de serviço configurada na chave do cliente para autenticação precisa ter as permissões necessárias.
- Instalou o SDK de IA e ML do BigQuery para ABAP no seu ambiente SAP.
- Crie um modelo remoto para os modelos de embedding aceitos.
Preços
O SDK de IA e ML do BigQuery para ABAP é oferecido sem custos financeiros. No entanto, você é responsável pelas cobranças nas plataformas BigQuery e Vertex AI:
- BigQuery ML: há cobrança pelos dados processados no BigQuery.
- Vertex AI: haverá custos pelas chamadas para o serviço da Vertex AI representado pelo modelo remoto.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações sobre os preços do BigQuery, consulte a página Preços do BigQuery.
Para mais informações sobre os preços da Vertex AI, consulte a página Preços da Vertex AI.
Gerar embeddings no BigQuery
Esta seção explica como gerar incorporações para os dados corporativos armazenados no BigQuery usando a lógica do aplicativo ABAP e o SDK de IA e ML do BigQuery para ABAP.
Instancie a classe de invocação de embeddings do BigQuery
Para invocar os modelos de texto e multimodal de embeddings nos conjuntos de dados do BigQuery,
instancie a classe /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.
Substitua CLIENT_KEY
pela chave do cliente configurada para
autenticação em Google Cloud durante a configuração de autenticação.
Gerar embeddings
Para executar consultas e gerar embeddings de texto e dados multimodais com a função ML.GENERATE_EMBEDDING
do BigQuery, use o método GENERATE_EMBEDDINGS
da classe /GOOG/CL_BQ_EMBEDDINGS_MODEL
.
O objeto da classe /GOOG/CL_BQ_QUERY
definido com a consulta é transmitido como uma entrada para o método.
lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query ).
LO_BQ_QUERY
é a referência da classe /GOOG/CL_BQ_QUERY
após definir a consulta.
Modificar os parâmetros de geração de modelos
É possível definir parâmetros de geração do modelo de embedding na consulta
salva no BigQuery ou no texto de consulta transmitido.
No entanto, se você precisar substituir os parâmetros da mesma consulta da lógica do aplicativo ABAP, use o método SET_GENERATION_CONFIG
da classe /GOOG/CL_BQ_EMBEDDINGS_MODEL
.
Os parâmetros de geração na consulta inicial são
substituídos pelos parâmetros transmitidos por esse 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' ).
Substitua:
IS_FLATTEN_JSON_OUTPUT
: um valor booleano que determina se o conteúdo JSON retornado pela função é analisado em colunas separadas.TASK_TYPE
: o valor que especifica o aplicativo downstream pretendido para ajudar o modelo a produzir embeddings de melhor qualidade. Procure valores prováveis do argumentotask_type
na sintaxe de entrada paraML.GENERATE_EMBEDDING
.OUTPUT_DIMENSIONALITY
: o valor que especifica o número de dimensões a serem usadas ao gerar embeddings. Procure valores prováveis do argumentooutput_dimensionality
em sintaxe de entrada paraML.GENERATE_EMBEDDING
.
Receber resultados de consultas para gerar embeddings
Para receber respostas processadas do BigQuery ML para gerar
embeddings e apresentá-los de maneira significativa,
o SDK usa métodos encadeados na classe /GOOG/CL_BQ_GENERATIVE_MODEL
,
para que você possa acessar diretamente a resposta em uma única instrução sem
requerer variáveis para armazenar os resultados intermediários.
Receber vetores de embedding de texto
Para receber os vetores de embedding de texto de cada linha na lógica do aplicativo ABAP,
use o método GET_TEXT_EMBEDDING_VECTORS
.
DATA(lt_embeddings) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_vectors( ).
Receber o status das embeddings de texto
Para conferir o status de cada
geração de embeddings de texto em cada linha, use o método GET_TEXT_EMBEDDING_STATUS
.
Se a operação tiver sido bem-sucedida, o status estará vazio.
DATA(lt_embeddings_status) = lo_bqml_embeddings_model->generate_embeddings( io_query = lo_bq_query
)->get_text_embedding_status( ).
Conferir o status do job de consulta
Cada consulta no BigQuery é executada como um job de consulta.
Para conferir o status do job de consulta de embeddings, use o 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) ).
O método retorna as seguintes métricas de status do job:
- Se a consulta foi concluída ou não.
- O motivo da criação de um job.
- Referência ao job que foi criado para executar a consulta.
- ID gerado automaticamente para a consulta.
- O número total de bytes processados para essa consulta.
- O número total de linhas no conjunto de resultados da consulta.
Receber erros de jobs de consulta
Para buscar os erros do job de consulta (se houver), use o 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( ).
Receber a resposta geral para embeddings de texto
Para receber uma tabela de respostas geral para a consulta de embeddings de texto executada,
use o método GET_TEXT_EMBEDDING_RESPONSE
.
Uma resposta é preenchida somente quando o parâmetro de geração de modelo
FLATTEN_JSON_OUTPUT
é definido como TRUE
na consulta.
DATA(lt_text_embeddings_response) = lo_bqml_embeddings_model->execute_query( io_query = lo_bq_query
)->get_text_embedding_response( ).