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:
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
Mengambil informasi menggunakan 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.
Mengambil informasi tanpa Vector Search
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:
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.
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.
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
Untuk mempelajari cara menggunakan Vector Search untuk penelusuran semantik dengan aplikasi SAP, lihat Vertex AI Vector Search untuk aplikasi SAP cerdas.
Untuk mempelajari cara menggunakan Vector Search dengan Vertex AI SDK untuk ABAP, lihat Menggunakan Vertex AI Vector Search.
Untuk mempelajari 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 Anda memerlukan bantuan untuk menyelesaikan masalah terkait ABAP SDK untuk Google Cloud, lakukan hal berikut:
- Lihat panduan pemecahan masalah ABAP SDK untuk Google Cloud.
- Ajukan pertanyaan dan diskusikan ABAP SDK untuk Google Cloud dengan komunitas di Cloud Forum.
- Kumpulkan semua informasi diagnostik yang tersedia dan hubungi Cloud Customer Care. Untuk mengetahui informasi tentang cara menghubungi Layanan Pelanggan, lihat Mendapatkan dukungan untuk SAP di Google Cloud.
Kontributor
Penulis: Devesh Singh | SAP Application Engineer
Kontributor lainnya: Vikash Kumar | Technical Writer