El SDK de IA y de AA de BigQuery para ABAP te permite realizar búsquedas vectoriales en tus datos empresariales vectorizados en BigQuery a través de cadenas de búsqueda basadas en lenguaje natural y mostrar los resultados desde tus agentes o aplicaciones basados en ABAP.
BigQuery Vector Search te permite usar GoogleSQL para realizar búsquedas semánticas con índices de vectores para obtener resultados aproximados.
Con la Búsqueda de vectores, puedes encontrar puntos de datos semánticamente similares dentro de conjuntos de datos grandes mediante vectores o incorporaciones de alta dimensión.
Puedes almacenar tus incorporaciones de vectores en BigQuery, lo que convierte a BigQuery en tu base de datos de vectores y aplica la búsqueda de similitudes vectoriales en ella con la función de BigQuery VECTOR_SEARCH
.
Antes de comenzar
Antes de usar el SDK de BigQuery AI y ML para ABAP con los modelos de Gemini, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de BigQuery en tu proyecto de Google Cloud. Para obtener información sobre cómo habilitar las Google Cloud APIs, consulta Habilita las APIs.
- La facturación está habilitada para tu proyecto de Google Cloud.
- Generaste tus incorporaciones vectoriales y las almacenaste en un conjunto de datos de vectores en BigQuery. Si deseas obtener información para hacerlo desde tus aplicaciones de SAP con el SDK de BigQuery AI y ML para ABAP, consulta Genera embeddings.
- Creaste el índice vectorial de tus datos empresariales. Para obtener más información, consulta Cómo crear un índice vectorial.
- Se otorgaron los permisos necesarios a la cuenta de servicio configurada en la clave de cliente para la autenticación.
- Instalaste el SDK de BigQuery AI y ML para ABAP en tu entorno de SAP.
Precios
El SDK de BigQuery AI y ML para ABAP se ofrece sin costo. Sin embargo, eres responsable de los cargos de la sentencia CREATE VECTOR INDEX
y la función VECTOR_SEARCH
,
que usan los precios de procesamiento de BigQuery.
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.
Realiza una búsqueda de vectores en BigQuery
En esta sección, se explica cómo realizar una búsqueda semántica de vectores en tus datos empresariales almacenados en BigQuery desde tu aplicación ABAP con el SDK de BigQuery AI y AA para ABAP.
Crea una instancia de la clase de invocador de búsqueda de vectores de BigQuery
Para realizar una búsqueda vectorial con una cadena de búsqueda, crea una instancia de la clase /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.
Reemplaza CLIENT_KEY
por la clave de cliente que configuraste para la autenticación en Google Cloud durante la configuración de autenticación.
Cómo encontrar elementos similares para una cadena de búsqueda
Para ejecutar consultas para realizar una búsqueda vectorial con la función VECTOR_SEARCH
de BigQuery, usa el método FIND_NEAREST_NEIGHBORS
de la clase /GOOG/CL_BQ_VECTOR_SEARCH
.
El objeto de la clase /GOOG/CL_BQ_QUERY
establecido con la consulta se pasa como entrada al método.
lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query ).
LO_BQ_QUERY
es la referencia de la clase /GOOG/CL_BQ_QUERY
después de configurar la consulta. Puedes pasar la cadena de búsqueda desde el texto de la consulta.
Cómo anular los parámetros de búsqueda de vectores
Puedes definir los parámetros de búsqueda de vectores (en las definiciones de la función VECTOR_SEARCH
) en la consulta guardada en BigQuery o en el texto de la consulta que se pasa. Sin embargo, si necesitas anular los parámetros de la misma consulta desde la lógica de la aplicación de ABAP, puedes usar el método SET_SEARCH_PARAMETERS
de la clase /GOOG/CL_BQ_VECTOR_SEARCH
para hacerlo. Los parámetros de búsqueda de la consulta inicial se anulan por completo con los parámetros que se pasan a través de este 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' ).
Reemplaza lo siguiente:
TOP_K
: Un valorINT64
que especifica la cantidad de vecinos más cercanos que se mostrarán.DISTANCE_TYPE
: Es un valor de cadena que especifica el tipo de métrica que se usará para calcular la distancia entre dos vectores. Busca valores probables del argumentoDISTANCE_TYPE
en las definiciones de la funciónVECTOR_SEARCH
.FRACTION_LISTS_TO_SEARCH
: Es un valor de cadena que especifica el porcentaje de listas que se deben buscar. Busca valores probables del argumentoFRACTION_LISTS_TO_SEARCH
en las opciones de definición de la funciónVECTOR_SEARCH
.
Obtén la respuesta de la búsqueda vectorial
Para recibir respuestas procesadas de BigQuery ML para consultas de búsqueda de vectores y presentarlas de una manera significativa, usa la clase /GOOG/CL_BQ_SEARCH_RESPONSE
.
La respuesta que captura la clase /GOOG/CL_BQ_SEARCH_RESPONSE
se encadena a las solicitudes realizadas a través de los métodos de la clase /GOOG/CL_BQ_VECTOR_SEARCH
, de modo que puedas acceder directamente a la respuesta en una sola sentencia sin necesidad de variables para almacenar los resultados intermedios.
Obtén los vecinos más cercanos para la cadena de búsqueda
Para obtener los vecinos más cercanos de la cadena de búsqueda, usa el método GET_NEAREST_NEIGHBORS
.
La cantidad de vecinos que se muestran depende del valor especificado o establecido en el parámetro TOP_K
de la función VECTOR_SEARCH
en la consulta invocada.
DATA(lt_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbors( ).
LT_SEARCH_RESPONSE
también contiene la distancia del elemento de la respuesta de la búsqueda de la cadena de búsqueda para indicar el grado de similitud.
Obtén el vecino más cercano para la cadena de búsqueda
Para obtener el vecino más cercano de la cadena de búsqueda, usa el método GET_NEAREST_NEIGHBOR
.
Con esto, solo se recupera el vecino más cercano en función de la cadena de búsqueda,
independientemente del valor especificado o establecido en el parámetro TOP_K
de
la función VECTOR_SEARCH
en la consulta invocada.
DATA(ls_search_response) = lo_bq_vector_search->find_nearest_neighbors( io_query = lo_bq_query
)->get_nearest_neighbor( ).
LS_SEARCH_RESPONSE
también contiene la distancia de la respuesta de la búsqueda de la cadena de búsqueda para indicar el grado de similitud.