Mendesain subsistem penayangan di SAP untuk aplikasi AI generatif berkemampuan RAG

Dokumen ini menjelaskan arsitektur referensi untuk mendesain subsistem penayangan di SAP yang akan digunakan dengan aplikasi AI generatif yang mampu melakukan pembuatan yang ditingkatkan pengambilan (RAG). Untuk berintegrasi dengan layanan Google Cloud yang diperlukan untuk mem-build aplikasi AI generatif yang kompatibel dengan RAG, arsitektur referensi ini menggunakan ABAP SDK untuk Google Cloud edisi cloud atau lokal.

Dokumen ini ditujukan untuk developer ABAP, arsitek solusi SAP, dan arsitek cloud. Dokumen ini mengasumsikan bahwa Anda sudah mengetahui terminologi Vector Search dan konsep RAG.

Subsistem penayangan adalah komponen penting dalam aplikasi AI generatif yang kompatibel dengan RAG karena mengelola alur permintaan dan respons antara aplikasi dan penggunanya. Subsistem penayangan yang dijelaskan dalam dokumen ini memungkinkan aplikasi Anda mengakses dan menggunakan data perusahaan SAP untuk memberikan konteks ke model bahasa besar (LLM), yang dapat membantu menghasilkan output yang lebih akurat dan andal.

Dengan menggabungkan LLM Gemini dengan data dan proses perusahaan SAP, Anda dapat memperoleh manfaat seperti berikut:

  • Akurasi yang lebih baik: Akses ke berbagai informasi yang lebih luas akan menghasilkan pengambilan keputusan yang lebih akurat dan tepat berdasarkan data perusahaan Anda.
  • Pengalaman pengguna yang ditingkatkan: Informasi yang dipersonalisasi dan relevan secara kontekstual meningkatkan kepuasan pengguna dengan respons model yang lebih andal.

Arsitektur

Diagram berikut menunjukkan komponen subsistem penayangan di SAP:

Menayangkan subsistem di SAP

Seperti yang ditunjukkan pada gambar sebelumnya, arsitektur subsistem penayangan mencakup komponen berikut:

Jumlah Komponen Detail
1 Subsistem penayangan Subsistem penayangan bertanggung jawab untuk mengambil informasi yang relevan dari sumber data. Model ini melengkapi informasi dengan perintah, berinteraksi dengan model AI generatif, dan mengirimkan respons akhir kembali kepada pengguna.
2 ABAP SDK untuk Google Cloud SDK menangani komunikasi antara subsistem penayangan dan berbagai layanan Google Cloud .
3 Modul fungsi SAP Jika set data Anda kecil dan berada dalam sistem SAP, Anda dapat menggunakan modul fungsi SAP untuk membuat pipeline pengambilan informasi. Anda dapat mengambil data dari modul fungsi SAP menggunakan kueri SELECT, panggilan BAPI, atau panggilan fungsi SAP dengan Gemini.
4 Produk Vector Search Jika data perusahaan Anda besar dan Anda menginginkan aplikasi RAG dengan latensi minimal, Anda dapat membuat pipeline pengambilan menggunakan Vector Search. Anda dapat melakukan penelusuran semantik pada data perusahaan yang disimpan dalam bentuk penyematan di database vektor seperti Cloud Storage, Vertex AI Feature Store, atau BigQuery.
5 Model Gemini Vertex AI Model Vertex AI Gemini yang menghasilkan respons berdasarkan data perusahaan Anda.

Subsistem penayangan

Subsistem penayangan solusi AI generatif terdiri dari subkomponen berikut:

Pengambilan informasi

Saat pengguna mengirimkan permintaan ke aplikasi AI generatif melalui frontend, subsistem penayangan akan mengambil informasi dari sumber data. Untuk mengambil informasi dari sumber data, Anda dapat memilih metode yang sesuai untuk kasus penggunaan Anda:

  • Mengambil informasi menggunakan Vector Search
  • Mengambil informasi tanpa Vector Search

Jika data perusahaan Anda berukuran besar (data terstruktur atau tidak terstruktur) dan Anda menginginkan aplikasi RAG dengan latensi minimal, sebaiknya buat pipeline pengambilan menggunakan Vector Search. Penelusuran Vektor dapat menjalankan penelusuran teks dan multimodal pada miliaran data dalam hitungan milidetik.

Untuk menggunakan Vector Search guna pengambilan informasi, Anda perlu menyiapkan database vektor untuk menyimpan data perusahaan dalam bentuk embedding vektor. Untuk informasi tentang cara menyerap data perusahaan ke dalam database vektor, lihat Mem-build subsistem penyerapan data di SAP untuk aplikasi AI generatif yang kompatibel dengan RAG.

Jika set data Anda kecil dan berada dalam sistem SAP, Anda dapat mengambil informasi menggunakan kueri SELECT, panggilan SAP BAPI, atau menggunakan panggilan fungsi SAP dengan Gemini untuk meningkatkan konteks model.

Pengayaan informasi

Untuk memberikan konteks khusus perusahaan yang penting kepada model, sebaiknya Anda memperkaya perintah dengan informasi yang relevan dari sistem SAP Anda.

Setelah mendapatkan data tambahan, tambahkan data ke konteks model. Augmentasi ini memberi model konteks yang diperlukan untuk membuat respons menggunakan informasi perusahaan yang ditambahkan.

Untuk menambahkan data yang diambil ke konteks model, tambahkan atau gabungkan data ke perintah input ke model. Saat menambahkan data, Anda dapat menambahkan awalan atau akhiran dengan teks yang relevan untuk menunjukkan bahwa data tersebut adalah konteks tambahan bersama dengan perintah.

Pembuatan respons

Untuk memanggil model AI Gemini dengan perintah yang ditambahkan, gunakan komponen pemanggil model generatif dari Vertex AI SDK untuk ABAP.

Pendekatan ini memastikan bahwa respons yang dihasilkan tidak hanya relevan dengan kueri pengguna, dan didasarkan pada data khusus perusahaan Anda, sehingga menghasilkan hasil yang lebih akurat dan bermanfaat.

Kasus penggunaan

Aplikasi AI generatif yang kompatibel dengan RAG dapat digunakan untuk membuat update cepat tentang stok material di gudang menggunakan kueri natural language.

Pertimbangkan skenario saat Anda menerapkan aplikasi AI generatif untuk karyawan gudang perusahaan yang memproduksi dan mengirimkan furnitur, dekorasi, dan aksesori rumah.

Untuk mengelola inventaris dan rantai pasokan gudang secara efisien, aplikasi AI generatif memberikan insight cepat tentang stok material menggunakan kueri berbasis bahasa alami, melalui aplikasi web SAP. Salah satu contoh kueri tersebut dapat berupa menentukan jumlah inventaris saat ini dari materi tertentu.

Informasi ini disimpan dalam data produk di tabel database SAP, yang mungkin berupa daftar item yang sangat besar untuk perusahaan perlengkapan rumah yang besar. Karyawan gudang perlu mendapatkan respons dari aplikasi SAP yang didasarkan pada informasi di sistem SAP (satu sumber tepercaya). Informasi ini memungkinkan mereka membuat keputusan yang cepat dan efisien, seperti berikut:

  • Ketersediaan stok: Apakah ada stok bahan tertentu?
  • Level inventaris: Berapa banyak unit bahan yang tersedia?
  • Perencanaan produksi: Berapa target produksi untuk suatu bahan agar dapat memenuhi pesanan masuk berikutnya?

Deployment

Bagian ini menguraikan penerapan subsistem penayangan untuk kasus penggunaan warehouse. Panduan ini menjelaskan cara menggunakan Vertex AI SDK untuk ABAP, yang disematkan dalam versi terbaru ABAP SDK untuk Google Cloud, guna mengambil informasi dan berinteraksi dengan model Gemini.

Untuk kasus penggunaan gudang, perhatikan bahwa informasi stok di SAP ditautkan ke ID material unik untuk setiap produk. Setiap produk juga memiliki atribut deskriptif yang disimpan di SAP, seperti namanya, deskripsi mendetail, kategori, dan properti relevan lainnya. Deskripsi tekstual ini dikonversi menjadi representasi numerik yang disebut "embedding" dan disimpan di database vektor. Setiap penyematan ditautkan ke ID materi yang sesuai, sehingga memungkinkan penelusuran dan analisis informasi produk yang efisien.

Setelah database vektor diperbarui, untuk menjalankan kueri penelusuran "berapa jumlah inventaris saat ini untuk suatu produk", Anda dapat melakukan hal berikut:

  • Lakukan penelusuran vektor di database vektor dengan kueri untuk mengambil ID materi.

  • Buat kueri tabel SAP dan panggil SAP BAPI untuk mendapatkan jumlah stok untuk ID material.

  • Tambahkan kuantitas stok ke konteks model.

Jika pilihan database vektor Anda adalah indeks vektor, Anda dapat menggunakan Vertex AI SDK untuk ABAP guna memanggil penelusuran vektor langsung dari ABAP. Untuk mengetahui informasi selengkapnya, lihat arsitektur referensi Vertex AI Vector Search untuk aplikasi SAP cerdas.

Berikut adalah langkah-langkah penerapan subsistem penayangan:

  1. Untuk mengambil ID material untuk kasus penggunaan warehouse, Anda dapat menggunakan Penelusuran Vektor.

    Contoh kode berikut menggambarkan cara mengambil ID materi dengan menggunakan Penelusuran Vektor:

    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.
    

    Jika set data Anda kecil dan berada dalam sistem SAP, untuk menemukan ID material untuk kasus penggunaan gudang, Anda dapat menggunakan kueri SELECT dengan deskripsi material, lalu membuat kueri tabel SAP untuk mendapatkan jumlah stok.

    Contoh kode berikut mengilustrasikan cara mengambil informasi stock material menggunakan kueri 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.
    
  2. Untuk menambahkan data yang diambil ke perintah input, gabungkan stok yang tersedia untuk materi ke perintah dengan awalan "Stok tersedia".

    Contoh kode berikut mengilustrasikan cara menambahkan data yang diambil ke perintah input:

    * Augment retrieved data to the input prompt
    lv_prompt = lv_prompt && 'Additional Context' && lv_available_inventory.
    
    
  3. Untuk memanggil model AI Gemini dengan perintah yang ditambahkan, gunakan komponen pemanggil model generatif Vertex AI SDK untuk ABAP.

    Contoh kode berikut mengilustrasikan cara memanggil model dengan perintah yang ditingkatkan:

    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.
    
    

Pertimbangan desain

Bagian ini memberikan panduan untuk membantu Anda menggunakan arsitektur referensi ini untuk mengembangkan arsitektur yang membantu Anda memenuhi persyaratan khusus untuk keamanan, privasi, kepatuhan, biaya, dan performa.

Keamanan, privasi, dan kepatuhan:

Keamanan dan kepatuhan adalah tanggung jawab bersama. Untuk mengetahui informasi selengkapnya, lihat Tanggung jawab bersama Vertex AI.

Untuk informasi tentang komitmen Google Cloudterhadap privasi data, lihat Pusat Referensi Privasi.

Pengoptimalan biaya

Jika Anda menggunakan Vector Search untuk mengambil informasi untuk RAG, untuk menurunkan biaya, sebaiknya pilih ukuran shard yang lebih rendah dan penyematan berdimensi lebih rendah untuk indeks Anda, yang memungkinkan Anda menggunakan mesin komputasi yang lebih kecil untuk men-deploy indeks.

Vertex AI adalah penawaran yang dapat ditagih dari Google Cloud. Untuk mengetahui informasi tentang harga, lihat Harga Vertex AI dan Harga Penelusuran Vektor. Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan Kalkulator Harga.

Pengoptimalan performa

Jika Anda menggunakan Vector Search untuk mengambil informasi RAG, maka untuk meningkatkan latensi guna mencari set data besar, pertimbangkan untuk memilih ukuran shard yang lebih tinggi saat membuat indeks dan mesin komputasi berperforma tinggi saat men-deploy indeks. Untuk mempelajari ukuran shard untuk indeks lebih lanjut, lihat Ukuran indeks.

Untuk meningkatkan relevansi respons penelusuran, buat penyematan data perusahaan Anda dalam dimensi yang lebih tinggi. Mesin komputasi dan dimensi penyematan yang lebih tinggi memerlukan biaya yang besar. Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan Kalkulator Harga.

Langkah selanjutnya

Kontributor

Penulis: Devesh Singh | SAP Application Engineer

Kontributor lainnya: Vikash Kumar | Technical Writer