En este documento, se describe cómo usar la Búsqueda de vectores de Vertex AI para realizar búsquedas de similitud de vectores con el SDK de Vertex AI para ABAP. Con la Búsqueda de vectores, puedes encontrar puntos de datos semánticamente similares dentro de conjuntos de datos grandes mediante vectores de alta dimensión. Se destaca en tareas como la recuperación de imágenes y texto, y prioriza el significado sobre las concordancias exactas de palabras clave.
La Búsqueda vectorial te permite aprovechar el poder de tus datos empresariales para mejorar la eficiencia, mejorar las experiencias de los clientes y obtener una ventaja competitiva. Puede aportar un valor significativo a tu entorno de SAP y brindar beneficios como los siguientes:
Mejora las capacidades de búsqueda: Mejora la exactitud y la relevancia de los resultados de la búsqueda en grandes cantidades de datos de SAP, incluida la información estructurada y no estructurada dispersa en sistemas dispares. Esto genera una recuperación de información más rápida y eficaz de los datos empresariales relevantes.
Obtén estadísticas a partir de datos no estructurados: Utiliza la Búsqueda de vectores para extraer estadísticas valiosas de datos no estructurados que no se habían aprovechado en los sistemas de SAP, como datos de productos, datos de clientes, opiniones de clientes, tickets de asistencia o documentos internos.
Mejora la experiencia del cliente: Ofrece interacciones personalizadas y adaptadas al contexto con los clientes mediante la Búsqueda vectorial para recomendaciones de productos, chatbots inteligentes y otras aplicaciones orientadas a los clientes.
Optimiza los procesos empresariales: Usa la búsqueda vectorial para optimizar los procesos internos, encontrar rápidamente información relevante, identificar patrones y tomar decisiones basadas en datos.
Acelera la innovación: Combina la Búsqueda de Vectores con otras funciones de Vertex AI, como la IA generativa, para desarrollar soluciones nuevas e innovadoras que impulsen el crecimiento de tu empresa.
Cómo usar la Búsqueda de vectores de Vertex AI
La coincidencia semántica con la Búsqueda de vectores se puede simplificar en los siguientes pasos:
- Generar representaciones de embedding de tus datos empresariales.
- Subir las embeddings a un bucket de Cloud Storage.
Crear un índice vectorial y asociarlo al bucket de Cloud Storage que contiene las embeddings. Puedes crear dos tipos de índices, según cómo planees actualizarlos con los datos más recientes:
- Índice por lotes: Un índice por lotes sirve cuando quieres actualizar tu índice en un lote, con datos que se almacenaron durante un período determinado, como los datos que se procesan semanal o mensualmente.
- Índice de transmisión: Un índice de transmisión es para cuando quieres que los datos del índice se actualicen a medida que se agregan datos nuevos a tu almacén de datos.
Crea un extremo de índice y, luego, implementa el índice de vectores en el extremo para ejecutar consultas y obtener recomendaciones o resultados. Un extremo de índice funciona como una instancia de servidor que acepta solicitudes de consulta para tu índice.
Consulta el extremo de índice con un ID de entidad, una cadena de búsqueda o una incorporación.
El SDK de Vertex AI para ABAP abarca todos estos aspectos de la Búsqueda de vectores de Vertex AI para que compiles aplicaciones de Búsqueda de vectores potenciadas por Vertex AI en tu entorno de ABAP.
Crea y administra un índice vectorial
En esta sección, se explica cómo crear y administrar un índice de vectores con el SDK de Vertex AI para ABAP.
Antes de comenzar
Asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de Vertex AI en tu proyecto de Google Cloud.
- Configura la autenticación para acceder a la API de Vertex AI.
Prepara tus incorporaciones
Debes tener listas tus embeddings. Si deseas obtener información para generar embeddings para tus datos empresariales con el SDK de Vertex AI para ABAP, consulta Genera embeddings.
Sube tus embeddings a Cloud Storage
Sube tus embeddings a un bucket de Cloud Storage para que puedas asociarlas con un índice de vectores. Incluso si generaste tus archivos de embedding fuera de Google Cloud, puedes subirlos a un bucket de Cloud Storage.
Para obtener información sobre cómo enviar los embeddings que se generan con el SDK de Vertex AI para ABAP a un bucket de Cloud Storage, consulta Almacena embeddings en Cloud Storage.
Crea una instancia de la clase para el índice vectorial
Para crear y administrar tu índice vectorial, puedes crear una instancia de la clase /GOOG/CL_VECTOR_INDEX
. Para crear una instancia de la clase, debes pasar la clave de cliente configurada para la autenticación.
DATA(lo_vector_index) = NEW /goog/cl_vector_index( iv_key_name = 'CLIENT_KEY' ).
Reemplaza CLIENT_KEY
por la clave de cliente configurada para la autenticación.
Crea un índice vectorial
Para crear un índice de vectores, puedes usar el método CREATE_TREE_AH_INDEX
de la clase /GOOG/CL_VECTOR_INDEX
. Crea un índice basado en el algoritmo de árbol-AH.
lo_vector_index->create_tree_ah_index( iv_display_name = 'INDEX_NAME'
iv_description = 'INDEX_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_index_update_method = 'INDEX_UPDATE_METHOD'
iv_distance_measure_type = 'DISTANCE_MEASURE_TYPE'
iv_shard_size = 'SHARD_SIZE'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
Reemplaza lo siguiente:
INDEX_NAME
: Es el nombre visible del índice.INDEX_DESCRIPTION
: Es la descripción del índice.LOCATION_ID
: Es la región de Google Cloud en la que deseas almacenar el índice. Para obtener información sobre las ubicaciones disponibles, consulta Ubicaciones de Vertex AI.CONTENT_URI
: Es el URI del bucket de Cloud Storage que contiene las embeddings, que se usa para compilar el índice.DIMENSIONS
: La cantidad de dimensiones de los vectores de entrada.NEIGHBORS_COUNT
: Es la cantidad de vecinos que se deben encontrar con la búsqueda aproximada antes de que se realice el reordenamiento.INDEX_UPDATE_METHOD
: Es el modo de actualización del índice:BATCH_UPDATE
oSTREAM_UPDATE
.DISTANCE_MEASURE_TYPE
: Determina el algoritmo que se usa para calcular la distancia entre los puntos de datos y el vector de consulta. Para obtener más información, consulta Tipo de medida de distancia.SHARD_SIZE
: Es el tamaño de cada fragmento. Cuando un índice es grande, se fragmenta en función del tamaño de fragmento especificado. Durante la entrega, cada fragmento se entrega en un nodo separado y escala de forma independiente.LEAF_NODE_EMBEDDING_COUNT
: Cantidad de embeddings en cada nodo hoja. El valor predeterminado es1000
, si no se configura.LEAF_NODE_TO_SEARCH
: El porcentaje predeterminado de nodos de hoja que se pueden buscar en cualquier consulta. Debe estar entre 1 y 100, inclusive. El valor predeterminado es10
(significa10%
) si no se configura.ETAG
: Es un valor de ETag para realizar actualizaciones de lectura, modificación y escritura coherentes.KEY_FOR_ENCRYPTION
: Es el identificador de recursos de Cloud KMS de la clave de encriptación administrada por el cliente.
Crea un extremo de índice vectorial
Para crear un extremo de índice de vectores, puedes usar el método CREATE_INDEX_ENDPOINT
de la clase /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->create_index_endpoint( iv_display_name = 'INDEX_ENDPOINT_NAME'
iv_description = 'INDEX_ENDPOINT_DESCRIPTION'
iv_location_id = 'LOCATION_ID'
iv_public_endpoint_enabled = 'ENABLE_PUBLIC_ENDPOINT'
iv_etag = 'ETAG'
iv_cloud_kms_encryption_key = 'KEY_FOR_ENCRYPTION' ).
Reemplaza lo siguiente:
INDEX_ENDPOINT_NAME
: Nombre visible del extremo del índice.INDEX_ENDPOINT_DESCRIPTION
: Es la descripción del extremo del índice.LOCATION_ID
: Es la región de Google Cloud en la que deseas crear el extremo de índice. Para obtener información sobre las ubicaciones disponibles, consulta Ubicaciones de Vertex AI.ENABLE_PUBLIC_ENDPOINT
: Si se puede acceder al índice implementado a través de un extremo público, establece el valor del parámetro enABAP_TRUE
.ETAG
: Es un valor de ETag para realizar actualizaciones de lectura, modificación y escritura coherentes.KEY_FOR_ENCRYPTION
: Es el identificador de recursos de Cloud KMS de la clave de encriptación administrada por el cliente.
Implementa un índice vectorial en un extremo de índice
Para implementar un índice de vectores en un extremo de índice, puedes usar el método DEPLOY_INDEX
de la clase /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->deploy_index( iv_deployed_index_id = 'DEPLOYMENT_ID'
iv_location_id = 'LOCATION_ID'
iv_index_id = 'INDEX_ID'
iv_index_endpoint_id = 'INDEX_ENDPOINT_ID>'
iv_min_replica_count = 'MIN_REPLICA_COUNT'
iv_max_replica_count = 'MAX_REPLICA_COUNT'
iv_enable_access_logging = 'ENABLE_ACCESS_LOGGING'
iv_deployment_group = 'DEPLOYMENT_GROUP' ).
Reemplaza lo siguiente:
DEPLOYMENT_ID
: Es el ID de la embedding del índice.LOCATION_ID
: Es la región de Google Cloud en la que deseas implementar el índice. Para obtener información sobre las ubicaciones disponibles, consulta Ubicaciones de Vertex AI.INDEX_ID
: Es el nombre del recurso del índice.INDEX_ENDPOINT_ID
: Es el nombre del recurso del extremo de índice al que se implementará.MIN_REPLICA_COUNT
: Es la cantidad mínima de réplicas de máquinas para el modelo implementado.MAX_REPLICA_COUNT
: Es la cantidad máxima de réplicas de máquinas para el modelo implementado.ENABLE_ACCESS_LOGGING
: Para enviar los registros de acceso del extremo privado a Cloud Logging, configura el valor del parámetro comoABAP_TRUE
.DEPLOYMENT_GROUP
: Es el nombre del grupo de implementación, por ejemplo,test
,prod
.
Actualiza y vuelve a compilar un índice de vectores
Para obtener los resultados de la Búsqueda vectorial más precisos para una solución de IA empresarial, también debes mantener el índice actualizado con los datos más recientes de la empresa.
Actualiza un índice por lotes
Para actualizar un índice por lotes con información actualizada presente en un bucket de Cloud Storage, puedes usar el método PATCH_TREE_AH_INDEX
de la clase /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->patch_tree_ah_index( iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE' ).
Reemplaza lo siguiente:
INDEX_ID
: Es el nombre del recurso del índice.CONTENT_URI
: Es el URI del bucket de Cloud Storage que tiene las incorporaciones de los datos empresariales más recientes.LOCATION_ID
: Es la región de Google Cloud del índice.IS_COMPLETE_OVERWRITE
: Para reemplazar por completo el índice con datos en el bucket de Cloud Storage determinado, establece el valor del parámetro enABAP_TRUE
.
Puedes usar el siguiente flujo de arquitectura de ejemplo para actualizar un índice por lotes con tus datos de SAP:
- Actualiza el bucket de Cloud Storage con incorporaciones de los datos más recientes con la clase
/GOOG/CL_STORAGE_V1
a través de un trabajo en segundo plano de SAP. En el caso de los datos que no son de SAP, esto también se puede hacer a través de un proceso fuera de SAP. - Activa las actualizaciones de índices por lotes con el método
PATCH_TREE_AH_INDEX
de la clase/GOOG/CL_VECTOR_INDEX
, a través de un trabajo en segundo plano en SAP, que se ejecuta con una frecuencia.
Actualiza un índice de transmisión
Para insertar o actualizar información de un dato de un índice de flujo, puedes usar el método UPSERT_DATAPOINTS
de la clase /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->upsert_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID'
it_embeddings = 'EMBEDDINGS' ).
Reemplaza lo siguiente:
INDEX_ID
: Es el nombre del recurso del índice.LOCATION_ID
: Es la región de Google Cloud del índice.ENTITY_ID
: Es el ID de la entidad a la que se insertará o actualizará.EMBEDDINGS
: Son embeddings para insertar o actualizar el dato.
Para quitar la información de un dato de un índice de transmisión, puedes usar el método REMOVE_DATAPOINTS
de la clase /GOOG/CL_VECTOR_INDEX
.
lo_vector_index->remove_datapoints( iv_index_id = 'INDEX_ID'
iv_location_id = 'LOCATION_ID'
iv_datapoint_id = 'ENTITY_ID' ).
Reemplaza lo siguiente:
INDEX_ID
: Es el nombre del recurso del índice.LOCATION_ID
: Es la región de Google Cloud del índice.ENTITY_ID
: Es el ID de la entidad que se quitará.
Las operaciones de actualización o inserción y eliminación se realizan en tiempo real para el índice.
Puedes usar el siguiente ejemplo de flujo de arquitectura para actualizar un índice de transmisión con tus datos de SAP:
- Identifica los marcadores de posición en tu solución empresarial de SAP, como los BADIs, las salidas, las mejoras y la lógica de SAP personalizada, que son puntos para el cambio de datos de SAP.
- Activa la operación de inserción o actualización o de eliminación de datos de SAP del índice de flujo con los métodos
UPSERT_DATAPOINTS
yREMOVE_DATAPOINTS
de la clase/GOOG/CL_VECTOR_INDEX
, desde tu marcador de posición identificado.
Obtén el estado de las operaciones de índice vectorial
Google Cloud realiza lo siguiente como una operación de larga duración: creación de índices vectoriales y extremos de índice, implementación de índices en un extremo de índice o actualización de un índice por lotes vectorial.
Para determinar el ID de operación de larga duración, el ID de recurso de los artefactos de Vertex AI y los mensajes de error, el SDK proporciona la clase /GOOG/CL_VECTORINDEX_RESPONSE
.
La respuesta que captura la clase /GOOG/CL_VECTORINDEX_RESPONSE
se encadena a las solicitudes realizadas a través de los métodos de la clase /GOOG/CL_VECTOR_INDEX
, de modo que puedas acceder directamente a la respuesta en una sola sentencia sin necesidad de variables para almacenar los resultados intermedios.
Obtén el ID de la operación de larga duración
Para obtener el ID de operación de larga duración de cada tarea de búsqueda de vectores, puedes
usar el método GET_LRO
de la clase /GOOG/CL_VECTORINDEX_RESPONSE
.
Después de ejecutar una tarea, puedes llamar al método GET_LRO
con la misma instancia para obtener el ID de operación de larga duración correspondiente.
En la siguiente muestra de código, se explica cómo obtener el ID de operación de larga duración para una tarea de actualización de índice por lotes:
DATA(lv_patch_index_lro) = lo_vector_index->patch_tree_ah_index(
iv_index_id = 'INDEX_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_location_id = 'LOCATION_ID'
iv_is_complete_overwrite = 'IS_COMPLETE_OVERWRITE'
)->get_lro( ).
Reemplaza lo siguiente:
INDEX_ID
: Es el nombre del recurso del índice.CONTENT_URI
: Es el URI del bucket de Cloud Storage que tiene las incorporaciones de los datos empresariales más recientes.LOCATION_ID
: Es la región de Google Cloud del índice.IS_COMPLETE_OVERWRITE
: Para reemplazar por completo el índice con datos en el bucket de Cloud Storage determinado, establece el valor de este parámetro enABAP_TRUE
.
Obtén el estado de la operación de larga duración
Cada operación de larga duración tiene un estado asociado. Para validar si la tarea programada como operación de larga duración se realizó de forma correcta o no, puedes verificar el estado de la operación.
Para determinar o supervisar continuamente el estado de una operación de larga duración para cualquier tarea relacionada con Vertex AI, puedes usar el método GET_LRO_STATUS
de la clase /GOOG/CL_VERTEX_AI_SDK_UTILITY
.
/goog/cl_vertex_ai_sdk_utility=>get_lro_status(
EXPORTING
iv_key = 'CLIENY_KEY'
iv_operations_id = 'LONG_RUNNING_OPERATION_ID'
iv_location_id = 'LOCATION_ID'
IMPORTING
ev_is_done = DATA(lv_is_done) "Is the long-running operation complete
ev_is_successful = DATA(lv_is_successful) "Is the long-running operation successful
ev_error_code = DATA(lv_error_code) "Error code in the long-running operation in case of errors
ev_error_message = DATA(lv_error_message) ). "Error message in the long-running operation in case of errors
Reemplaza lo siguiente:
CLIENY_KEY
: Clave del cliente para la autenticación.LONG_RUNNING_OPERATION_ID
: ID de operación de larga duración.LOCATION_ID
: Es la región de Google Cloud del índice.
Obtén el ID de recurso del artefacto de Vertex AI
Para determinar el ID de recurso del índice creado, el extremo de índice creado, el índice implementado y el ID de índice para el que se activa el parche, puedes usar el método GET_ID
de la clase /GOOG/CL_VECTORINDEX_RESPONSE
.
Después de ejecutar una tarea, puedes llamar al método GET_ID
con la misma instancia para obtener el ID de recurso correspondiente.
En la siguiente muestra de código, se explica cómo obtener el ID del índice que se crea después de llamar al método CREATE_TREE_AH_INDEX
de la clase /GOOG/CL_VECTOR_INDEX
:
DATA(lv_id) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH'
)->get_id( ).
Reemplaza lo siguiente:
INDEX_NAME
: Es el nombre visible del índice.LOCATION_ID
: Es la región de Google Cloud del índice.CONTENT_URI
: Es el URI del bucket de Cloud Storage que contiene las embeddings, que se usa para compilar el índice.DIMENSIONS
: La cantidad de dimensiones de los vectores de entrada.NEIGHBORS_COUNT
: Son los vecinos que se deben encontrar mediante la búsqueda aproximada antes de que se realice el reordenamiento.LEAF_NODE_EMBEDDING_COUNT
: Cantidad de embeddings en cada nodo hoja. El valor predeterminado es1000
, si no se configura.LEAF_NODE_TO_SEARCH
: El porcentaje predeterminado de nodos de hoja que se pueden buscar en cualquier consulta. Debe estar entre 1 y 100, inclusive. El valor predeterminado es10
(significa10%
) si no se configura.
Obtén el código de error y el mensaje de error
Es posible que se produzcan errores durante el activado de tareas de índice de vectores a través del SDK de Vertex AI para ABAP.
Para obtener el código de error y el mensaje de error, respectivamente (si los hay), después del activador de una tarea, puedes usar los métodos GET_ERROR_CODE
y GET_ERROR_MESSAGE
de la clase "/GOOG/CL_VECTORINDEX_RESPONSE
".
Después de ejecutar una tarea, puedes llamar a los métodos GET_ERROR_CODE
y GET_ERROR_MESSAGE
con la misma instancia para obtener el código de error o el mensaje de error correspondiente.
En la siguiente muestra de código, se muestra cómo mostrar el código de error y el mensaje de error si falla la creación de un índice:
DATA(lo_vectorindex_response) = lo_vector_index->create_tree_ah_index(
iv_display_name = 'INDEX_NAME'
iv_location_id = 'LOCATION_ID'
iv_gcs_content_uri = 'CONTENT_URI'
iv_dimensions = 'DIMENSIONS'
iv_approximate_neighbors_count = 'NEIGHBORS_COUNT'
iv_leaf_node_embedding_count = 'LEAF_NODE_EMBEDDING_COUNT'
iv_leaf_nodes_to_search = 'LEAF_NODE_TO_SEARCH' ).
IF lo_vectorindex_response->get_error_code( ) IS NOT INITIAL.
cl_demo_output=>display( 'Error Code-' && lo_vectorindex_response->get_error_code( ) &&
'Error Message-' && lo_vectorindex_response->get_error_message( ) ).
ENDIF.
Reemplaza lo siguiente:
INDEX_NAME
: Es el nombre visible del índice.LOCATION_ID
: Es la región de Google Cloud del índice.CONTENT_URI
: Es el URI del bucket de Cloud Storage que contiene las embeddings, que se usa para compilar el índice.DIMENSIONS
: La cantidad de dimensiones de los vectores de entrada.NEIGHBORS_COUNT
: Son los vecinos que se deben encontrar mediante la búsqueda aproximada antes de que se realice el reordenamiento.LEAF_NODE_EMBEDDING_COUNT
: Cantidad de embeddings en cada nodo hoja. El valor predeterminado es1000
, si no se configura.LEAF_NODE_TO_SEARCH
: El porcentaje predeterminado de nodos de hoja que se pueden buscar en cualquier consulta. Debe estar entre 1 y 100, inclusive. El valor predeterminado es10
(significa10%
) si no se configura.
Busca vecinos más cercanos
En esta sección, se explica cómo buscar vecinos más cercanos con el SDK de Vertex AI para ABAP.
Antes de comenzar
Asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de Vertex AI en tu proyecto de Google Cloud.
- Configura la autenticación para acceder a la API de Vertex AI.
- Configuraste los parámetros de Búsqueda de vectores.
Crea un destino de RFC
Debes crear un destino de RFC para el extremo de índice al que implementaste tu índice con tus datos empresariales en forma de archivos de incorporación.
Recupera el nombre de host del extremo de índice:
-
En la GUI de SAP, ejecuta el código de transacción
/GOOG/SDK_IMG
.Como alternativa, ejecuta el código de transacción
SPRO
y, luego, haz clic en IMG de referencia de SAP. - Haz clic en SDK de ABAP para Google Cloud > Utilidades > SDK de Vertex AI: Obtén información de RFC para Feature Store y Vector Search.
- Selecciona Obtener detalles de la Búsqueda de vectores.
Selecciona una de las siguientes opciones:
- Tecla de búsqueda
- ID del extremo del índice de vectores
Si seleccionaste la opción Clave de búsqueda, ingresa la clave de búsqueda, que se configura en los parámetros de Búsqueda de vectores.
Si seleccionaste la opción ID del extremo del índice de vectores, ingresa los siguientes parámetros:
- Nombre de la clave de Google Cloud: Es la clave de cliente para la autenticación en Google Cloud.
- Ubicación: Es la región en la que se encuentra el extremo de índice.
- ID del extremo del índice: Es el nombre del extremo del índice.
Haz clic en Ejecutar para ver los detalles. Anota el extremo junto a la etiqueta Host.
-
En la GUI de SAP, ejecuta el código de transacción
Crea un destino de RFC para el extremo de índice:
En la GUI de SAP, ejecuta el código de transacción
SM59
.Crea un nuevo destino de RFC. Para los destinos de RFC que creaste, asegúrate de que el Tipo de conexión esté configurado de la siguiente manera:
G - HTTP connection to external server
.Ve a la pestaña Configuración técnica y, luego, ingresa los siguientes detalles:
Host de destino: Proporciona el nombre de host del extremo de índice.
Número de servicio: Ingresa
443
. Este número de puerto se usa para la comunicación segura.
Ve al Inicio de sesión y seguridad y asegúrate de que el Certificado SSL se establece el campo con la opción Cliente SSL de CDAULT (estándar).
Guarda los cambios.
Configura la tabla de asignación de servicios para la API de Vertex AI:
En la GUI de SAP, ejecuta el código de transacción
/GOOG/SDK_IMG
.Como alternativa, ejecuta el código de transacción
SPRO
y, luego, haz clic en IMG de referencia de SAP.Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.
Haz clic en Entradas nuevas.
Especifica el destino de RFC para la API de Vertex AI:
Nombre Nombre del servicio Destino de RFC Clave de cliente para la autenticación. apiinvoker:v1
Es el nombre del destino de RFC. Guarda la entrada nueva.
Crea una instancia de la clase para la Búsqueda de vectores
Para invocar la Búsqueda de vectores, puedes crear una instancia de la clase /GOOG/CL_VECTOR_SEARCH
. Para crear una instancia de la clase, debes pasar el valor de búsqueda, que se configura en los parámetros de la Búsqueda de vectores.
DATA(lo_vector_search) = NEW /goog/cl_vector_search( iv_search_name = 'SEARCH_KEY' ).
Reemplaza SEARCH_KEY
por la clave de búsqueda, que se configura en los parámetros de Búsqueda de vectores.
Cómo buscar con un ID de entidad
Para consultar un índice vectorial en relación con un ID de entidad específico, puedes usar el método FIND_NEIGHBORS_BY_ENTITY_ID
de la clase /GOOG/CL_VECTOR_SEARCH
.
Los IDs de entidad corresponden a los datos almacenados en tu índice vectorial.
lo_vector_search->find_neighbors_by_entity_id( iv_entity_id = 'ENTITY_ID'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
Reemplaza lo siguiente:
ENTITY_ID
: Es el ID de la entidad que se buscará.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
Cómo buscar con una cadena de búsqueda
Para consultar un índice de vectores en relación con una cadena de búsqueda, puedes usar el método FIND_NEIGHBORS_BY_STRING
de la clase /GOOG/CL_VECTOR_SEARCH
.
Primero, el SDK convierte tu cadena de búsqueda en incorporaciones y, luego, recupera los vecinos más cercanos para la consulta.
DATA(lo_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
Reemplaza lo siguiente:
SEARCH_STRING
: Cadena de búsqueda de entrada.MODEL_KEY
: Es la clave de modelo para generar embeddings, que se configura en los parámetros de generación del modelo.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
Cómo buscar con una embedding
Para consultar un índice de vectores en relación con las embeddings, puedes usar el método FIND_NEIGHBORS_BY_EMBEDDING
de la clase /GOOG/CL_VECTOR_SEARCH
.
DATA(lo_response) = lo_vector_search->find_neighbors_by_embeddings(
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT'
it_embeddings = 'EMBEDDINGS' ).
Reemplaza lo siguiente:
NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.EMBEDDINGS
: Embeddings de entrada.
Obtén la respuesta de la búsqueda
Para recibir respuestas procesadas del modelo y presentarlas de una manera significativa, el SDK proporciona la clase ABAP /GOOG/CL_VECTORSEARCH_RESPONSE
.
La respuesta que captura la clase /GOOG/CL_VECTORSEARCH_RESPONSE
se encadena a las solicitudes realizadas a través de los métodos de la clase /GOOG/CL_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 búsqueda
Para determinar los vecinos más cercanos que se encontraron para la búsqueda ejecutada con respecto a un dato, una cadena de búsqueda o incorporaciones, puedes usar los métodos GET_NEAREST_NEIGHBOR
y GET_NEAREST_NEIGHBORS
de la clase /GOOG/CL_VECTORSEARCH_RESPONSE
.
Se puede llamar a estos métodos en una cadena después de ejecutar la consulta de búsqueda con los métodos FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
y FIND_NEIGHBORS_BY_ENTITY_ID
de la clase /GOOG/CL_VECTOR_SEARCH
.
Para obtener el vecino más cercano al punto de datos, la cadena o las embeddings que se buscaron, llama al método
GET_NEAREST_NEIGHBOR
. La respuesta de este método enumera el ID del punto de datos más cercano, su distancia de la búsqueda y el vector de atributos asociado con él en el índice.En la siguiente muestra de código, se muestra cómo obtener el vecino más cercano para una cadena de búsqueda:
DATA(ls_nearest_neighbor) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbor( ).
Reemplaza lo siguiente:
SEARCH_STRING
: Cadena de búsqueda de entrada.MODEL_KEY
: Es la clave de modelo para generar embeddings, que se configura en los parámetros de generación del modelo.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
Para obtener el conjunto de vecinos más cercanos al punto de datos, la cadena o las embeddings que se buscaron, llama al método
GET_NEAREST_NEIGHBORS
. La respuesta de este método es una tabla de puntos de datos más cercanos, en la que se enumeran los IDs de los puntos de datos, su distancia de la búsqueda y el vector de atributos asociado con ellos en el índice.En la siguiente muestra de código, se muestra cómo obtener los vecinos más cercanos para una cadena de búsqueda:
DATA(lt_nearest_neighbors) = lo_vector_search->find_neighbors_by_string( iv_search_string = 'SEARCH_STRING' iv_embeddings_model_key = 'MODEL_KEY' iv_neighbor_count = 'NEIGHBOR_COUNT' iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' )->get_nearest_neighbors( ).
Reemplaza lo siguiente:
SEARCH_STRING
: Cadena de búsqueda de entrada.MODEL_KEY
: Es la clave de modelo para generar embeddings, que se configura en los parámetros de generación del modelo.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
Obtén la distancia del vecino recuperado
Para determinar la distancia de una respuesta recuperada de la búsqueda, puedes usar el método GET_DATAPOINT_DISTANCE
de la clase /GOOG/CL_VECTORSEARCH_RESPONSE
.
La distancia en la respuesta de la búsqueda representa una medida de la disimilitud entre la búsqueda (cadena, incorporación o ID de entidad) y un vector de resultados recuperado. El significado específico de la distancia depende de la "Medición de distancia" que se usa cuando se crea un índice.
El valor de distancia te ayuda a comprender qué tan relevante es cada resultado de la búsqueda para tu consulta. Por lo general, los resultados con distancias más bajas se consideran más similares o relevantes, mientras que los que tienen distancias más altas son menos similares o relevantes.
En la siguiente muestra de código, se muestra cómo obtener la distancia del vecino más cercano para una cadena de búsqueda:
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lv_distance) = lo_vectorsearch_response->get_datapoint_distance( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
Reemplaza lo siguiente:
SEARCH_STRING
: Cadena de búsqueda de entrada.MODEL_KEY
: Es la clave de modelo para generar embeddings, que se configura en los parámetros de generación del modelo.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
Obtén el vector de embeddings del vecino recuperado
Para determinar el vector de embeddings de la respuesta recuperada de la consulta que se buscó, puedes usar el método GET_DATAPOINT_FEATURE_VECTOR
de la clase /GOOG/CL_VECTORSEARCH_RESPONSE
.
Para obtener un vector de embeddings, el parámetro IV_RETURN_FULL_DATAPOINT
de los métodos FIND_NEIGHBORS_BY_STRING
, FIND_NEIGHBORS_BY_EMBEDDING
y FIND_NEIGHBORS_BY_ENTITY_ID
debe establecerse en ABAP_TRUE
.
En la siguiente muestra de código, se ilustra cómo obtener el vector de características del vecino más cercano para una cadena de búsqueda:
DATA(lo_vectorsearch_response) = lo_vector_search->find_neighbors_by_string(
iv_search_string = 'SEARCH_STRING'
iv_embeddings_model_key = 'MODEL_KEY'
iv_neighbor_count = 'NEIGHBOR_COUNT'
iv_return_full_datapoint = 'RETURN_FULL_DATAPOINT' ).
DATA(ls_nearest_neighbor) = lo_vectorsearch_response->get_nearest_neighbor( ).
DATA(lt_feature_vector) = lo_vectorsearch_response->get_datapoint_feature_vector( iv_datapoint_id = ls_nearest_neighbor-datapoint_id ).
Reemplaza lo siguiente:
SEARCH_STRING
: Cadena de búsqueda de entrada.MODEL_KEY
: Es la clave de modelo para generar embeddings, que se configura en los parámetros de generación del modelo.NEIGHBOR_COUNT
: Es la cantidad de vecinos más cercanos que se recuperarán para la consulta.RETURN_FULL_DATAPOINT
: Para mostrar las incorporaciones de vectores para los datos recuperados, establece el valor del parámetro enABAP_TRUE
.
¿Qué sigue?
Obtén información sobre la terminología de Búsqueda de vectores.
Obtén información sobre el desarrollo de aplicaciones con la edición local o cualquier edición en la nube del SDK de ABAP para Google Cloud.
Haz tus preguntas y analiza el SDK de Vertex AI para ABAP con la comunidad en Cloud Forums.