Realiza una búsqueda de vectores en BigQuery

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:

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 valor INT64 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 argumento DISTANCE_TYPE en las definiciones de la función VECTOR_SEARCH.
  • FRACTION_LISTS_TO_SEARCH: Es un valor de cadena que especifica el porcentaje de listas que se deben buscar. Busca valores probables del argumento FRACTION_LISTS_TO_SEARCH en las opciones de definición de la función VECTOR_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.