O SDK de IA e ML do BigQuery para ABAP permite realizar a pesquisa vetorial nos seus dados corporativos vetorizados no BigQuery usando strings de pesquisa baseadas em linguagem natural e exibir os resultados dos agentes ou aplicativos baseados em ABAP.
Com a pesquisa vetorial do BigQuery, você pode usar o GoogleSQL para fazer pesquisas semânticas usando índices vetoriais para resultados aproximados.
Com a pesquisa de vetor, é possível encontrar pontos de dados semanticamente semelhantes em grandes conjuntos de dados usando vetores ou embeddings de alta dimensão.
É possível armazenar as inclusões de vetor no BigQuery, tornando-o seu banco de dados de vetores e aplicando a pesquisa de similaridade vetorial nele usando a função VECTOR_SEARCH
do BigQuery.
Antes de começar
Antes de usar o SDK de IA e ML do BigQuery para ABAP com os modelos Gemini, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:
- Ative a API BigQuery no seu projeto do Google Cloud. Para informações sobre como ativar Google Cloud APIs, consulte Como ativar APIs.
- O faturamento está ativado para o projeto do Google Cloud.
- Você gerou e armazenou as embeddings de vetor em um conjunto de dados de vetor no BigQuery. Para saber como fazer isso nos seus aplicativos SAP usando o SDK de IA e ML do BigQuery para ABAP, consulte Gerar embeddings.
- Você criou um índice vetorial dos dados da empresa. Para mais informações, consulte Criar um índice vetorial.
- Concedeu permissões necessárias à conta de serviço configurada na chave do cliente para autenticação.
- Instalou o SDK de IA e ML do BigQuery para ABAP no seu ambiente SAP.
Preços
O SDK de IA e ML do BigQuery para ABAP é oferecido sem custos financeiros. No entanto, você é responsável pelas cobranças da instrução CREATE VECTOR INDEX
e da função VECTOR_SEARCH
, que usam os preços de computação do BigQuery.
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.
Realizar pesquisa vetorial no BigQuery
Esta seção explica como realizar a pesquisa semântica de vetor nos dados corporativos armazenados no BigQuery do seu aplicativo ABAP usando o SDK de IA e ML do BigQuery para ABAP.
Instancie a classe de invocação da pesquisa vetorial do BigQuery
Para realizar uma pesquisa vetorial usando uma string de pesquisa, instancie a classe /GOOG/CL_BQ_VECTOR_SEARCH
.
TRY.
DATA(lo_bq_vector_search) = NEW /goog/cl_bq_vector_search( 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.
Encontrar itens semelhantes para uma string de pesquisa
Para executar consultas para fazer uma pesquisa vetorial com a função VECTOR_SEARCH
do BigQuery,
use o método FIND_NEAREST_NEIGHBORS
da classe /GOOG/CL_BQ_VECTOR_SEARCH
.
O objeto da classe /GOOG/CL_BQ_QUERY
definido com a consulta é transmitido como uma entrada para o método.
lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).
LO_BQ_QUERY
é a referência da classe /GOOG/CL_BQ_QUERY
após definir a consulta. É possível transmitir a string de pesquisa do texto da consulta.
Modificar os parâmetros de pesquisa de vetor
É possível definir parâmetros de pesquisa vetorial (nas definições de função VECTOR_SEARCH
)
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_SEARCH_PARAMETERS
da classe /GOOG/CL_BQ_VECTOR_SEARCH
para fazer isso.
Os parâmetros de pesquisa na consulta inicial são substituídos completamente pelos parâmetros
transmitidos por esse método.
lo_bq_vector_search->set_search_parameters( iv_top_k = TOP_K
iv_distance_type = DISTANCE_TYPE
iv_fraction_lists_to_search = 'FRACTION_LISTS_TO_SEARCH' ).
Substitua:
TOP_K
: um valorINT64
que especifica o número de vizinhos mais próximos a serem retornados.DISTANCE_TYPE
: um valor de string que especifica o tipo de métrica a ser usado para calcular a distância entre dois vetores. Procure valores prováveis do argumentoDISTANCE_TYPE
nas definições da funçãoVECTOR_SEARCH
.FRACTION_LISTS_TO_SEARCH
: um valor de string que especifica a porcentagem de listas a serem pesquisadas. Procure valores prováveis do argumentoFRACTION_LISTS_TO_SEARCH
nas opções de definição da funçãoVECTOR_SEARCH
.
Receber a resposta da pesquisa vetorial
Para receber respostas processadas do BigQuery ML para consultas de pesquisa
vetorial e apresentá-las de maneira significativa, use a classe /GOOG/CL_BQ_SEARCH_RESPONSE
.
A resposta capturada pela classe /GOOG/CL_BQ_SEARCH_RESPONSE
é encadeada
às solicitações feitas pelos métodos da classe /GOOG/CL_BQ_VECTOR_SEARCH
,
para que você possa acessar diretamente a resposta em uma única instrução sem
requerer variáveis para armazenar os resultados intermediários.
Conseguir vizinhos mais próximos para a string de pesquisa
Para encontrar os vizinhos mais próximos da string de pesquisa, use o método GET_NEAREST_NEIGHBORS
.
O número de vizinhos retornados depende do valor especificado
ou definido no parâmetro TOP_K
da função VECTOR_SEARCH
na consulta invocada.
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
também contém a distância do item da resposta da pesquisa
da string de pesquisa para indicar o grau de similaridade.
Encontrar o vizinho mais próximo da string de pesquisa
Para encontrar o vizinho mais próximo da string de pesquisa, use o método GET_NEAREST_NEIGHBOR
.
Com isso, apenas o vizinho mais próximo é buscado em relação à string de pesquisa, independentemente do valor especificado ou definido no parâmetro TOP_K
da função VECTOR_SEARCH
na consulta invocada.
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
também contém a distância da resposta da pesquisa
em relação à string de pesquisa para indicar o grau de similaridade.