Subsistem penyerapan data di SAP untuk aplikasi AI generatif

Dokumen ini menjelaskan arsitektur referensi untuk mendesain subsistem penyerapan data di SAP, untuk aplikasi AI generatif yang kompatibel dengan RAG. Subsistem ini menggunakan ABAP SDK untuk Google Cloud edisi cloud atau lokal untuk berintegrasi dengan layanan Google Cloud yang diperlukan untuk mem-build aplikasi AI generatif yang kompatibel dengan RAG.

Aplikasi AI generatif yang mampu melakukan pembuatan yang ditingkatkan pengambilan (RAG) memiliki berbagai komponen, di antaranya subsistem penyerapan data bertanggung jawab untuk menyiapkan dan memproses data perusahaan. Subsistem ini membantu Anda menyiapkan dan menyimpan data perusahaan sebagai penyematan dalam database vektor, untuk interaksi AI yang akurat dan mendalam.

Karena banyak organisasi menggunakan sistem SAP ERP untuk menyimpan data perusahaan mereka, dokumen ini menawarkan panduan tentang cara mengintegrasikan solusi penyimpanan data dan database penelusuran vektor Google Cloud sebagai bagian dari subsistem penyerapan data Anda. Hal ini memungkinkan Anda membuat pilihan yang tepat dan menggunakan layanan Google Cloud secara efektif untuk membuat pipeline yang andal dan efisien bagi aplikasi AI generatif yang kompatibel dengan RAG.

Audiens yang dituju untuk dokumen ini mencakup developer ABAP, arsitek solusi SAP, dan arsitek cloud. Dokumen ini mengasumsikan bahwa Anda sudah memahami konsep terminologi Vector Search dan RAG.

Arsitektur

Diagram berikut menunjukkan arsitektur referensi yang mengilustrasikan komponen subsistem penyerapan data di SAP:

Subsistem penyerapan data di SAP

Arsitektur subsistem penyerapan data ini mencakup komponen berikut:

# Komponen Detail
1 Subsistem penyerapan data Menyiapkan dan memproses data perusahaan untuk menghasilkan embedding vektor. Kemudian, penyematan ini disimpan di database vektor yang sesuai di Google Cloud. Secara opsional, Anda dapat menyimpan data perusahaan di Google Cloud.
2 ABAP SDK untuk Google Cloud SDK menangani komunikasi antara subsistem penyerapan data dan berbagai layanan Google Cloud.
3 Penyimpanan data Opsional. Solusi penyimpanan data Google Cloud seperti BigQuery atau Cloud Storage, yang digunakan untuk menyimpan data perusahaan, baik terstruktur maupun tidak terstruktur. Untuk informasi selengkapnya, lihat Menyimpan data perusahaan di Google Cloud.
4 Model penyematan (Vertex AI) Model AI yang menghasilkan penyematan dari berbagai sumber data perusahaan.
5 Produk Vector Search Menyimpan penyematan di database vektor seperti Cloud Storage atau BigQuery, tempat Anda dapat melakukan penelusuran semantik.

Subsistem penyerapan data

Bagian ini menjelaskan subsistem penyerapan data yang mengubah data perusahaan Anda menjadi penyematan, dan menyimpan penyematan dalam database vektor untuk digunakan dengan aplikasi AI generatif yang kompatibel dengan RAG. Subsistem ini dapat memproses berbagai data SAP, termasuk dokumen, gambar, aturan bisnis, dan perintah, untuk membuat penyematan.

Menyiapkan data perusahaan

Sebelum men-deploy aplikasi AI generatif yang kompatibel dengan RAG untuk pertama kalinya, Anda perlu memuat penyematan untuk data perusahaan yang ada dari sistem SAP. Anda dapat menangani hal ini dengan membuat program batch baru atau menggunakan kembali program yang ada yang dapat membaca data perusahaan Anda dalam bagian yang dapat dikelola.

Setelah Anda melakukan pemuatan awal data dan penyematan, subsistem penyerapan data Anda harus mengikuti setiap perubahan pada data SAP Anda. Baik itu data baru, pembaruan pada data yang ada, atau penghapusan, indeks penelusuran vektor perlu mencerminkan perubahan ini. Untuk melakukannya, Anda dapat menggunakan tempat yang sesuai dalam framework pengembangan aplikasi SAP seperti Add-In Bisnis (BAdI) dan Pemroses Peristiwa RAP. Hal ini memastikan penyematan Anda tetap aktual dan aplikasi AI Anda selalu memiliki informasi terbaru.

Menyimpan data perusahaan di Google Cloud (opsional)

Sistem SAP dapat berisi data perusahaan terstruktur dan tidak terstruktur. Secara opsional, Anda dapat menyimpan data perusahaan ini di Google Cloud untuk diambil dari subsistem penayangan.

Untuk menyimpan data perusahaan, Anda dapat menggunakan layanan Google Cloud berikut:

  • Untuk melakukan streaming data terstruktur dari SAP ke BigQuery, Anda dapat menggunakan BigQuery Connector untuk SAP atau menggunakan metode INSERT_ALL_TABLEDATA dari class /GOOG/CL_BIGQUERY_V2 ABAP SDK untuk Google Cloud.
  • Untuk menyimpan data tidak terstruktur seperti gambar dan dokumen PDF di Cloud Storage, Anda dapat menggunakan class /GOOG/CL_STORAGE_V1 dari ABAP SDK untuk Google Cloud. Untuk contoh kode yang mengilustrasikan cara mengupload objek ke bucket Cloud Storage, lihat Mengupload file ke bucket.
  • Untuk mengonfigurasi Cloud Storage sebagai repositori konten untuk SAP, Anda dapat menerapkan dan menyesuaikan contoh solusi yang tersedia di GitHub, Google Cloud Storage: Content Server for SAP.

Membuat embedding dari data perusahaan

Untuk membuat embedding teks dan multimodal dari data perusahaan, Anda dapat menggunakan model penyematan dengan Vertex AI SDK untuk ABAP.

Embedding pada dasarnya adalah kode numerik yang mewakili teks, gambar, atau video dengan cara yang menunjukkan hubungannya. Aplikasi menggunakan kode ini untuk memahami dan menghasilkan bahasa, bahkan mengenali makna dan hubungan yang paling kompleks dalam konten spesifik Anda. Proses ini berfungsi dengan mengubah teks, gambar, dan video menjadi daftar angka, yang dikenal sebagai vektor, yang dirancang untuk menangkap makna konten asli secara efektif.

Menyimpan penyematan

Untuk menyimpan dan menelusuri penyematan yang dihasilkan dari data perusahaan SAP secara efisien, Anda dapat menggunakan produk penelusuran vektor Google Cloud, yang berfungsi sebagai database vektor.

Untuk menyimpan penyematan data perusahaan SAP, pilih database vektor dari daftar berikut:

Pertimbangan desain

Berikut adalah pertimbangan desain utama untuk memilih database vektor:

  • Performa: Faktor seperti kecepatan pengindeksan untuk vektor baru, kecepatan penelusuran (latensi), skalabilitas, kompromi antara mengambil semua hasil yang relevan (recall) dan hanya yang paling relevan (presisi).
  • Karakteristik data: Ukuran vektor penyematan, ukuran set data vektor, dan distribusi data memengaruhi biaya, performa, dan pengindeksan.
  • Fitur: Fungsi jarak yang didukung seperti algoritma Euclidean dan kemiripan kosinus, kemampuan untuk melakukan pemfilteran, menggabungkan penelusuran kata kunci dan vektor, serta dukungan untuk penelusuran perkiraan tetangga terdekat (ANN).
  • Integrasi: Integrasi yang ada dan kemudahan penyerapan data dari aplikasi Anda.
  • Biaya: Model harga, biaya penyimpanan, dan biaya kueri yang sesuai dengan data dan volume penelusuran.

Untuk memungkinkan penelusuran dan analisis yang efisien, simpan penyematan di database vektor, beserta ID yang menautkannya kembali ke data sumbernya.

Keputusan untuk menyimpan data perusahaan di solusi penyimpanan Google Cloud secara utama bergantung pada lokasi subsistem penayangan Anda:

  • Jika subsistem penayangan Anda adalah SAP, menyimpan data perusahaan di luar SAP bersifat opsional, karena Anda sudah memiliki akses ke data perusahaan dalam SAP.

  • Jika subsistem penayangan Anda berada di luar SAP, seperti App Engine, Anda mungkin perlu menyimpan data perusahaan di solusi penyimpanan Google Cloud yang sesuai untuk pengambilan data yang efisien. Anda dapat menghindari hal ini jika subsistem penayangan dapat melakukan panggilan jarak jauh ke SAP untuk mengambil data.

Menjelajahi cara membuat dan menyimpan penyematan

Bagian ini menjelaskan cara membuat dan menyimpan penyematan dari data perusahaan Anda. Ada dua pola utama untuk membuat dan menyimpan penyematan:

  • Buat penyematan di SAP: Buat penyematan dari data perusahaan yang berada di sistem SAP ERP Anda menggunakan model penyematan yang sesuai dengan Vertex AI SDK untuk ABAP, dan simpan di database vektor.

  • Buat penyematan di Google Cloud: Buat penyematan dari data perusahaan yang berada di media penyimpanan di Google Cloud menggunakan pendekatan serverless, seperti fungsi Cloud Run atau BigQuery, dan simpan di database vektor.

Membuat embedding di SAP

Untuk membuat penyematan dari data perusahaan SAP secara lokal dalam sistem SAP, Anda dapat menggunakan berbagai model penyematan dengan Vertex AI SDK untuk ABAP. Embedding yang dihasilkan ini kemudian dapat dikirim ke database vektor yang sesuai di Google Cloud menggunakan salah satu mekanisme penyerapan bawaan SDK.

Anda dapat memutuskan data mana yang akan dikonversi menjadi penyematan berdasarkan kebutuhan Anda untuk kemampuan penelusuran vektor. Untuk mempelajari cara membuat penyematan dengan Vertex AI SDK untuk ABAP, lihat Membuat penyematan.

Bagian ini menjelaskan jenis data SAP umum dan cara membuat penyematan menggunakan Vertex AI SDK untuk ABAP.

Data perusahaan terstruktur yang disimpan dalam tabel SAP

Anda terutama membuat penyematan untuk satu atau beberapa kolom teks dalam tabel SAP. Misalnya, jika ingin menelusuri pemasok berdasarkan nama, alamat, atau nomor telepon mereka, Anda harus menggabungkan nilai kolom ini, lalu membuat penyematan teks dari nilai gabungan ini. Beberapa nilai teks lain yang merupakan kandidat yang baik untuk penyematan teks adalah deskripsi dalam tabel teks, teks panjang yang ditautkan ke transaksi bisnis.

Contoh kode berikut menggambarkan cara membuat penyematan teks dan menyimpannya di 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' ).

Ganti kode berikut:

  • SUPPLIER: Kode alfanumerik unik untuk mengidentifikasi pemasok.
  • EMBEDDING_MODEL_KEY: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.
  • BUCKET_NAME: Nama bucket Cloud Storage target.

Image

Banyak industri, termasuk manufaktur dan retail, mengambil dan menyimpan gambar objek bisnis utama seperti bahan baku, produk jadi, dan berbagai peralatan. Untuk memungkinkan penelusuran yang efisien terhadap objek bisnis ini menggunakan deskripsi tekstual atau kemiripan visual, Anda dapat menggunakan penyematan multimodal.

Contoh kode berikut menggambarkan cara membuat penyematan multimodal untuk gambar dan memublikasikannya ke topik 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' ).

Ganti kode berikut:

  • UNIQUE_ID: ID yang mengidentifikasi gambar secara unik. Misalnya, nama file dan tanggal pembuatan gambar.
  • CONTEXTUAL_TEXT: Opsional. Konteks dan makna tambahan untuk konten input yang diteruskan ke model penyematan.
  • EMBEDDING_MODEL_KEY: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.
  • PUBSUB_TOPIC_ID: ID topik Pub/Sub tempat embedding akan dipublikasikan.

Dokumen

Proses bisnis SAP menangani berbagai jenis dokumen seperti kontrak, manual, panduan, dan sheet data keselamatan. Dokumen ini dapat berisi informasi penting yang diperlukan untuk membuat keputusan bisnis. Untuk menemukan data yang disimpan dalam dokumen ini dengan lancar, Anda dapat menggunakan penyematan multimodal. Untuk menelusuri dokumen panjang secara efektif, mekanisme pengelompokan harus diterapkan. Hal ini membagi dokumen menjadi unit yang lebih kecil, seperti halaman atau bagian, sehingga memungkinkan kontekstualisasi hasil penelusuran dalam area tertentu.

Contoh kode berikut menggambarkan cara mengekstrak data dari dokumen PDF dan membuat penyematan multimodal untuk setiap halaman, lalu mengirim penyematan tersebut ke tabel 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.

Ganti kode berikut:

  • DOC_AI_CLIENT_KEY: Kunci klien untuk autentikasi.
  • PROJECT_ID: ID project Google Cloud tempat pemroses dibuat.
  • LOCATION_ID: Lokasi pemroses. Untuk mengetahui informasi tentang cara melihat detail prosesor, lihat Melihat detail tentang prosesor.
  • PROCESSOR_ID: ID pemroses. Untuk informasi tentang cara melihat detail prosesor, lihat Melihat detail tentang prosesor.
  • UNIQUE_ID: ID yang secara unik mengidentifikasi sebagian pengetahuan tertentu. Misalnya, dapat berupa kombinasi nama dokumen dan nomor halaman.
  • CONTEXTUAL_TEXT: Opsional. Konteks dan makna tambahan untuk konten input yang diteruskan ke model penyematan.
  • EMBEDDING_MODEL_KEY: Kunci model untuk membuat penyematan, yang dikonfigurasi di parameter pembuatan model.
  • BIGQUERY_DATASET_ID: ID set data BigQuery.
  • BIGQUERY_TABLE_ID: ID tabel BigQuery.

Membuat embedding di Google Cloud

Sebagai alternatif untuk membuat penyematan di SAP, Anda dapat membuat penyematan secara native di Google Cloud dengan coding minimal atau tanpa coding. Pendekatan ini memerlukan Anda untuk menyimpan data perusahaan di Google Cloud sebelum membuat penyematan.

Jika data perusahaan dimuat ke BigQuery, Anda dapat membuat penyematan teks secara langsung dengan menjalankan perintah SQL. Untuk informasi selengkapnya, lihat Membuat penyematan teks menggunakan fungsi ML.GENERATE_EMBEDDING.

Jika data perusahaan Anda diupload ke bucket Cloud Storage, gunakan salah satu metode berikut untuk membuat penyematan:

Langkah selanjutnya

Kontributor

Penulis: Ajith Urimajalu | SAP Application Engineer Team Lead

Kontributor lainnya: Vikash Kumar | Technical Writer