本文說明如何使用 ABAP 專用的 Vertex AI SDK,透過 Vertex AI 特徵儲存庫執行各種工作,例如同步處理線上儲存庫、提供線上儲存庫中的特徵,以及使用實體或嵌入式搜尋線上特徵儲存庫。
Vertex AI 特徵儲存庫是雲端原生特徵儲存庫服務,您可以在 BigQuery 資料表或檢視表中管理特徵資料,簡化 ML 特徵管理和線上服務程序。
在 Vertex AI 特徵儲存庫設定的一般工作流程中,您首先要在 BigQuery 中準備 SAP 資料來源,然後建立特徵群組和特徵來註冊資料來源,並設定線上儲存庫和特徵檢視資源。接著,您可以透過特徵檢視畫面線上提供最新的特徵值,或在線上特徵儲存庫中執行相似搜尋。如要瞭解如何設定 Vertex AI 特徵儲存庫,請參閱「Vertex AI 特徵儲存庫」。
Vertex AI 特徵儲存庫準備好提供線上服務後,您就可以使用 ABAP 專用的 Vertex AI SDK 執行以下操作:
- 如要在模型預測期間提供即時服務的最新且準確的特徵值,請將線上商店與 BigQuery 中的特徵資料來源同步。
- 如要為即時應用程式提供線上商店的特徵值,請從線上商店提供特徵。
- 如要從線上商店擷取語意相似或相關的實體清單,請使用實體或嵌入內容進行搜尋。
事前準備
在使用 Vertex AI SDK for ABAP 搭配 Vertex AI 特徵儲存庫之前,請確認您或管理員已完成下列先決條件:
- 在 Google Cloud 專案中啟用 Vertex AI API。
- 在 SAP 環境中安裝 ABAP 適用的 Vertex AI SDK。
- 設定驗證,以便存取 Vertex AI API。
- 設定線上功能供應。如要瞭解如何建立及使用線上儲存庫,以便在端對端工作流程中透過 Vertex AI 特徵儲存庫在 BigQuery 中代管及提供資料,請參閱 Vertex AI 特徵儲存庫的 Jupyter 筆記本教學課程。
為 Vertex AI 特徵儲存庫例項化 ABAP 類別
如要在 ABAP 應用程式中使用 Vertex AI 特徵儲存庫,請將 /GOOG/CL_FEATURE_STORE
類別例項化。
DATA(lo_client) = NEW /goog/cl_feature_store(
iv_key_name = 'CLIENT_KEY'
iv_location = 'LOCATION_ID'
iv_feature_store_id = 'FEATURE_ONLINE_STORE_NAME' ).
更改下列內容:
CLIENT_KEY
:用於驗證的用戶端金鑰。LOCATION_ID
:線上商店所在的區域,例如us-central1
。FEATURE_ONLINE_STORE_NAME
:包含功能檢視畫面的線上商店名稱。
同步處理網路商店
為確保線上商店擁有最新且準確的特徵值,以便在模型預測期間即時顯示,您必須將線上商店中的特徵檢視資源與 BigQuery 中的特徵資料來源同步。
事前準備
由於您是透過區域端點存取 Vertex AI 特徵儲存庫,因此需要建立通訊系統、通訊安排,並據此設定用戶端金鑰。
存取已安裝 ABAP 適用於 Google Cloud 的 SDK 的 BTP ABAP 系統 SAP Fiori 啟動工具。
依序前往「所有聊天室」>「管理」>「通訊管理」。
建立溝通機制:
- 開啟「通訊系統」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication System」對話方塊中,輸入下列欄位的值:
- 系統 ID:輸入系統 ID。
- 系統名稱:輸入系統名稱。
按一下 [建立]。
在「主機名稱」欄位中輸入區域端點的網址。舉例來說,如果 Vertex AI 特徵儲存庫位於
us-east1
,則目標主機的端點為us-east1-aiplatform.googleapis.com
。如要瞭解地區端點,請參閱「服務端點」。在「Port」欄位中輸入
443
。在「可外撥電話的使用者」分頁中,按一下「新增」。
在「Authentication method」欄位中,選取「None」。
按一下 [儲存]。
建立溝通安排:
- 開啟「通訊安排」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication Arrangement」對話方塊中,輸入下列欄位的值:
- 情境:選取「使用 Workload Identity Federation 進行驗證」 (
/GOOG/COM_SDK_SRV
)。 - 安排名稱:輸入通訊安排的名稱。
- 情境:選取「使用 Workload Identity Federation 進行驗證」 (
按一下 [建立]。
針對顯示的通訊安排項目,在「通訊系統」欄位中選取您在上一個步驟中建立的通訊系統。
按一下 [儲存]。
建立用戶端金鑰和通訊對應:
- 前往包含 SAP Fiori 應用程式的聊天室,設定 SDK。
- 開啟「Google SDK:主要設定」應用程式。
- 按一下 [建立]。
- 在隨即顯示的「Create」對話方塊中,輸入用戶端金鑰名稱。
- 按一下「繼續」。
請在下列欄位中輸入值:
針對服務名稱為「authentication」的預設項目的通訊對應,請提供您為 WIF 式驗證設定的通訊安排
在通訊對應圖中新增一個項目,並將服務設為
aiplatform:v1
,然後提供剛建立的通訊安排。按一下「建立」,系統會顯示對話方塊,確認您同意依照標準 Google Cloud 條款使用 ABAP SDK for Google Cloud。
如要驗證驗證設定,請按一下「檢查連線」。如果項目顯示綠色勾號,表示設定成功。
如果發生任何錯誤,請參閱疑難排解指南,瞭解如何解決常見錯誤。
同步處理 Vertex AI 特徵儲存庫
如要在功能檢視畫面中啟動資料同步作業,請使用 SYNC_FEATURE_DATA_TO_FS
方法。
DATA(lv_feature_view_sync_id) = lo_client->sync_feature_data_to_fs(
iv_feature_view_id = 'FEATURE_VIEW_NAME'
)->get_feature_sync_id( ).
將 FEATURE_VIEW_NAME
替換為您要開始同步處理資料的功能檢視畫面名稱。
這個方法會傳回功能檢視同步 ID,可用於檢查同步作業的狀態。
取得 Vertex AI 特徵儲存庫同步作業的狀態
如要取得 Vertex AI 特徵儲存庫同步作業的狀態,您可以使用 GET_FEATURE_SYNC_STATUS
方法。
DATA(ls_status) = lo_client->get_feature_sync_status(
iv_feature_view_id = 'FEATURE_VIEW_NAME'
iv_feature_sync_id = 'FEATURE_VIEW_SYNC_ID'
)->get_feature_sync_status( ).
更改下列內容:
FEATURE_VIEW_NAME
:您要檢查同步處理狀態的功能檢視畫面名稱。FEATURE_VIEW_SYNC_ID
:從 Sync Vertex AI 特徵儲存庫收到的特徵檢視同步 ID。此方法會傳回下列其中一個狀態,以及錯誤訊息 (如有):
C: Complete
、R: Running
或F: Failed
從網路商店提供特徵
您可以從線上商店提供特徵值,以便用於即時應用程式,例如產品推薦。視你為線上商店設定的線上放送類型而定,你可以透過下列任一方式放送特徵值:
- 使用 Bigtable 線上服務擷取特徵值。
- 使用公開端點搭配最佳化線上放送功能擷取功能值。
- 使用 Private Service Connect 端點搭配最佳化線上放送功能,擷取地圖項目值。
如要進一步瞭解提供功能值,請參閱「從網路商店提供功能」。
事前準備
您必須先從網路商店詳細資料中擷取公開端點網域名稱,才能開始從網路商店提供特徵值。接著,您需要使用 Google SDK:主要設定 SAP Fiori 應用程式,建立通訊系統和通訊安排,並在用戶端金鑰設定中進行設定。
如要擷取公開端點,請在您選擇的本機套件中建立
ZCL_GET_FEATURE_STORE_PUB_EP
。您必須傳遞有效的用戶端金鑰,以及 Vertex AI 特徵儲存庫的儲存庫 ID 和位置。CLASS zcl_get_feature_store_pub_ep DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES if_oo_adt_classrun. ENDCLASS. CLASS zcl_get_feature_store_pub_ep IMPLEMENTATION. METHOD if_oo_adt_classrun~main. DATA lv_ckey TYPE /goog/keyname. DATA lv_location_id TYPE string. DATA lv_fsid TYPE string. DATA lv_project_id TYPE string. DATA lv_msg TYPE string. "TODO:Developer - Pass relevant values lv_ckey = 'CLIENT_KEY'. lv_fsid = 'FEATURE_ONLINE_STORE_NAME'. lv_location_id = 'LOCATION_ID'. TRY. DATA(lo_aip) = NEW /goog/cl_aiplatform_v1( iv_key_name = lv_ckey ). lv_project_id = lo_aip->gv_project_id. " Call API method: aiplatform.projects.locations.featureOnlineStores.get lo_aip->get_feature_online_stores( EXPORTING iv_p_projects_id = lv_project_id iv_p_locations_id = lv_location_id iv_p_feature_online_stores_id = lv_fsid IMPORTING es_output = DATA(ls_output) ev_ret_code = DATA(lv_ret_code) ev_err_text = DATA(lv_err_text) ). IF lo_aip->is_success( lv_ret_code ) = abap_true. out->write( | Public endpoint is| ). out->write( ls_output-dedicated_serving_endpoint-public_endpoint_domain_name ). ENDIF. CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). lv_msg = lo_cx_sdk->get_text( ). out->write( |Exception occurred, reason: { lv_msg }| ). ENDTRY. ENDMETHOD. ENDCLASS.
啟用並執行
ZCL_GET_FEATURE_STORE_PUB_EP
類別。輸出內容是網路商店的公開端點,採用以下格式:
xxxxxxxxxx.LOCATION_ID-PROJECT_ID.featurestore.vertexai.goog
輸出內容包含下列值:
LOCATION_ID
:網路商店所在的區域。PROJECT_ID
:Google Cloud 專案所在的專案 ID (你的網路商店所在專案)。
存取已安裝 ABAP 適用於 Google Cloud 的 SDK 的 BTP ABAP 系統 SAP Fiori 啟動工具。
依序前往「所有聊天室」>「管理」>「通訊管理」。
建立溝通機制:
- 開啟「通訊系統」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication System」對話方塊中,輸入下列欄位的值:
- 系統 ID:輸入系統 ID。
- 系統名稱:輸入系統名稱。
按一下 [建立]。
在「主機名稱」欄位中,輸入您在先前步驟中執行
ZCL_GET_FEATURE_STORE_PUB_EP
類別後擷取的公開端點。在「Port」欄位中輸入
443
。前往「Outbound Communication」使用者分頁,然後按一下「Add」。
在「Authentiation method」欄位中,選取「None」。
按一下 [儲存]。
建立溝通安排:
- 開啟「通訊安排」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication Arrangement」對話方塊中,輸入下列欄位的值:
- 情境:選取「使用 Workload Identity Federation 進行驗證 (
/GOOG/COM_SDK_SRV
)」。 - 安排名稱:輸入通訊安排的名稱。
- 情境:選取「使用 Workload Identity Federation 進行驗證 (
按一下 [建立]。
針對顯示的通訊安排項目,在「通訊系統」欄位中選取您在上一個步驟中建立的通訊系統。
按一下 [儲存]。
建立用戶端金鑰和通訊對應:
- 前往包含 SAP Fiori 應用程式的聊天室,設定 SDK。
- 開啟「Google SDK:主要設定」應用程式。
- 按一下 [建立]。
- 在隨即顯示的「Create」對話方塊中,輸入用戶端金鑰名稱。
- 按一下「繼續」。
輸入下列詳細資訊:
針對服務名稱為「authentication」的預設項目的通訊對應,請提供您為 WIF 式驗證設定的通訊安排
在通訊對應圖中新增一個項目,並將服務設為
aiplatform:v1
,然後提供剛建立的通訊安排。按一下「建立」,系統會顯示對話方塊,確認您同意依照標準 Google Cloud 條款使用 ABAP SDK for Google Cloud。
如要驗證驗證設定,請按一下「檢查連線」。如果項目顯示綠色勾號,表示設定成功。
如果發生任何錯誤,請參閱疑難排解指南,瞭解如何解決常見錯誤。
確認您的通訊對應表包含下列三個項目:
服務名稱 通訊情境 通訊安排 authentication
/GOOG/SDK_COM_WIF
您為 XSUAA
服務建立的通訊安排。aiplatform:v1
/GOOG/COM_SDK_SRV
您使用包含 AI PLATFORM
區域端點的通訊系統所設定的通訊安排。apiinvoker:v1
/GOOG/COM_SDK_SRV
在先前步驟中,您使用 Vertex AI 特徵儲存庫服務的公開端點,透過通訊系統設定的通訊安排。
擷取特徵值
在 Vertex AI 特徵儲存庫中,實體是指您要追蹤特徵的項目,例如客戶、產品或任何其他資料點。每個實體都會與一組特徵和相應的值相關聯。
如要透過指定單一實體 ID 擷取特徵值,請使用 SERVE_FEATURE_VALUES
方法。
DATA(lt_features) = lo_client->serve_feature_values(
iv_feature_view_id = 'FEATURE_VIEW_NAME'
it_entity_id = 'ENTITY_ID'
)->get_features( ).
更改下列內容:
FEATURE_VIEW_NAME
:您要提供地圖項目值的功能檢視畫面名稱。ENTITY_ID
:您要用於提供最新特徵值的特徵記錄中 ID 欄的值。或者,您也可以提供零件陣列來建構實體 ID。請確認 ID 欄的順序與特徵檢視畫面中定義的順序相同。
搜尋近似最鄰近的項目
如果是為了最佳化線上服務而建立的網路商店,您可以執行向量相似度搜尋,擷取語意相似或相關實體的清單,也就是大致相似的鄰近項目。您可以根據實體 ID 或嵌入值,搜尋大致最近鄰。
事前準備
您必須先從網路商店詳細資料中擷取公開端點網域名稱,才能開始從網路商店提供特徵值。接著,您需要使用 Google SDK:主要設定 SAP Fiori 應用程式,建立通訊系統和通訊安排,並在用戶端金鑰設定中進行設定。
如要擷取公開端點,請在您選擇的本機套件中建立
ZCL_GET_FEATURE_STORE_PUB_EP
。您必須傳遞有效的用戶端金鑰,以及 Vertex AI 特徵儲存庫的儲存庫 ID 和位置。CLASS zcl_get_feature_store_pub_ep DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES if_oo_adt_classrun. ENDCLASS. CLASS zcl_get_feature_store_pub_ep IMPLEMENTATION. METHOD if_oo_adt_classrun~main. DATA lv_ckey TYPE /goog/keyname. DATA lv_location_id TYPE string. DATA lv_fsid TYPE string. DATA lv_project_id TYPE string. DATA lv_msg TYPE string. "TODO:Developer - Pass relevant values lv_ckey = 'CLIENT_KEY'. lv_fsid = 'FEATURE_ONLINE_STORE_NAME'. lv_location_id = 'LOCATION_ID'. TRY. DATA(lo_aip) = NEW /goog/cl_aiplatform_v1( iv_key_name = lv_ckey ). lv_project_id = lo_aip->gv_project_id. " Call API method: aiplatform.projects.locations.featureOnlineStores.get lo_aip->get_feature_online_stores( EXPORTING iv_p_projects_id = lv_project_id iv_p_locations_id = lv_location_id iv_p_feature_online_stores_id = lv_fsid IMPORTING es_output = DATA(ls_output) ev_ret_code = DATA(lv_ret_code) ev_err_text = DATA(lv_err_text) ). IF lo_aip->is_success( lv_ret_code ) = abap_true. out->write( | Public endpoint is| ). out->write( ls_output-dedicated_serving_endpoint-public_endpoint_domain_name ). ENDIF. CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk). lv_msg = lo_cx_sdk->get_text( ). out->write( |Exception occurred, reason: { lv_msg }| ). ENDTRY. ENDMETHOD. ENDCLASS.
啟用並執行
ZCL_GET_FEATURE_STORE_PUB_EP
類別。輸出內容是網路商店的公開端點,採用以下格式:
xxxxxxxxxx.LOCATION_ID-PROJECT_ID.featurestore.vertexai.goog
輸出內容包含下列值:
LOCATION_ID
:網路商店所在的區域。PROJECT_ID
:Google Cloud 專案所在專案 ID,也就是你的網路商店所在專案。
存取已安裝 ABAP 適用於 Google Cloud 的 SDK 的 BTP ABAP 系統 SAP Fiori 啟動工具。
依序前往「所有聊天室」>「管理」>「通訊管理」。
建立溝通機制:
- 開啟「通訊系統」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication System」對話方塊中,輸入下列欄位的值:
- 系統 ID:輸入系統 ID。
- 系統名稱:輸入系統名稱。
按一下 [建立]。
在「主機名稱」欄位中,輸入您在先前步驟中執行
ZCL_GET_FEATURE_STORE_PUB_EP
類別後擷取的公開端點。在「Port」欄位中輸入
443
。前往「Outbound Communication」使用者分頁,然後按一下「Add」。
在「Authentiation method」欄位中,選取「None」。
按一下 [儲存]。
建立溝通安排:
- 開啟「通訊安排」應用程式。
- 按一下 [New]。
在隨即顯示的「New Communication Arrangement」對話方塊中,輸入下列欄位的值:
- 情境:選取「使用 Workload Identity Federation 進行驗證 (
/GOOG/COM_SDK_SRV
)」。 - 安排名稱:輸入通訊安排的名稱。
- 情境:選取「使用 Workload Identity Federation 進行驗證 (
按一下 [建立]。
針對顯示的通訊安排項目,在「通訊系統」欄位中選取您在上一個步驟中建立的通訊系統。
按一下 [儲存]。
建立用戶端金鑰和通訊對應:
- 前往包含 SAP Fiori 應用程式的聊天室,設定 SDK。
- 開啟「Google SDK:主要設定」應用程式。
- 按一下 [建立]。
- 在隨即顯示的「Create」對話方塊中,輸入用戶端金鑰名稱。
- 按一下「繼續」。
輸入下列詳細資訊:
針對服務名稱為「authentication」的預設項目的通訊對應,請提供您為 WIF 式驗證設定的通訊安排
在通訊對應圖中新增一個項目,並將服務設為
aiplatform:v1
,然後提供剛建立的通訊安排。按一下「建立」,系統會顯示對話方塊,確認您同意依照標準 Google Cloud 條款使用 ABAP SDK for Google Cloud。
如要驗證驗證設定,請按一下「檢查連線」。如果項目顯示綠色勾號,表示設定成功。
如果發生任何錯誤,請參閱疑難排解指南,瞭解如何解決常見錯誤。
確認您的通訊對應表包含下列三個項目:
服務名稱 通訊情境 通訊安排 authentication
/GOOG/SDK_COM_WIF
您為 XSUAA
服務建立的通訊安排。aiplatform:v1
/GOOG/COM_SDK_SRV
您使用包含 AI PLATFORM
區域端點的通訊系統所設定的通訊安排。apiinvoker:v1
/GOOG/COM_SDK_SRV
在先前步驟中,您使用 Vertex AI 特徵儲存庫服務的公開端點,透過通訊系統設定的通訊安排。
擷取嵌入項目的最相似項目
您可以指定嵌入,搜尋語意相關的實體。
如要搜尋嵌入項目的最近鄰,請使用 SEARCH_USING_EMBEDDINGS
方法傳送要求。
DATA(lt_embeddings) = VALUE /goog/cl_aiplatform_v1=>ty_t_/goog/num_float( EMBEDDING_DATA ).
DATA(lt_neighbours) = lo_client->search_using_embeddings(
EXPORTING
iv_feature_view_id = 'FEATURE_VIEW_NAME'
it_embeddings = lt_embeddings
is_search_params = VALUE #( neighbor_count = 'NEIGHBOR_COUNT'
return_full_entity = 'RETURN_FULL_ENTITY' )
)->get_neighbours( ).
更改下列內容:
EMBEDDING_DATA
:您要擷取近似最鄰近項目比對結果的嵌入項目。嵌入內容會以浮點值陣列表示。FEATURE_VIEW_NAME
:您要搜尋近似最近鄰比對結果的要素檢視畫面名稱。NEIGHBOR_COUNT
:您要擷取的近似鄰點數量。RETURN_FULL_ENTITY
:選用。指定要加入或排除回應中實體的功能。如要在回應中加入地圖項目和實體,請輸入ABAP_TRUE
。預設值為ABAP_FALSE
。
擷取實體的最相近項目
您可以指定實體 ID,搜尋語意相關的實體。
如要搜尋實體 ID 的最近鄰近項目,請使用 SEARCH_USING_ENTITY
方法傳送要求。
DATA(lt_neighbours) = lo_client->search_using_entity(
EXPORTING
iv_feature_view_id = 'FEATURE_VIEW_NAME'
iv_entity_id = 'ENTITY_ID'
is_search_params = VALUE #( neighbor_count = 'NEIGHBOR_COUNT'
return_full_entity = 'RETURN_FULL_ENTITY' )
)->get_neighbours( ).
更改下列內容:
FEATURE_VIEW_NAME
:您要搜尋近似最近鄰比對結果的要素檢視畫面名稱。ENTITY_ID:
:您要擷取近似近鄰相符項目的實體 ID。NEIGHBOR_COUNT
:您要擷取的近似鄰點數量。RETURN_FULL_ENTITY
:選用。指定要加入或排除回應中實體的功能。如要在回應中加入地圖項目和實體,請輸入ABAP_TRUE
。預設值為ABAP_FALSE
。
後續步驟
- 瞭解如何使用 ABAP SDK for Google Cloud 的 SAP BTP 版本開發應用程式。
- 歡迎在 Cloud 論壇上提問,並與社群討論 ABAP 專用的 Vertex AI SDK。