Questo documento descrive un'architettura di riferimento per la progettazione di un sottosistema di servizio in SAP da utilizzare con applicazioni di AI generativa compatibili con la retrieval-augmented generation (RAG). Per l'integrazione con i Google Cloud servizi necessari per creare applicazioni di IA generativa compatibili con RAG, questa architettura di riferimento utilizza l'edizione on-premise o qualsiasi versione cloud di ABAP SDK per Google Cloud.
Questo documento è rivolto a sviluppatori ABAP, architetti di soluzioni SAP e architetti cloud. Si presume che tu abbia familiarità con la terminologia di Vector Search e con i concetti di RAG.
Un sottosistema di pubblicazione è un componente importante di un'applicazione di AI generativa compatibile con RAG perché gestisce il flusso di richieste e risposte tra l'applicazione e i suoi utenti. Il sottosistema di pubblicazione descritto in questo documento consente alle tue applicazioni di accedere e utilizzare i dati aziendali SAP per fornire contesto ai modelli di linguaggio di grandi dimensioni (LLM), che possono contribuire a generare output più accurati e affidabili.
Combinando gli LLM di Gemini con i dati e i processi aziendali SAP, puoi usufruire di vantaggi come:
- Maggiore precisione: l'accesso a una gamma più ampia di informazioni consente di prendere decisioni più accurate e consapevoli in base ai dati aziendali.
- Esperienza utente migliorata: informazioni personalizzate e contestualmente pertinenti aumentano la soddisfazione degli utenti con una risposta del modello più affidabile.
Architettura
Il seguente diagramma mostra i componenti di un sottosistema di pubblicazione in SAP:
Come mostrato nell'immagine precedente, l'architettura del sottosistema di pubblicazione include i seguenti componenti:
Numero | Componente | Dettagli |
---|---|---|
1 | Sottosistema di pubblicazione | Il sottosistema di pubblicazione è responsabile del recupero delle informazioni pertinenti dalle origini dati. Amplia le informazioni con un prompt, interagisce con i modelli di IA generativa e restituisce la risposta finale all'utente. |
2 | ABAP SDK for Google Cloud | L'SDK gestisce la comunicazione tra il sottosistema di pubblicazione e vari Google Cloud servizi. |
3 | Modulo funzionale SAP | Quando il set di dati è di piccole dimensioni e si trova all'interno dei tuoi sistemi SAP, puoi utilizzare i moduli di funzione SAP per creare la pipeline di recupero delle informazioni. Puoi recuperare i dati da un modulo di funzione SAP utilizzando query SELECT , chiamate BAPI o chiamate di funzioni SAP con Gemini. |
4 | Prodotti Vector Search | Quando i dati aziendali sono di grandi dimensioni e vuoi un'applicazione RAG con una latenza minima, puoi creare la pipeline di recupero utilizzando Vector Search. Puoi eseguire ricerche semantiche sui tuoi dati aziendali archiviati sotto forma di embedding in un database vettoriale come Cloud Storage, Vertex AI Feature Store o BigQuery. |
5 | Modelli Vertex AI Gemini | Modelli Gemini di Vertex AI che generano risposte basate sui dati aziendali. |
Sottosistema di pubblicazione
Il sottosistema di pubblicazione di una soluzione di AI generativa è costituito dai seguenti componenti secondari:
Retrieval delle informazioni
Quando gli utenti inviano richieste all'applicazione di IA generativa tramite un frontend, il sottosistema di pubblicazione recupera le informazioni da un'origine dati. Per recuperare le informazioni da un'origine dati, puoi scegliere un metodo appropriato per il tuo caso d'uso:
- Recuperare le informazioni utilizzando la ricerca vettoriale
- Recuperare le informazioni senza la ricerca vettoriale
Recuperare le informazioni utilizzando la ricerca vettoriale
Quando i dati aziendali sono di grandi dimensioni (strutturati o non strutturati) e vuoi un'applicazione RAG con una latenza minima, ti consigliamo di creare la pipeline di recupero utilizzando la ricerca di vettori. La ricerca vettoriale può eseguire ricerche multimodali e di testo su miliardi di record in pochi millisecondi.
Per utilizzare la ricerca vettoriale per il recupero delle informazioni, devi impostare un database vettoriale per archiviare i dati aziendali sotto forma di embedding vettoriali. Per informazioni su come importare i dati aziendali in un database di vettori, consulta Creare un sottosistema di importazione dei dati in SAP per applicazioni di AI generativa compatibili con RAG.
Recuperare le informazioni senza la ricerca vettoriale
Se il tuo set di dati è di piccole dimensioni e si trova all'interno dei tuoi sistemi SAP, puoi recuperare le informazioni utilizzando query SELECT
, chiamate SAP BAPI
o chiamate di funzioni SAP con Gemini per aumentare il contesto del modello.
Aumento delle informazioni
Per fornire al modello il contesto aziendale essenziale, ti consigliamo di arricchire i prompt con informazioni pertinenti dei tuoi sistemi SAP.
Dopo aver ottenuto i dati aggiuntivi, aumentali nel contesto del modello. Questo incremento fornisce al modello il contesto necessario per elaborare una risposta utilizzando le informazioni aziendali aggiunte.
Per integrare i dati recuperati nel contesto del modello, accoda o concatena i dati al prompt di input del modello. Durante l'aggiunta dei dati, puoi anteporre o postporre un testo pertinente per indicare che si tratta di un contesto aggiuntivo insieme al prompt.
Generazione di risposte
Per richiamare un modello di IA Gemini con il prompt aumentato, utilizza il componente di richiamo del modello generativo dell'SDK Vertex AI per ABAP.
Questo approccio garantisce che la risposta generata non sia solo pertinente alla query dell'utente, ma si basi anche sui dati specifici della tua azienda, il che porta a risultati più accurati e significativi.
Caso d'uso
Un'applicazione di AI generativa compatibile con RAG può essere utilizzata per generare aggiornamenti rapidi sullo stock di materiale in un magazzino utilizzando query in linguaggio naturale.
Considera uno scenario in cui stai implementando un'applicazione di IA generativa per i dipendenti del magazzino di un'azienda che produce e spedisce mobili, decorazioni e accessori per la casa.
Per gestire in modo efficiente l'inventario del magazzino e la catena di approvvigionamento, l'applicazione di IA generativa fornisce informazioni rapide sullo stock di materiale utilizzando query basate sul linguaggio naturale tramite un'applicazione web SAP. Un esempio di questa query potrebbe essere determinare il conteggio dell'inventario corrente di un materiale specifico.
Queste informazioni vengono memorizzate nei dati di prodotto nelle tabelle del database SAP, che potrebbero essere un elenco enorme di articoli per una grande azienda di arredamento per la casa. I dipendenti del magazzino devono ricevere risposte dall'applicazione SAP basate sulle informazioni nei sistemi SAP (l'unica fonte attendibile). Queste informazioni consentono di prendere decisioni rapide ed efficienti, ad esempio:
- Disponibilità in magazzino: un determinato materiale è disponibile?
- Livelli di inventario: quante unità di un materiale sono disponibili?
- Pianificazione della produzione: qual è il target di produzione per un materiale per soddisfare il prossimo ordine in entrata?
Deployment
Questa sezione illustra l'implementazione di un sottosistema di pubblicazione per il caso d'uso del magazzino. Descrive in dettaglio come utilizzare l'SDK Vertex AI per ABAP, integrato nella versione più recente dell'SDK ABAP per Google Cloud, per recuperare informazioni e interagire con i modelli Gemini.
Per il caso d'uso del magazzino, tieni presente che le informazioni sulle scorte in SAP sono collegate a un ID materiale univoco per ogni prodotto. Ogni prodotto ha anche attributi descrittivi memorizzati in SAP, come il nome, una descrizione dettagliata, la categoria e altre proprietà pertinenti. Queste descrizioni testuali vengono convertite in rappresentazioni numeriche chiamate "incorporamenti" e archiviate in un database vettoriale. Ogni incorporamento è collegato al relativo ID materiale, consentendo una ricerca e un'analisi efficienti delle informazioni sul prodotto.
Una volta aggiornato il database di vettori, per eseguire la query di ricerca "Qual è il conteggio corrente dell'inventario per un prodotto", puoi procedere nel seguente modo:
Esegui una ricerca vettoriale nel database vettoriale con la query per recuperare l'ID materiale.
Esegui query sulle tabelle SAP e chiama SAP BAPI per ottenere la quantità di magazzino per l'ID materiale.
Aumenta la quantità di magazzino nel contesto del modello.
Se il database vettoriale scelto è un indice vettoriale, puoi utilizzare l'SDK Vertex AI per ABAP per richiamare una ricerca vettoriale direttamente da ABAP. Per ulteriori informazioni, consulta l'architettura di riferimento Vertex AI Vector Search per applicazioni SAP intelligenti.
Di seguito sono riportati i passaggi per l'implementazione di un sottosistema di pubblicazione:
Per recuperare l'ID materiale per il caso d'uso del magazzino, puoi utilizzare la ricerca di vettori.
Il seguente esempio di codice illustra come recuperare l'ID materiale utilizzando la ricerca di vettori:
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.
Se il set di dati è di piccole dimensioni e si trova all'interno dei tuoi sistemi SAP, per trovare l'ID materiale per il caso d'uso del magazzino, puoi utilizzare le query
SELECT
con la descrizione del materiale e poi eseguire una query sulla tabella SAP per ottenere la quantità di magazzino.Il seguente esempio di codice illustra come recuperare le informazioni sullo stock di materiale utilizzando le query
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.
Per integrare i dati recuperati al prompt di input, concatena lo stock disponibile per il materiale al prompt con il prefisso "Stock disponibile".
Il seguente esempio di codice illustra come integrare i dati recuperati con la richiesta di input:
* Augment retrieved data to the input prompt lv_prompt = lv_prompt && 'Additional Context' && lv_available_inventory.
Per richiamare un modello di IA Gemini con il prompt aumentato, utilizza il componente di richiamo del modello generativo dell'SDK Vertex AI per ABAP.
Il seguente esempio di codice illustra come richiamare il modello con il prompt aumentato:
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.
Note sul layout
Questa sezione fornisce indicazioni per aiutarti a utilizzare questa architettura di riferimento per sviluppare architetture che ti consentano di soddisfare i tuoi requisiti specifici per sicurezza, privacy, conformità, costi e prestazioni.
Sicurezza, privacy e conformità
La sicurezza e la conformità sono responsabilità condivise. Per informazioni dettagliate, consulta la sezione Responsabilità condivisa di Vertex AI.
Per informazioni sull'impegno di Google Cloudin materia di privacy dei dati, consulta il Centro risorse per la privacy.
Ottimizzazione dei costi
Se utilizzi la ricerca vettoriale per recuperare informazioni per RAG, per ridurre i costi, ti consigliamo di scegliere dimensioni degli shard e embedding di dimensioni inferiori per gli indici, in modo da utilizzare una macchina di calcolo più piccola per il loro dispiegamento.
Vertex AI è un'offerta fatturabile di Google Cloud. Per informazioni sui prezzi, consulta la pagina Prezzi di Vertex AI e Prezzi di Vector Search. Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Ottimizzazione delle prestazioni
Se utilizzi la ricerca vettoriale per recuperare informazioni per RAG, per migliorare la latenza per la ricerca di set di dati di grandi dimensioni, ti consigliamo di scegliere dimensioni degli shard più grandi durante la creazione dell'indice e macchine di calcolo ad alte prestazioni durante il deployment dell'indice. Per scoprire di più sulle dimensioni degli shard per un indice, consulta Dimensioni dell'indice.
Per aumentare la pertinenza delle risposte di ricerca, genera embedding dei dati della tua azienda in dimensioni superiori. Le macchine Compute e le dimensioni di incorporamento più elevate sono molto costose. Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Passaggi successivi
Per scoprire come utilizzare la ricerca vettoriale per la ricerca semantica con le applicazioni SAP, consulta Vertex AI Vector Search per applicazioni SAP intelligenti.
Per scoprire come utilizzare la ricerca vettoriale con l'SDK Vertex AI per ABAP, consulta Utilizzare Vertex AI Vector Search.
Per scoprire come importare i dati aziendali in un database vettoriale, consulta Creare un sottosistema di importazione dei dati in SAP per applicazioni di AI generativa compatibili con RAG.
Se hai bisogno di aiuto per risolvere i problemi relativi all'SDK ABAP per Google Cloud, segui questi passaggi:
- Fai riferimento alla guida alla risoluzione dei problemi di ABAP SDK for Google Cloud.
- Fai domande e discuti dell'ABAP SDK per Google Cloud con la community nei forum di Cloud.
- Raccogli tutte le informazioni diagnostiche disponibili e contatta l'assistenza clienti Google Cloud. Per informazioni su come contattare l'assistenza clienti, vedi Ricevere assistenza per SAP su Google Cloud.
Collaboratori
Autore: Devesh Singh | SAP Application Engineer
Altro collaboratore: Vikash Kumar | Technical Writer