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:
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 mem-build 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 menautkan 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 dengan 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 dapat berupa kombinasi 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 menghasilkan 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:
- Mengembangkan aplikasi Cloud Run. Untuk mengetahui informasi selengkapnya, lihat Infrastruktur untuk aplikasi AI generatif berkemampuan RAG menggunakan Vertex AI.
- Untuk tabel objek yang mewakili bucket Cloud Storage, gunakan fungsi
ML.GENERATE_EMBEDDING
. Untuk informasi selengkapnya, lihat Membuat penyematan teks menggunakan fungsiML.GENERATE_EMBEDDING
.
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.
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: Ajith Urimajalu | SAP Application Engineer Team Lead
Kontributor lainnya: Vikash Kumar | Technical Writer