En este documento, se describe una arquitectura de referencia para diseñar un subsistema de entrega en SAP para usar con aplicaciones de IA generativa compatibles con la generación aumentada por recuperación (RAG). Para integrarse con los Google Cloud servicios necesarios para compilar aplicaciones de IA generativa compatibles con RAG, esta arquitectura de referencia usa la edición local o en la nube del SDK de ABAP para Google Cloud.
Este documento está dirigido a desarrolladores de ABAP, arquitectos de soluciones de SAP y arquitectos de nube. Se supone que estás familiarizado con la terminología de Búsqueda de vectores y los conceptos de RAG.
Un subsistema de entrega es un componente importante en una aplicación de IA generativa compatible con RAG porque administra el flujo de solicitudes y respuestas entre la aplicación y sus usuarios. El subsistema de publicación que se describe en este documento permite que tus aplicaciones accedan a los datos empresariales de SAP y los usen para proporcionar contexto a los modelos de lenguaje grandes (LLM), lo que puede ayudar a generar resultados más precisos y confiables.
Si combinas los LLM de Gemini con los datos y procesos empresariales de SAP, puedes obtener los siguientes beneficios:
- Mayor precisión: El acceso a una gama más amplia de información lleva a una toma de decisiones más precisa y fundamentada en tus datos empresariales.
- Experiencia del usuario mejorada: La información personalizada y contextualmente relevante mejora la satisfacción del usuario con una respuesta del modelo más confiable.
Arquitectura
En el siguiente diagrama, se muestran los componentes de un subsistema de entrega en SAP:
Como se muestra en la imagen anterior, la arquitectura del subsistema de entrega incluye los siguientes componentes:
Número | Componente | Detalles |
---|---|---|
1 | Subsistema de entrega | El subsistema de entrega es responsable de recuperar información relevante de las fuentes de datos. Aumenta la información con una instrucción, interactúa con los modelos de IA generativa y le entrega la respuesta final al usuario. |
2 | SDK ABAP para Google Cloud | El SDK controla la comunicación entre el subsistema de entrega y varios servicios de Google Cloud . |
3 | Módulo de funciones de SAP | Cuando tu conjunto de datos es pequeño y reside en tus sistemas SAP, puedes usar los módulos de funciones de SAP para compilar tu canalización de recuperación de información. Puedes recuperar datos de un módulo de funciones de SAP con consultas SELECT , llamadas a BAPI o llamadas a funciones de SAP con Gemini. |
4 | Productos de Búsqueda de vectores | Cuando tus datos empresariales son grandes y deseas una aplicación de RAG con latencia mínima, puedes compilar tu canalización de recuperación con la Búsqueda vectorial. Puedes realizar búsquedas semánticas en tus datos de la empresa almacenados en forma de incorporaciones en una base de datos de vectores, como Cloud Storage, Vertex AI Feature Store o BigQuery. |
5 | Modelos de Vertex AI Gemini | Modelos de Gemini de Vertex AI que generan respuestas basadas en tus datos empresariales. |
Subsistema de entrega
El subsistema de entrega de una solución de IA generativa consta de los siguientes subcomponentes:
Recuperación de información
Cuando los usuarios envían solicitudes a la aplicación de IA generativa a través de un frontend, el subsistema de entrega recupera información de una fuente de datos. Para recuperar información de una fuente de datos, puedes elegir un método apropiado para tu caso de uso:
- Cómo recuperar información con la búsqueda de vectores
- Cómo recuperar información sin la Búsqueda de vectores
Cómo recuperar información con la búsqueda de vectores
Cuando tus datos empresariales son grandes (datos estructurados o no estructurados) y deseas una aplicación de RAG con latencia mínima, te recomendamos que crees tu canalización de recuperación con la Búsqueda vectorial. La Búsqueda de vectores puede ejecutar búsquedas multimodales y de texto en miles de millones de registros en milisegundos.
Para usar la Búsqueda de vectores para la recuperación de información, debes configurar una base de datos de vectores para almacenar los datos de la empresa en forma de incorporaciones de vectores. Si deseas obtener información para transferir datos empresariales a una base de datos de vectores, consulta Cómo compilar un subsistema de transferencia de datos en SAP para aplicaciones de IA generativa compatibles con RAG.
Cómo recuperar información sin la Búsqueda de vectores
Si tu conjunto de datos es pequeño y reside en tus sistemas de SAP, puedes recuperar información con consultas SELECT
, llamadas SAP BAPI
o llamadas a funciones de SAP con Gemini para aumentar el contexto del modelo.
Magnificación de información
Para proporcionarle al modelo el contexto esencial específico de la empresa, te recomendamos que enriquezcas tus instrucciones con información relevante de tus sistemas SAP.
Después de obtener los datos adicionales, aumenta los datos al contexto del modelo. Esta ampliación le brinda al modelo el contexto necesario para generar una respuesta con la información de la empresa agregada.
Para aumentar los datos recuperados al contexto del modelo, adjúntalos o concatena los datos a la instrucción de entrada del modelo. Mientras agregas los datos, puedes agregar un prefijo o un sufijo con texto relevante para indicar que es contexto adicional junto con la instrucción.
Generación de respuestas
Para invocar un modelo de IA de Gemini con la instrucción aumentada, usa el componente invocador de modelos generativos del SDK de Vertex AI para ABAP.
Este enfoque garantiza que la respuesta generada no solo sea relevante para la consulta del usuario, sino que se base en los datos específicos de tu empresa, lo que genera resultados más precisos y útiles.
Caso de uso
Se puede usar una aplicación de IA generativa compatible con RAG para generar actualizaciones rápidas del inventario de materiales en un almacén mediante consultas en lenguaje natural.
Imagina una situación en la que implementas una aplicación de IA generativa para los empleados del almacén de una empresa que fabrica y envía muebles, decoración y accesorios para el hogar.
Para administrar el inventario del almacén y la cadena de suministro de manera eficiente, la aplicación de IA generativa proporciona estadísticas rápidas sobre el inventario de materiales mediante consultas basadas en lenguaje natural a través de una aplicación web de SAP. Un ejemplo de una consulta de este tipo podría ser determinar el recuento de inventario actual de un material específico.
Esta información se almacena en los datos de productos de las tablas de la base de datos de SAP, que podría ser una lista enorme de artículos para una gran empresa de artículos para el hogar. Los empleados del almacén deben obtener respuestas de la aplicación de SAP que se basen en la información de los sistemas de SAP (la única fuente de confianza). Esta información les permite tomar decisiones rápidas y eficientes, como las siguientes:
- Disponibilidad de stock: ¿Hay un material en particular en stock?
- Niveles de inventario: ¿Cuántas unidades de un material están disponibles?
- Planificación de la producción: ¿Cuál debe ser el objetivo de fabricación para que un material cumpla con el próximo pedido entrante?
Implementación
En esta sección, se describe la implementación de un subsistema de publicación para el caso de uso de almacén. En ella, se detalla cómo usar el SDK de Vertex AI para ABAP, incorporado en la versión más reciente del SDK de ABAP para Google Cloud, para recuperar información y también interactuar con los modelos de Gemini.
En el caso de uso del almacén, ten en cuenta que la información del inventario en SAP está vinculada a un ID de material único para cada producto. Cada producto también tiene atributos descriptivos almacenados en SAP, como su nombre, una descripción detallada, la categoría y otras propiedades relevantes. Estas descripciones textuales se convierten en representaciones numéricas llamadas "incorporaciones" y se almacenan en una base de datos de vectores. Cada incorporación está vinculada a su ID de material correspondiente, lo que permite realizar búsquedas y análisis eficientes de la información de los productos.
Una vez que se actualice tu base de datos de vectores, para ejecutar la búsqueda "¿cuál es el recuento actual del inventario de un producto?", puedes hacer lo siguiente:
Realiza una búsqueda vectorial en la base de datos de vectores con la consulta para recuperar el ID del material.
Consulta las tablas de SAP y llama a SAP BAPI para obtener la cantidad en stock del ID de material.
Aumenta la cantidad en stock al contexto del modelo.
Si tu base de datos de vectores es un índice de vectores, puedes usar el SDK de Vertex AI para ABAP para invocar una búsqueda de vectores directamente desde ABAP. Para obtener más información, consulta la arquitectura de referencia Vertex AI Vector Search para aplicaciones inteligentes de SAP.
Los siguientes son los pasos de implementación de un subsistema de publicación:
Para recuperar el ID de material del caso de uso del almacén, puedes usar la Búsqueda vectorial.
En la siguiente muestra de código, se ilustra cómo recuperar el ID de material con la Búsqueda vectorial:
DATA: lv_prompt TYPE string, lv_available_quantity TYPE mng01, ls_return TYPE bapireturn, lv_available_inventory TYPE string, lt_wmdvsx TYPE STANDARD TABLE OF bapiwmdvs, lt_wmdvex TYPE STANDARD TABLE OF bapiwmdve. lv_prompt = 'What is the current inventory count for Cymbal Emerald Flower Vase'. * Get material id based on the prompt through vector search TRY. DATA(lo_vector_index) = NEW /goog/cl_vector_search( iv_search_key = 'SEARCH_KEY' ). DATA(ls_material) = lo_vector_index->find_neighbors_by_string( iv_search_string = lv_prompt iv_embeddings_model_key = 'EMBEDDINGS_MODEL_KEY' )->get_nearest_neighbor( ). CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). cl_demo_output=>display( 'Search not successful.' && lo_cx_sdk->get_text( ) ). EXIT. ENDTRY. DATA(lv_material_id) = ls_material-datapoint_id. * Get base unit of measure for the material SELECT SINGLE meinh FROM marm INTO @DATA(lv_meinh) WHERE matnr = @lv_material_id. IF sy-subrc = 0. * Get available stock for the material CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY' EXPORTING plant = <SAP_PLANT_ID> material = CONV matnr18( lv_material_id ) unit = lv_meinh IMPORTING av_qty_plt = lv_available_quantity return = ls_return TABLES wmdvsx = lt_wmdvsx wmdvex = lt_wmdvex. IF ls_return-type = 'S' OR ls_return-type IS INITIAL. * Prepare available stock value in base unit of measure lv_available_inventory = |{ 'Avaiblable Stock = ' } | && lv_available_quantity && | { lv_meinh }|. ELSE. cl_demo_output=>display( 'Material availability lookup not successful:' && ls_return-message ). ENDIF. ENDIF.
Si tu conjunto de datos es pequeño y reside en tus sistemas SAP, para encontrar el ID de material del caso de uso de almacén, puedes usar consultas
SELECT
con la descripción del material y, luego, consultar la tabla de SAP para obtener la cantidad en stock.En la siguiente muestra de código, se muestra cómo recuperar la información del material en stock con las consultas
SELECT
:DATA: lv_prompt TYPE string, lv_available_quantity TYPE mng01, ls_return TYPE bapireturn, lv_available_inventory TYPE string, lt_wmdvsx TYPE STANDARD TABLE OF bapiwmdvs, lt_wmdvex TYPE STANDARD TABLE OF bapiwmdve, lr_maktx TYPE RANGE OF maktx, ls_maktx LIKE LINE OF lr_maktx. lv_prompt = 'What is the current inventory count for Cymbal Emerald Flower Vase'. ls_maktx-sign = 'I'. ls_maktx-option = 'CP'. ls_maktx-low = 'Cymbal Emerald Flower Vase'. APPEND ls_maktx TO lr_maktx. * Get material id through select statement SELECT SINGLE matnr FROM makt INTO @DATA(lv_material_id) WHERE maktx IN @lr_maktx. IF sy-subrc <> 0. cl_demo_output=>display( 'Material with given description not found' ). EXIT. ENDIF. * Get base unit of measure for the material SELECT SINGLE meinh FROM marm INTO @DATA(lv_meinh) WHERE matnr = @lv_material_id. IF sy-subrc = 0. * Get available stock for the material CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY' EXPORTING plant = <SAP_PLANT_ID> material = CONV matnr18( lv_material_id ) unit = lv_meinh IMPORTING av_qty_plt = lv_available_quantity return = ls_return TABLES wmdvsx = lt_wmdvsx wmdvex = lt_wmdvex. IF ls_return-type = 'S' OR ls_return-type IS INITIAL. * Prepare available stock value in base unit of measure lv_available_inventory = |{ 'Avaiblable Stock = ' } | && lv_available_quantity && | { lv_meinh }|. ELSE. cl_demo_output=>display( 'Material availability lookup not successful:' && ls_return-message ). ENDIF. ENDIF.
Para agregar los datos recuperados a la instrucción de entrada, concatena el stock disponible del material a la instrucción con el prefijo “Stock disponible”.
En la siguiente muestra de código, se muestra cómo aumentar los datos recuperados a la instrucción de entrada:
* Augment retrieved data to the input prompt lv_prompt = lv_prompt && 'Additional Context' && lv_available_inventory.
Para invocar un modelo de IA de Gemini con la instrucción aumentada, usa el componente invocador de modelos generativos del SDK de Vertex AI para ABAP.
En la siguiente muestra de código, se muestra cómo invocar el modelo con una instrucción aumentada:
TRY. lv_prompt = lv_prompt && 'Additional Context' && lv_available_inventory. DATA(lo_model_key) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ). DATA(lv_model_response) = lo_model_key->generate_content( lv_prompt )->get_text( ). IF lv_model_response IS NOT INITIAL. cl_demo_output=>display( lv_model_response ). ENDIF. CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). cl_demo_output=>display( lo_cx_sdk->get_text( ) ). ENDTRY.
Consideraciones del diseño
En esta sección, se proporciona orientación para ayudarte a usar esta arquitectura de referencia para desarrollar arquitecturas que te ayuden a cumplir con tus requisitos específicos de seguridad, privacidad, cumplimiento, costo y rendimiento.
Security, privacy, and compliance
La seguridad y el cumplimiento son responsabilidades compartidas. Para obtener información detallada, consulta Responsabilidad compartida de Vertex AI.
Para obtener información sobre el compromiso de Google Cloudcon la privacidad de los datos, consulta el Centro de recursos de privacidad.
Optimización de costos
Si usas Vector Search para recuperar información de RAG, para reducir los costos, considera elegir tamaños de fragmentos más bajos y representaciones de menor dimensión para tus índices, lo que te permite usar una máquina de procesamiento más pequeña para implementar los índices.
Vertex AI es una oferta facturable de Google Cloud. Para obtener información sobre los precios, consulta los precios de Vertex AI y los precios de Vector Search. Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Optimización del rendimiento
Si usas la Búsqueda vectorial para recuperar información de RAG, para mejorar la latencia y buscar conjuntos de datos grandes, considera elegir tamaños de fragmentos más altos cuando crees tu índice y máquinas de procesamiento de alto rendimiento cuando implementes tu índice. Para obtener más información sobre los tamaños de fragmentos de un índice, consulta Tamaño del índice.
Para aumentar la relevancia de las respuestas de la búsqueda, genera incorporaciones de tus datos empresariales en dimensiones superiores. Las máquinas de procesamiento y las dimensiones de incorporación más altas son costosas. Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
¿Qué sigue?
Para aprender a usar la Búsqueda de vectores para la búsqueda semántica con aplicaciones de SAP, consulta Búsqueda de vectores de Vertex AI para aplicaciones inteligentes de SAP.
Si deseas obtener información para usar la Búsqueda de vectores con el SDK de Vertex AI para ABAP, consulta Cómo usar la Búsqueda de vectores de Vertex AI.
Para obtener información sobre cómo transferir datos empresariales a una base de datos de vectores, consulta Cómo compilar un subsistema de transferencia de datos en SAP para aplicaciones de IA generativa compatibles con RAG.
Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente:
- Consulta la guía de solución de problemas del SDK de ABAP para Google Cloud.
- Haz tus preguntas y analiza el SDK de ABAP para Google Cloud con la comunidad en Cloud Forums.
- Recopila toda la información de diagnóstico disponible y comunícate con el servicio de Atención al cliente de Cloud. Si deseas obtener más información para comunicarte con el equipo de Atención al cliente, consulta Obtén asistencia para SAP en Google Cloud.
Colaboradores
Autor: Devesh Singh | Ingeniero de aplicaciones de SAP
Otro colaborador: Vikash Kumar | Escritor técnico