Sottosistema di importazione dei dati in SAP per le applicazioni di AI generativa

Questo documento descrive un'architettura di riferimento per la progettazione di un sottosistema di importazione dati in SAP per applicazioni di AI generativa compatibili con RAG. Questo sottosistema utilizza l'edizione on-premise o qualsiasi edizione cloud di ABAP SDK per Google Cloud per integrarsi con i servizi Google Cloud necessari per creare applicazioni di AI generativa compatibili con RAG.

Un'applicazione di AI generativa in grado di eseguire la retrieval-augmented generation (RAG) ha diversi componenti, tra cui il sottosistema di importazione dati, responsabile della preparazione e dell'elaborazione dei dati aziendali. Questo sottosistema ti aiuta a preparare e archiviare i dati aziendali come embedding in un database vettoriale, per interazioni con l'AI accurate e perspicaci.

Poiché molte organizzazioni utilizzano sistemi SAP ERP per archiviare i dati aziendali, questo documento offre indicazioni sull'integrazione delle soluzioni di archiviazione dei dati e dei database di ricerca vettoriale di Google Cloud all'interno del sottosistema di importazione dati. In questo modo, puoi fare scelte consapevoli e utilizzare in modo efficace i servizi di Google Cloud per creare una pipeline solida ed efficiente per le tue applicazioni di AI generativa compatibili con RAG.

Il pubblico di destinazione di questo documento include sviluppatori ABAP, architetti di soluzioni SAP e architetti cloud. Il documento presuppone che tu abbia familiarità con la terminologia di Vector Search e con i concetti di RAG.

Architettura

Il seguente diagramma mostra un'architettura di riferimento che illustra i componenti di un sottosistema di importazione dati in SAP:

Sottosistema di importazione dati in SAP

Questa architettura del sottosistema di importazione dati include i seguenti componenti:

# Componente Dettagli
1 Sottosistema di importazione dati Prepara ed elabora i dati aziendali per generare embedding di vettori. Questi embedding vengono poi archiviati in un database di vettori adatto su Google Cloud. Se vuoi, puoi archiviare i dati aziendali su Google Cloud.
2 ABAP SDK for Google Cloud L'SDK gestisce la comunicazione tra il sottosistema di importazione dati e vari servizi Google Cloud.
3 Archiviazione dei dati Facoltativo. Una soluzione di archiviazione dei dati di Google Cloud, come BigQuery o Cloud Storage, utilizzata per archiviare i dati aziendali, sia strutturati che non strutturati. Per ulteriori informazioni, consulta Archiviare i dati aziendali in Google Cloud.
4 Modello di embedding (Vertex AI) Modelli di AI che generano embedding da varie origini dati aziendali.
5 Prodotti Vector Search Memorizza gli embedding in un database di vettori come Cloud Storage o BigQuery, in cui puoi eseguire ricerche semantiche.

Sottosistema di importazione dati

Questa sezione illustra il sottosistema di importazione dati che trasforma i dati aziendali in incorporamenti e li archivia in un database vettoriale per l'utilizzo con applicazioni di AI generativa compatibili con RAG. Questo sottosistema può elaborare un'ampia gamma di dati SAP, tra cui documenti, immagini, regole aziendali e prompt, per generare embedding.

Preparare i dati aziendali

Prima di implementare l'applicazione di AI generativa compatibile con RAG per la prima volta, devi caricare gli embedding per i dati aziendali esistenti dal tuo sistema SAP. Puoi gestire questo problema creando nuovi programmi batch o riutilizzando quelli esistenti che possono leggere i dati aziendali in blocchi gestibili.

Dopo aver eseguito il caricamento iniziale dei dati e degli incorporamenti, il sottosistema di importazione dati deve essere al passo con eventuali modifiche ai dati SAP. Che si tratti di nuovi record, aggiornamenti di quelli esistenti o eliminazioni, l'indice di ricerca vettoriale deve riflettere queste modifiche. A tal fine, puoi utilizzare gli elementi appropriati nel framework di sviluppo delle applicazioni SAP, come i componenti aggiuntivi e i gestori eventi RAP. In questo modo, gli embedding rimangono aggiornati e le applicazioni di AI dispongono sempre delle informazioni più recenti.

(Facoltativo) Archivia i dati aziendali in Google Cloud

I sistemi SAP possono contenere dati aziendali sia strutturati che non strutturati. Se vuoi, puoi archiviare questi dati aziendali in Google Cloud per recuperarli dal sottosistema di pubblicazione.

Per archiviare i dati aziendali, puoi utilizzare i seguenti servizi Google Cloud:

  • Per trasmettere in streaming dati strutturati da SAP a BigQuery, puoi utilizzare il connettore BigQuery per SAP o il metodo INSERT_ALL_TABLEDATA della classe /GOOG/CL_BIGQUERY_V2 dell'SDK ABAP per Google Cloud.
  • Per archiviare dati non strutturati come immagini e documenti PDF in Cloud Storage, puoi utilizzare la classe /GOOG/CL_STORAGE_V1 dell'SDK ABAP per Google Cloud. Per un esempio di codice che illustra come caricare un oggetto in un bucket Cloud Storage, consulta Caricare un file in un bucket.
  • Per configurare Cloud Storage come repository di contenuti per SAP, puoi implementare e personalizzare la soluzione di esempio disponibile su GitHub, Google Cloud Storage: Content Server for SAP.

Genera embedding dai dati aziendali

Per generare incorporamenti di testo e multimodali dai dati aziendali, puoi utilizzare modelli di embedding con l'SDK Vertex AI per ABAP.

Gli incorporamenti sono essenzialmente codici numerici che rappresentano testo, immagini o video in un modo che ne descriva la relazione. Le applicazioni utilizzano questi codici per comprendere e generare il linguaggio, riconoscendo anche i significati e le relazioni più complessi all'interno dei tuoi contenuti specifici. Il processo funziona trasformando testo, immagini e video in elenchi di numeri, noti come vettori, progettati per cogliere efficacemente il significato dei contenuti originali.

Memorizza gli embedding

Per archiviare e cercare in modo efficiente gli embedding generati dai dati aziendali SAP, puoi utilizzare i prodotti di ricerca di vettori di Google Cloud, che fungono da database di vettori.

Per archiviare gli embedding per i dati aziendali SAP, scegli un database di vettori tra quelli elencati di seguito:

Note sul layout

Di seguito sono riportate le considerazioni di progettazione chiave per la scelta di un database di vettori:

  • Rendimento: fattori quali velocità di indicizzazione per i nuovi vettori, velocità di ricerca (latenza), scalabilità, compromesso tra il recupero di tutti i risultati pertinenti (riconoscimento) e solo quelli più pertinenti (precisione).
  • Caratteristiche dei dati: le dimensioni dei vettori di embedding, le dimensioni del set di dati vettoriale e la distribuzione dei dati influiscono su costo, prestazioni e indicizzazione.
  • Funzionalità: funzioni di distanza supportate come l'algoritmo euclideo e la somiglianza del coseno, la possibilità di applicare filtri, la combinazione di ricerca di parole chiave e ricerca vettoriale e il supporto della ricerca del vicino più simile approssimativo (ANN).
  • Integrazione: integrazione esistente e facilità di importazione dati dalle tue applicazioni.
  • Costo: modello di prezzo, costi di archiviazione e query corrispondenti ai dati e al volume di ricerca.

Per consentire una ricerca e un'analisi efficienti, memorizza gli embedding in un database di vettori, insieme agli identificatori che li ricollegano ai dati di origine.

La decisione di archiviare i dati aziendali in una soluzione di archiviazione Google Cloud dipende principalmente dalla posizione del sottosistema di pubblicazione:

  • Se il sottosistema di pubblicazione è SAP, l'archiviazione dei dati aziendali al di fuori di SAP è facoltativa, poiché hai già accesso ai dati aziendali all'interno di SAP.

  • Se il sottosistema di pubblicazione si trova al di fuori di SAP, ad esempio App Engine, potrebbe essere necessario archiviare i dati aziendali in una soluzione di archiviazione Google Cloud appropriata per un recupero efficiente dei dati. Puoi evitarlo se il tuo sottosistema di pubblicazione può effettuare chiamate remote in SAP per recuperare i dati.

Scopri come generare e archiviare gli embedding

Questa sezione spiega come generare e memorizzare gli embedding dai dati aziendali. Esistono due pattern principali per generare e memorizzare gli embedding:

  • Genera embedding in SAP: genera embedding dai dati aziendali residenti nel sistema SAP ERP utilizzando un modello di embedding adatto con l'SDK Vertex AI per ABAP e memorizzali in un database di vettori.

  • Genera embedding in Google Cloud: genera embedding dai dati aziendali residenti in un supporto di archiviazione su Google Cloud utilizzando un approccio serverless, come le funzioni Cloud Run o BigQuery, e archiviali in un database di vettori.

Genera embedding in SAP

Per generare embedding dai dati aziendali SAP localmente all'interno del sistema SAP, puoi utilizzare vari modelli di embedding con l'SDK Vertex AI per ABAP. Questi incorporamenti generati possono quindi essere inviati a un database di vettori adatto su Google Cloud utilizzando uno dei meccanismi di importazione integrati dell'SDK.

Puoi decidere quali dati convertire in embedding in base alle tue esigenze per le funzionalità di ricerca vettoriale. Per scoprire come generare embedding con l'SDK Vertex AI per ABAP, consulta Generare embedding.

Questa sezione illustra i tipi di dati SAP comuni e come generare embedding utilizzando l'SDK Vertex AI per ABAP.

Dati aziendali strutturati archiviati nelle tabelle SAP

Generi principalmente embedding per una o più colonne di testo nelle tabelle SAP. Ad esempio, se vuoi cercare i fornitori in base al nome, all'indirizzo o al numero di telefono, concatena i valori di queste colonne e poi genera un'evidenziazione del testo di questo valore combinato. Alcuni altri valori di testo che sono buoni candidati per l'inserimento di testo sono descrizioni nelle tabelle di testo, testi lunghi collegati a transazioni commerciali.

Il seguente esempio di codice illustra come generare embedding di testo e archiviarli in un bucket Cloud Storage:


DATA(lv_supplier) = CONV i_supplier-supplier( 'SUPPLIER' ).

SELECT SINGLE
     concat_with_space( supplierfullname, phonenumber1, 1 )
       AS line
       FROM i_supplier
       WHERE supplier = @lv_supplier
       INTO @DATA(lv_search_string).

DATA(ls_embedding_template) =
  VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
         id = lv_supplier
         content = lv_search_string ).

NEW /goog/cl_embeddings_model(
        iv_model_key = 'EMBEDDING_MODEL_KEY'
        )->gen_text_embeddings_by_struct(
        is_input = ls_embedding_template
        )->send_struct_to_gcs( iv_bucket_name = 'BUCKET_NAME' ).

Sostituisci quanto segue:

  • SUPPLIER: un codice alfanumerico univoco per identificare un fornitore.
  • EMBEDDING_MODEL_KEY: la chiave del modello per la generazione di embedding, configurata nei parametri di generazione del modello.
  • BUCKET_NAME: il nome del bucket Cloud Storage di destinazione.

Immagini

Molti settori, tra cui la produzione e la vendita al dettaglio, acquisiscono e archiviano immagini di oggetti aziendali chiave come materie prime, prodotti finiti e una vasta gamma di attrezzature. Per consentire una ricerca efficiente di questi oggetti aziendali utilizzando descrizioni di testo o somiglianza visiva, puoi utilizzare gli incorporamenti multimodali.

Il seguente esempio di codice illustra come generare embedding multimodali per le immagini e pubblicarli in un argomento Pub/Sub:

"Populate image data in XSTRING format
DATA(lv_image_xstring) = VALUE xstring( ).

DATA(lv_image_base64) =
   xco_cp=>xstring( lv_image_xstring
    )->as_string( xco_cp_binary=>text_encoding->base64
    )->value.

DATA(ls_image) =
  VALUE /goog/cl_embeddings_model=>ty_image(
     bytes_base64_encoded = lv_image_base64 ).

DATA(ls_embedding_template) =
  VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
         id = 'UNIQUE_ID'
         content = 'CONTEXTUAL_TEXT' ).

NEW /goog/cl_embeddings_model(
        iv_model_key = 'EMBEDDING_MODEL_KEY'
        )->gen_image_embeddings_by_struct(
        iv_image = ls_image
        is_input = ls_embedding_template
        )->send_struct_to_pubsub( iv_topic_id = 'PUBSUB_TOPIC_ID' ).

Sostituisci quanto segue:

  • UNIQUE_ID: un identificatore che identifica in modo univoco un'immagine. Ad esempio, può essere una combinazione del nome del file e della data di creazione dell'immagine.
  • CONTEXTUAL_TEXT: facoltativo. Contesto e significato aggiuntivi ai contenuti di input che vengono passati al modello di incorporamento.
  • EMBEDDING_MODEL_KEY: la chiave del modello per la generazione di embedding, configurata nei parametri di generazione del modello.
  • PUBSUB_TOPIC_ID: l'ID argomento Pub/Sub a cui pubblicare gli incorporamenti.

Documenti

I processi aziendali SAP gestiscono diversi tipi di documenti, come contratti, manuali, guide e schede di sicurezza. Questi documenti possono contenere informazioni importanti necessarie per prendere decisioni aziendali. Per trovare facilmente questi dati archiviati all'interno dei documenti, puoi utilizzare gli embedding multimodali. Per eseguire ricerche efficaci all'interno di documenti lunghi, è necessario implementare un meccanismo di suddivisione in blocchi. Suddivide il documento in unità più piccole, come pagine o sezioni, consentendo la contestualizzazione dei risultati di ricerca all'interno di un'area specifica.

Il seguente esempio di codice illustra come estrarre i dati da un documento PDF e generare embedding multimodali per ogni pagina, per poi inviarli a una tabella BigQuery:

"Populate PDF data in XSTRING format
DATA(lv_pdf_xstring) = VALUE xstring( ).

DATA(lv_pdf_base64) =
   xco_cp=>xstring( lv_pdf_xstring
    )->as_string( xco_cp_binary=>text_encoding->base64
    )->value.

DATA(ls_document_input) = VALUE /goog/cl_documentai_v1=>ty_084(
   raw_document-content   = lv_pdf_base64
   raw_document-mime_type = 'application/pdf' ).

NEW /goog/cl_documentai_v1( iv_key_name = 'DOC_AI_CLIENT_KEY'
    )->process_processors(
      EXPORTING
       iv_p_projects_id   = 'PROJECT_ID'
       iv_p_locations_id  = 'LOCATION_ID'
       iv_p_processors_id = 'PROCESSOR_ID'
       is_input           = ls_document_input
      IMPORTING
       es_output          = DATA(ls_docai_output) ).

LOOP AT ls_docai_output-document-pages REFERENCE INTO DATA(ls_pages).

  DATA(ls_image) =
    VALUE /goog/cl_embeddings_model=>ty_image(
       bytes_base64_encoded = ls_pages->image-content ).

  DATA(ls_embedding_template) =
    VALUE /goog/cl_embeddings_model=>ty_embeddings_template(
           id = 'UNIQUE_ID'                 "Document Name + Page #
           content = 'CONTEXTUAL_TEXT' ).   "Optional Text

  NEW /goog/cl_embeddings_model(
          iv_model_key = 'EMBEDDING_MODEL_KEY'
          )->gen_image_embeddings_by_struct(
          iv_image = ls_image
          is_input = ls_embedding_template
          )->send_struct_to_bq(
          iv_dataset_id = 'BIGQUERY_DATASET_ID'
          iv_table_id   = 'BIGQUERY_TABLE_ID' ).

ENDLOOP.

Sostituisci quanto segue:

  • DOC_AI_CLIENT_KEY: la chiave client per l'autenticazione.
  • PROJECT_ID: l'ID del progetto Google Cloud in cui viene creato il processore.
  • LOCATION_ID: la località del processore. Per informazioni su come visualizzare i dettagli del processore, consulta Visualizzare i dettagli di un processore.
  • PROCESSOR_ID: l'ID del processore. Per informazioni su come visualizzare i dettagli del processore, consulta Visualizzare i dettagli di un processore.
  • UNIQUE_ID: un identificatore che identifica in modo univoco un insieme specifico di conoscenze. Ad esempio, può essere una combinazione del nome del documento e del numero di pagina.
  • CONTEXTUAL_TEXT: facoltativo. Contesto e significato aggiuntivi ai contenuti di input che vengono passati al modello di incorporamento.
  • EMBEDDING_MODEL_KEY: la chiave del modello per la generazione di embedding, configurata nei parametri di generazione del modello.
  • BIGQUERY_DATASET_ID: l'ID set di dati BigQuery.
  • BIGQUERY_TABLE_ID: l'ID tabella BigQuery.

Generare incorporamenti in Google Cloud

In alternativa alla generazione di embedding in SAP, puoi generare embedding in modo nativo in Google Cloud con un codice minimo o nullo. Questo approccio richiede di archiviare i dati aziendali in Google Cloud prima di generare gli embedding.

Se i dati aziendali vengono caricati in BigQuery, puoi generare gli embedding di testo direttamente eseguendo un comando SQL. Per ulteriori informazioni, consulta Generare embedding di testo utilizzando la funzione ML.GENERATE_EMBEDDING.

Se i dati aziendali vengono caricati in un bucket Cloud Storage, utilizza uno dei seguenti metodi per generare gli embedding:

Passaggi successivi

Collaboratori

Autore: Ajith Urimajalu | Team Lead, SAP Application Engineer

Altro collaboratore: Vikash Kumar | Technical Writer