In diesem Dokument wird eine Referenzarchitektur für die Entwicklung eines Bereitstellungs-Subsystems in SAP beschrieben, das mit generativen KI-Anwendungen mit Retrieval Augmented Generation (RAG) verwendet werden kann. Für die Einbindung in die Google Cloud Dienste, die für die Entwicklung von RAG-fähigen generativen KI-Anwendungen erforderlich sind, verwendet diese Referenzarchitektur die lokale oder eine beliebige Cloud-Version des ABAP SDK for Google Cloud.
Dieses Dokument richtet sich an ABAP-Entwickler, SAP-Lösungsarchitekten und Cloud-Architekten. Dabei wird davon ausgegangen, dass Sie mit der Terminologie der Vektorsuche und den RAG vertraut sind.
Ein Bereitstellungs-Subsystem ist eine wichtige Komponente in einer RAG-fähigen generativen KI-Anwendung, da es den Fluss von Anfragen und Antworten zwischen der Anwendung und ihren Nutzern verwaltet. Mit dem in diesem Dokument beschriebenen Bereitstellungsuntersystem können Ihre Anwendungen auf SAP-Unternehmensdaten zugreifen und diese verwenden, um Large Language Models (LLMs) Kontext zu bieten. Dies kann dazu beitragen, genauere und zuverlässigere Ergebnisse zu generieren.
Wenn Sie Gemini-LLMs mit SAP-Unternehmensdaten und ‑prozessen kombinieren, können Sie folgende Vorteile nutzen:
- Höhere Genauigkeit: Der Zugriff auf ein breiteres Spektrum an Informationen führt zu genaueren und fundierteren Entscheidungen, die auf Ihren Unternehmensdaten basieren.
- Verbesserte Nutzerfreundlichkeit: Personalisierte und kontextbezogene Informationen verbessern die Nutzerzufriedenheit durch zuverlässigere Modellantworten.
Architektur
Das folgende Diagramm zeigt die Komponenten eines Bereitstellungs-Subsystems in SAP:
Wie im vorherigen Bild dargestellt, umfasst die Architektur des Bereitstellungs-Subsystems die folgenden Komponenten:
Zahl | Komponente | Details |
---|---|---|
1 | Subsystem für die Bereitstellung | Das Bereitstellungssubsystem ist für das Abrufen relevanter Informationen aus Datenquellen verantwortlich. Er ergänzt die Informationen um einen Prompt, interagiert mit den generativen KI-Modellen und gibt die endgültige Antwort an den Nutzer zurück. |
2 | ABAP SDK for Google Cloud | Das SDK verwaltet die Kommunikation zwischen dem Bereitstellungs-Subsystem und verschiedenen Google Cloud Diensten. |
3 | SAP-Funktionsmodul | Wenn Ihr Datensatz klein ist und sich in Ihren SAP-Systemen befindet, können Sie die SAP-Funktionsmodule verwenden, um Ihre Pipeline für die Informationsabfrage zu erstellen. Sie können Daten aus einem SAP-Funktionsmodul mithilfe von SELECT -Abfragen, BAPI-Aufrufen oder SAP-Funktionsaufrufen mit Gemini abrufen. |
4 | Produkte für die Vektorsuche | Wenn Ihre Unternehmensdaten groß sind und Sie eine RAG-Anwendung mit minimaler Latenz benötigen, können Sie Ihre Abrufpipeline mithilfe der Vektorsuche erstellen. Sie können eine semantische Suche in Ihren Unternehmensdaten durchführen, die in Form von Einbettungen in einer Vektordatenbank wie Cloud Storage, Vertex AI Feature Store oder BigQuery gespeichert sind. |
5 | Vertex AI Gemini-Modelle | Vertex AI Gemini-Modelle, die Antworten generieren, die auf Ihren Unternehmensdaten basieren. |
Subsystem für die Bereitstellung
Das Bereitstellungssubsystem einer Lösung für generative KI besteht aus den folgenden Unterkomponenten:
Informationsabruf
Wenn Nutzer über ein Frontend Anfragen an die generative KI-Anwendung senden, ruft das Bereitstellungs-Subsystem Informationen aus einer Datenquelle ab. Um Informationen aus einer Datenquelle abzurufen, können Sie eine für Ihren Anwendungsfall geeignete Methode auswählen:
- Informationen mit der Vektorsuche abrufen
- Informationen ohne Vektorsuche abrufen
Informationen mit der Vektorsuche abrufen
Wenn Ihre Unternehmensdaten groß sind (strukturierte oder unstrukturierte Daten) und Sie eine RAG-Anwendung mit minimaler Latenz benötigen, empfehlen wir, Ihre Abrufpipeline mithilfe der Vektorsuche zu erstellen. Die Vektorsuche kann innerhalb von Millisekunden Text- und multimodale Suchanfragen in Milliarden von Einträgen ausführen.
Wenn Sie die Vektorsuche für die Informationsabfrage verwenden möchten, müssen Sie eine Vektordatenbank einrichten, um die Unternehmensdaten in Form von Vektoreinbettungen zu speichern. Informationen zum Aufnehmen von Unternehmensdaten in eine Vektordatenbank finden Sie unter Datenaufnahme-Subsystem in SAP für RAG-fähige generative KI-Anwendungen erstellen.
Informationen ohne Vektorsuche abrufen
Wenn Ihr Datensatz klein ist und sich in Ihren SAP-Systemen befindet, können Sie Informationen mithilfe von SELECT
-Abfragen, SAP BAPI
-Aufrufen oder SAP-Funktionsaufrufen mit Gemini abrufen, um den Kontext des Modells zu erweitern.
Informationserweiterung
Damit das Modell einen wichtigen unternehmensspezifischen Kontext erhält, empfehlen wir Ihnen, Ihre Prompts mit relevanten Informationen aus Ihren SAP-Systemen anzureichern.
Nachdem Sie die zusätzlichen Daten erhalten haben, fügen Sie sie dem Kontext des Modells hinzu. Durch diese Erweiterung erhält das Modell den erforderlichen Kontext, um eine Antwort mit den hinzugefügten Unternehmensinformationen zu geben.
Wenn Sie die abgerufenen Daten dem Kontext des Modells hinzufügen möchten, hängen Sie sie an die Eingabeaufforderung für das Modell an oder konkatenieren Sie sie mit ihr. Beim Anhängen der Daten können Sie ihnen einen entsprechenden Präfix oder Suffix hinzufügen, um anzugeben, dass es sich um zusätzlichen Kontext neben dem Prompt handelt.
Antwortgenerierung
Wenn Sie ein Gemini-KI-Modell mit dem erweiterten Prompt aufrufen möchten, verwenden Sie die Komponente „Generator Model Invoker“ des Vertex AI SDK für ABAP.
So ist die generierte Antwort nicht nur für die Suchanfrage des Nutzers relevant, sondern basiert auch auf Ihren unternehmensspezifischen Daten. Das führt zu genaueren und aussagekräftigeren Ergebnissen.
Anwendungsfall
Mit einer RAG-fähigen generativen KI-Anwendung können Sie mithilfe von Anfragen in natürlicher Sprache schnell aktuelle Informationen zum Materialbestand in einem Lager generieren.
Angenommen, Sie implementieren eine Anwendung für generative KI für Lagermitarbeiter eines Unternehmens, das Möbel, Dekoration und Accessoires für das Zuhause herstellt und versendet.
Um das Lagerinventar und die Lieferkette effizient zu verwalten, bietet die Anwendung mit generativer KI über eine SAP-Webanwendung schnelle Informationen zum Materialbestand anhand von Abfragen in natürlicher Sprache. Ein Beispiel für eine solche Abfrage wäre die Ermittlung der aktuellen Inventarmenge eines bestimmten Materials.
Diese Informationen werden in den Produktdaten in SAP-Datenbanktabellen gespeichert. Das kann eine riesige Liste von Artikeln für ein großes Unternehmen für Heimeinrichtung sein. Mitarbeiter im Lager benötigen Antworten von der SAP-Anwendung, die auf den Informationen in den SAP-Systemen (der einzigen Quelle der Wahrheit) beruhen. Anhand dieser Informationen können sie schnell und effizient Entscheidungen treffen, z. B.:
- Lagerverfügbarkeit: Ist ein bestimmtes Material auf Lager?
- Lagerbestände: Wie viele Einheiten eines Materials sind verfügbar?
- Produktionsplanung: Wie hoch sollte das Produktionsziel für ein Material sein, um die nächste eingehende Bestellung zu erfüllen?
Bereitstellung
In diesem Abschnitt wird die Implementierung eines Bereitstellungs-Subsystems für den Lagerhallen-Anwendungsfall beschrieben. Darin wird beschrieben, wie Sie das Vertex AI SDK für ABAP verwenden, das in der neuesten Version des ABAP SDK for Google Cloud eingebettet ist, um Informationen abzurufen und mit Gemini-Modellen zu interagieren.
Im Lagerfall sind die Lagerinformationen in SAP mit einer eindeutigen Material-ID für jedes Produkt verknüpft. Für jedes Produkt sind in SAP auch beschreibende Attribute gespeichert, z. B. Name, detaillierte Beschreibung, Kategorie und andere relevante Eigenschaften. Diese Textbeschreibungen werden in numerische Darstellungen umgewandelt, die als „Embeddings“ bezeichnet werden, und in einer Vektordatenbank gespeichert. Jede Einbettung ist mit der entsprechenden Material-ID verknüpft, was eine effiziente Suche und Analyse von Produktinformationen ermöglicht.
Sobald Ihre Vektordatenbank aktualisiert wurde, können Sie die Suchanfrage „Wie hoch ist die aktuelle Inventarmenge für ein Produkt?“ so ausführen:
Führen Sie eine Vektorsuche in der Vektordatenbank mit der Abfrage aus, um die Material-ID abzurufen.
SAP-Tabellen abfragen und SAP BAPI aufrufen, um die Lagermenge für die Material-ID abzurufen.
Erhöhen Sie die Lagermenge entsprechend dem Kontext des Modells.
Wenn Sie einen Vektorindex als Vektordatenbank ausgewählt haben, können Sie mit dem Vertex AI SDK für ABAP eine Vektorsuche direkt aus ABAP aufrufen. Weitere Informationen finden Sie in der Referenzarchitektur Vertex AI Vector Search für intelligente SAP-Anwendungen.
Die folgenden Schritte sind für die Implementierung eines Bereitstellungs-Subsystems erforderlich:
Um die Material-ID für den Lager-Anwendungsfall abzurufen, können Sie die Vektorsuche verwenden.
Im folgenden Codebeispiel wird gezeigt, wie die Material-ID mithilfe der Vektorsuche abgerufen wird:
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.
Wenn Ihr Datensatz klein ist und sich in Ihren SAP-Systemen befindet, können Sie
SELECT
-Abfragen mit der Materialbeschreibung verwenden, um die Material-ID für den Lager-Use-Case zu ermitteln, und dann die SAP-Tabelle abfragen, um die Lagermenge zu erhalten.Im folgenden Codebeispiel wird gezeigt, wie Sie mithilfe von
SELECT
-Abfragen Informationen zum Materialbestand abrufen: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.
Wenn Sie die abgerufenen Daten in den Prompt einfügen möchten, konkatenieren Sie den verfügbaren Bestand für das Material mit dem Prompt mit dem Präfix „Verfügbarer Bestand“.
Im folgenden Codebeispiel wird gezeigt, wie die abgerufenen Daten dem Eingabeprompt hinzugefügt werden:
* Augment retrieved data to the input prompt lv_prompt = lv_prompt && 'Additional Context' && lv_available_inventory.
Wenn Sie ein Gemini-KI-Modell mit dem erweiterten Prompt aufrufen möchten, verwenden Sie die Komponente „Generator Model Invoker“ des Vertex AI SDK für ABAP.
Im folgenden Codebeispiel wird gezeigt, wie das Modell mit einem erweiterten Prompt aufgerufen wird:
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.
Designaspekte
Dieser Abschnitt enthält eine Anleitung zur Verwendung dieser Referenzarchitektur, um Architekturen zu entwickeln, die Ihren spezifischen Anforderungen an Sicherheit, Datenschutz, Compliance, Kosten und Leistung entsprechen.
Sicherheit, Datenschutz und Compliance
Für Sicherheit und Compliance tragen Sie gemeinsam die Verantwortung. Weitere Informationen finden Sie unter Geteilte Verantwortung bei Vertex AI.
Informationen zur Verpflichtung von Google Cloudzum Datenschutz finden Sie im Datenschutz-Center.
Kostenoptimierung
Wenn Sie die Vektorsuche verwenden, um Informationen für die RAG-Suche abzurufen, können Sie die Kosten senken, indem Sie kleinere Shard-Größen und niedriger dimensionale Einbettungen für Ihre Indexe auswählen. So können Sie für die Bereitstellung der Indexe einen kleineren Compute-Rechner verwenden.
Vertex AI ist ein abrechenbares Angebot von Google Cloud. Informationen zu Preisen finden Sie unter Vertex AI-Preise und Preise für die Vektorsuche. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Leistungsoptimierung
Wenn Sie die Vektorsuche verwenden, um Informationen für die RAG abzurufen, sollten Sie beim Erstellen des Index größere Shard-Größen und beim Bereitstellen des Index Hochleistungs-Rechenmaschinen auswählen, um die Latenz beim Abrufen großer Datensätze zu verbessern. Weitere Informationen zu Shard-Größen für einen Index finden Sie unter Indexgröße.
Um die Relevanz der Suchantworten zu erhöhen, generieren Sie Einbettungen Ihrer Unternehmensdaten in höheren Dimensionen. Compute-Maschinen und höhere Einbettungsdimensionen sind kostenintensiv. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nächste Schritte
Weitere Informationen zur Verwendung der Vektorsuche für die semantische Suche mit SAP-Anwendungen finden Sie unter Vertex AI Vector Search für intelligente SAP-Anwendungen.
Informationen zur Verwendung der Vektorsuche mit dem Vertex AI SDK für ABAP finden Sie unter Vertex AI-Vektorsuche verwenden.
Informationen zum Aufnehmen von Unternehmensdaten in eine Vektordatenbank finden Sie unter Datenaufnahme-Subsystem in SAP für RAG-fähige generative KI-Anwendungen erstellen.
Wenn Sie Hilfe bei der Behebung von Problemen mit dem ABAP SDK for Google Cloud benötigen, gehen Sie so vor:
- Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung für ABAP SDK for Google Cloud.
- In den Cloud-Foren können Sie Ihre Fragen stellen und über die ABAP SDK für Google Cloud mit der Community sprechen.
- Erfassen Sie alle verfügbaren Diagnoseinformationen und wenden Sie sich an Cloud Customer Care. Weitere Informationen zur Kontaktaufnahme mit Customer Care finden Sie unter Support für SAP in Google Cloud.
Beitragende
Autor: Devesh Singh | SAP Application Engineer
Weiterer Mitwirkender: Vikash Kumar | Technischer Autor