Vertex AI Feature Store を使用する

このドキュメントでは、Vertex AI SDK for ABAP を使用して、オンライン ストアの同期、オンライン ストアからの特徴のサービング、エンティティまたはエンベディングを使用したオンライン特徴ストアの検索などのタスクを実行するために Vertex AI Feature Store を使用する方法について説明します。

Vertex AI Feature Store は、クラウドネイティブのマネージド特徴ストアサービスです。このサービスでは、特徴データを BigQuery のテーブルまたはビューで管理することで、ML 特徴管理とオンライン サービング プロセスを効率化します。

一般的な Vertex AI Feature Store 設定ワークフローでは、まず BigQuery で SAP データソースを準備し、特徴グループと特徴を作成してデータソースを登録し、オンライン ストアと特徴ビューのリソースを設定します。その後、特徴ビューから最新の特徴値をオンラインでサービングすることや、オンライン特徴ストアで類似性検索を実行することができます。Vertex AI Feature Store の設定方法については、Vertex AI Feature Store をご覧ください。

Vertex AI Feature Store がオンライン サービングできる状態になったら、Vertex AI SDK for ABAP を使用して次のことができます。

  • モデル予測中のリアルタイム サービングのために最新かつ正確な特徴値を提供するには、オンライン ストアを BigQuery の特徴データソースと同期します。
  • リアルタイム アプリケーションにオンライン ストアから特徴値を提供するには、オンライン ストアから特徴をサービングします。
  • オンライン ストアから一連の意味的に類似したエンティティまたは意味的に関連するエンティティを取得するには、エンティティまたはエンベディングを使用して検索します。

始める前に

Vertex AI Feature Store で Vertex AI SDK for ABAP を使用する前に、自身または管理者が次の前提条件を満たしていることを確認してください。

Vertex AI Feature Store の ABAP クラスをインスタンス化する

ABAP アプリケーションで Vertex AI Feature Store を使用するには、クラス /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 Feature Store にはリージョン エンドポイントを介してアクセスするので、Vertex AI API への接続を確立するために RFC 宛先を作成する必要があります。次に、サービス マッピング テーブルで RFC 宛先を指定します。

  1. Vertex AI Feature Store が配置されているリージョン エンドポイントを使用して、Vertex AI API の RFC 宛先を作成します。たとえば Vertex AI Feature Store が us-east1 に配置されている場合、ターゲット ホストのエンドポイントは us-east1-aiplatform.googleapis.com になります。リージョン エンドポイントの詳細については、サービス エンドポイントをご覧ください。RFC 宛先を作成するには、次の操作を行います。

    1. SAP GUI で、トランザクション コード SM59 を実行します。

    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が G - HTTP connection to external server に設定されていることを確認します。

    3. [Technical Settings] タブに移動して、次の詳細情報を入力します。

      • Target Host: Vertex AI Feature Store が存在するリージョン エンドポイントを指定します。

      • Service No.: 「443」と入力します。これは安全な通信に使用されるポート番号です。

    4. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    5. 変更を保存します。

  2. Vertex AI API のサービス マッピング テーブルを構成します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。

    3. [New Entries] をクリックします。

    4. Vertex AI API の RFC 宛先を指定します。

    名前 サービス名 RFC 宛先
    認証用のクライアント キー。 aiplatform:v1 RFC 宛先の名前。
    1. 新しいエントリを保存します。

SAP BTP エディション

Vertex AI Feature Store にはリージョン エンドポイントを介してアクセスするため、通信システムと通信構成を作成し、それに応じてクライアント キーを構成する必要があります。

  1. ABAP SDK for Google Cloud がインストールされている BTP ABAP システムの SAP Fiori ランチャーにアクセスします。

  2. [All spaces] > [Administration] > [Communication Management] に移動します。

  3. コミュニケーション システムを作成します。

    1. Communication Systems アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication System] ダイアログで、次のフィールドに値を入力します。
    • System ID: システム ID を入力します。
    • System name: システム名を入力します。
    1. [作成] をクリックします。
    2. [Host name] フィールドに、リージョン エンドポイントの URL を入力します。たとえば、Vertex AI Feature Store が us-east1 に配置されている場合、ターゲット ホストのエンドポイントは us-east1-aiplatform.googleapis.com です。リージョン エンドポイントの詳細については、サービス エンドポイントをご覧ください。
    3. [ポート] フィールドに、「443」と入力します。
    4. [Users for Outbound Communication] タブで [Add] をクリックします。
    5. [Authentication method] フィールドで [None] を選択します。
    6. [保存] をクリックします。
  4. 通信設定を作成します。

    1. Communication Arrangement アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication Arrangement] ダイアログで、次のフィールドに値を入力します。
    • シナリオ: [Authentication using Workload Identity Federation](/GOOG/COM_SDK_SRV)を選択します。
    • Arrangement name: 通信設定の名前を入力します。
    1. [作成] をクリックします。
    2. 表示された通信設定エントリの [Communication System] フィールドで、前の手順で作成した通信システムを選択します。
    3. [保存] をクリックします。
  5. クライアント鍵と通信マップを作成します。

    1. SDK 構成用の SAP Fiori アプリを含むスペースに移動します。
    2. Google SDK: Main Configuration アプリを開きます。
    3. [Create] をクリックします。
    4. 表示された [Create] ダイアログで、クライアント鍵の名前を入力します。
    5. [続行] をクリックします。
    6. 次のフィールドに値を入力します。
    • Service account: API へのアクセス権が付与されているサービス アカウントを入力します。 Google Cloud
    • Project ID: API を有効にした Google Cloud プロジェクトのプロジェクト ID を入力します。 Google Cloud プロジェクト ID については、プロジェクトの識別をご覧ください。
    • Project number: API を有効にした Google Cloud プロジェクトのプロジェクト番号を入力します。 Google Cloud プロジェクト番号については、プロジェクトの識別をご覧ください。
    • Authentication type: [W (Workload Identity Federation)] を選択します。
    • サービス名のデフォルト エントリが「authentication」の通信マップでは、WIF ベースの認証用に設定した通信設定を指定します。
    • 通信マップにエントリを 1 つ追加し、サービスとして aiplatform:v1 を選択し、作成した通信設定を指定します。
    • [作成] をクリックします。標準の利用規約に基づいて ABAP SDK for Google Cloud の使用に同意することを確認するダイアログが表示されます。 Google Cloud
    • 認証構成を検証するには、[Check connection] をクリックします。エントリの緑色のチェックは、構成が成功したことを示します。

    エラーが発生した場合は、トラブルシューティング ガイドで一般的なエラーの解決方法を確認してください。

Vertex AI Feature Store を同期する

特徴ビューでデータ同期を開始するには、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 を返します。この ID を使用して、同期のステータスを確認できます。

Vertex AI Feature Store の同期ステータスを取得する

Vertex AI Feature Store の同期ステータスを取得するには、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: Vertex AI Feature Store 同期から受信した特徴ビュー同期 ID。

    このメソッドは、C: CompleteR: RunningF: Failed のいずれかのステータスと、エラー メッセージ(存在する場合)を返します。

SAP バックグラウンド ジョブを使用して Vertex AI Feature Store を同期する

オンプレミスまたは任意のクラウド エディション

SAP バックグラウンド ジョブを使用して特徴ビューでデータ同期を開始するには、SYNC_FEATURE_DATA_TO_FS_BGJOB メソッドを使用します。

このメソッドにより SAP システムに作成されるバックグラウンド ジョブは、Feature Store の同期を開始し、30 秒ごとに Feature Store 同期のステータスを確認します。Feature Store 同期のステータスが Completed(完了)または Failed(失敗)の場合、バックグラウンド ジョブは完了時に対応するメッセージを出力します。Feature Store の同期が実行中の場合、バックグラウンド ジョブは指定された TIMEOUT 値まで実行されます。タイムアウト後、バックグラウンド ジョブは完了しますが、Feature Store の同期は引き続き実行されます。

DATA(ls_bgjob_details) = lo_client->sync_feature_data_to_fs_bgjob(
                                      iv_feature_view_id = 'FEATURE_VIEW_NAME'
                                      iv_timeout         = TIMEOUT
                                 )->get_background_job_details( ).

次のように置き換えます。

  • FEATURE_VIEW_NAME: データ同期を手動で開始する特徴ビューの名前。
  • TIMEOUT: バックグラウンド ジョブがタイムアウトするまでの時間(秒)。これは Vertex AI Feature Store の同期には影響しません。

このメソッドは、バックグラウンド ジョブの名前と対応する ID を返します。このジョブは、Feature Store 同期のステータスを確認するため SAP 内からモニタリングされます。

SAP BTP エディション

このセクションは、ABAP SDK for Google Cloud の SAP BTP エディションには適用されないため、スキップできます。

オンライン ストアから特徴をサービングする

商品のレコメンデーションなどのリアルタイム アプリケーションでは、オンライン ストアから特徴値をサービングできます。オンライン ストアに対して構成したオンライン サービングのタイプに応じて、次のいずれかの方法で特徴値をサービングできます。

  • Bigtable オンライン サービングを使用して特徴値を取得する。
  • パブリック エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得する。
  • Private Service Connect エンドポイントで最適化されたオンライン サービングを使用して特徴値を取得する。

特徴値のサービングの詳細については、オンライン ストアから特徴をサービングするをご覧ください。

始める前に

オンプレミスまたは任意のクラウド エディション

オンライン ストアから特徴値のサービングを開始する前に、オンライン ストアの詳細からパブリック エンドポイント ドメイン名を取得し、エンドポイントの RFC 宛先を作成して、サービス マッピング テーブルでその RFC 宛先を指定する必要があります。

  1. オンライン ストアのパブリック エンドポイント ドメイン名を取得する

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
    3. [Get Feature Store Details] を選択します。
    4. 次のパラメータを入力します。
    • Google Cloud Key Name: Google Cloudに対する認証用のクライアント キー。
    • Location: オンライン ストアが配置されているリージョン。
    • Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
    1. [Execute] をクリックして詳細情報を表示します。[Host] ラベルのパブリック エンドポイント ドメイン名をメモします。
  2. オンライン ストアのリージョン エンドポイント、パブリック エンドポイント ドメイン名、または Private Service Connect エンドポイントの RFC 宛先を作成します。RFC 宛先を作成するには、次の操作を行います。

    1. SAP GUI で、トランザクション コード SM59 を実行します。
    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が G - HTTP connection to external server に設定されていることを確認します。
    3. [Technical Settings] タブに移動して、次の詳細情報を入力します。
    • Target Host: Vertex AI Feature Store が配置されているパブリック エンドポイント ドメイン名を指定します。

    • Service No.: 「443」と入力します。これは安全な通信に使用されるポート番号です。

    1. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    2. 変更を保存します。

  3. Vertex AI API のサービス マッピング テーブルを構成します。

  4. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

    または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

  5. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。

  6. [New Entries] をクリックします。

  7. Vertex AI API の RFC 宛先を指定します。

    名前 サービス名 RFC 宛先
    認証用のクライアント キー。 apiinvoker:v1 RFC 宛先の名前。
  8. 新しいエントリを保存します。

SAP BTP エディション

オンライン ストアから特徴値のサービングを開始する前に、オンライン ストアの詳細からパブリック エンドポイント ドメイン名を取得する必要があります。次に、通信システムと通信設定を作成し、Google SDK: Main Configuration SAP Fiori アプリを使用してクライアント キー構成で構成する必要があります。

  1. 公開エンドポイントを取得するには、任意のローカル パッケージに ZCL_GET_FEATURE_STORE_PUB_EP を作成します。有効なクライアント キー、Vertex AI Feature Store のストア 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.
    
  2. ZCL_GET_FEATURE_STORE_PUB_EP クラスを有効にして実行します。

    出力(オンライン ストアの公開エンドポイント)の形式は次のとおりです。

    xxxxxxxxxx.LOCATION_ID-PROJECT_ID.featurestore.vertexai.goog
    

    この出力には次の値が含まれます。

    • LOCATION_ID: オンライン ストアが配置されているリージョン。
    • PROJECT_ID: オンライン ショップが配置されている Google Cloud プロジェクトのプロジェクト ID。
  3. ABAP SDK for Google Cloud がインストールされている BTP ABAP システムの SAP Fiori ランチャーにアクセスします。

  4. [All spaces] > [Administration] > [Communication Management] に移動します。

  5. コミュニケーション システムを作成します。

    1. Communication Systems アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication System] ダイアログで、次のフィールドに値を入力します。
    • System ID: システム ID を入力します。
    • System name: システム名を入力します。
    1. [作成] をクリックします。
    2. [Host name] フィールドに、前の手順で ZCL_GET_FEATURE_STORE_PUB_EP クラスを実行して取得した公開エンドポイントを入力します。
    3. [ポート] フィールドに、「443」と入力します。
    4. [Users for Outbound Communication] タブに移動し、[Add] をクリックします。
    5. [Authentiation method] フィールドで [None] を選択します。
    6. [保存] をクリックします。
  6. 通信設定を作成します。

    1. Communication Arrangements アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication Arrangement] ダイアログで、次のフィールドに値を入力します。
    • シナリオ: [Authentication using Workload Identity Federation (/GOOG/COM_SDK_SRV)] を選択します。
    • Arrangement name: 通信設定の名前を入力します。
    1. [作成] をクリックします。
    2. 表示された通信設定エントリの [Communication System] フィールドで、前の手順で作成した通信システムを選択します。
    3. [保存] をクリックします。
  7. クライアント鍵と通信マップを作成します。

    1. SDK 構成用の SAP Fiori アプリを含むスペースに移動します。
    2. Google SDK: Main Configuration アプリを開きます。
    3. [Create] をクリックします。
    4. 表示された [Create] ダイアログで、クライアント鍵の名前を入力します。
    5. [続行] をクリックします。
    6. 次の詳細情報を入力します。
    • Service account: API へのアクセス権が付与されているサービス アカウントを入力します。 Google Cloud
    • Project ID: API を有効にした Google Cloud プロジェクトのプロジェクト ID を入力します。 Google Cloud プロジェクト ID については、プロジェクトの識別をご覧ください。
    • Project number: API を有効にした Google Cloud プロジェクトのプロジェクト番号を入力します。 Google Cloud プロジェクト番号については、プロジェクトの識別をご覧ください。
    • Authentication type: [W (Workload Identity Federation)] を選択します。
    1. サービス名のデフォルト エントリが「authentication」の通信マップでは、WIF ベースの認証用に設定した通信設定を指定します。
    2. 通信マップにエントリを 1 つ追加し、サービスとして aiplatform:v1 を選択し、作成した通信設定を指定します。
    3. [作成] をクリックします。標準の利用規約に基づいて ABAP SDK for Google Cloud の使用に同意することを確認するダイアログが表示されます。 Google Cloud
    4. 認証構成を検証するには、[Check connection] をクリックします。エントリの緑色のチェックは、構成が成功したことを示します。

    エラーが発生した場合は、トラブルシューティング ガイドで一般的なエラーの解決方法を確認してください。

  8. コミュニケーション マップに次の 3 つのエントリが含まれていることを確認します。

    サービス名 通信シナリオ 通信の設定
    authentication /GOOG/SDK_COM_WIF XSUAA サービス用に作成した通信設定。
    aiplatform:v1 /GOOG/COM_SDK_SRV AI PLATFORM のリージョン エンドポイントを含む通信システムを使用して設定した通信設定。
    apiinvoker:v1 /GOOG/COM_SDK_SRV 前の手順で Vertex AI Feature Store サービングのパブリック エンドポイントの通信システムを使用して設定した通信設定。

特徴値を取得する

Vertex AI Feature Store では、エンティティとは、特徴を追跡するアイテム(顧客、プロダクト、その他のデータポイントなど)を指します。各エンティティには、一連の特徴とそれに対応する値が関連付けられています。

1 つのエンティティ 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 またはエンベディングに基づいて近似最近傍を検索できます。

始める前に

オンプレミスまたは任意のクラウド

最適化されたオンライン サービング用のオンライン ストアを作成すると、Vertex AI Feature Store がオンライン ストア用のパブリック エンドポイント ドメイン名を生成します。オンライン ショップの特徴ビューから最近傍の検索を開始する前に、オンライン ストアの詳細からパブリック エンドポイント ドメイン名を取得して、エンドポイントの RFC 宛先を作成し、サービス マッピング テーブルにこの RFC 宛先を指定する必要があります。

  1. オンライン ストアのパブリック エンドポイント ドメイン名を取得する

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Utilities] > [Vertex AI SDK: Get RFC information for Feature Store and Vector Search] をクリックします。
    3. [Get Feature Store Details] を選択します。
    4. 次のパラメータを入力します。
    • Google Cloud Key Name: Google Cloudに対する認証用のクライアント キー。
    • Location: オンライン ストアが配置されているリージョン。
    • Feature Store ID: 特徴ビューを含むオンライン ストアの名前。
    1. [Execute] をクリックして詳細情報を表示します。[Host] ラベルのパブリック エンドポイント ドメイン名をメモします。
  2. オンライン ストアのパブリック エンドポイント ドメイン名の RFC 宛先を作成します。

    1. SAP GUI で、トランザクション コード SM59 を実行します。

    2. 新しい RFC 宛先を作成します。作成した RFC 宛先で [Connection Type] が G - HTTP connection to external server に設定されていることを確認します。

    3. [Technical Settings] タブに移動して、次の詳細情報を入力します。

      • Target Host: オンライン ストアのパブリック エンドポイント ドメイン名を指定します。

      • Service No.: 「443」と入力します。これは安全な通信に使用されるポート番号です。

    4. [ログオンとセキュリティ] タブに移動し、[SSL 証明書] フィールドで [デフォルトの SSL クライアント(標準)] のオプションが設定されていることを確認します。

    5. 変更を保存します。

  3. Vertex AI API のサービス マッピング テーブルを構成します。

    1. SAP GUI で、トランザクション コード /GOOG/SDK_IMG を実行します。

      または、トランザクション コード SPRO を実行して、[SAP Reference IMG] をクリックします。

    2. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
    3. [New Entries] をクリックします。
    4. Vertex AI API の RFC 宛先を指定します。
    名前 サービス名 RFC 宛先
    認証用のクライアント キー。 apiinvoker:v1 RFC 宛先の名前。
    1. 新しいエントリを保存します。

SAP BTP エディション

オンライン ストアから特徴値のサービングを開始する前に、オンライン ストアの詳細からパブリック エンドポイント ドメイン名を取得する必要があります。次に、通信システムと通信設定を作成し、Google SDK: Main Configuration SAP Fiori アプリを使用してクライアント キー構成で構成する必要があります。

  1. 公開エンドポイントを取得するには、任意のローカル パッケージに ZCL_GET_FEATURE_STORE_PUB_EP を作成します。有効なクライアント キー、Vertex AI Feature Store のストア 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.
    
  2. ZCL_GET_FEATURE_STORE_PUB_EP クラスを有効にして実行します。

    出力(オンライン ストアの公開エンドポイント)の形式は次のとおりです。

    xxxxxxxxxx.LOCATION_ID-PROJECT_ID.featurestore.vertexai.goog
    

    この出力には次の値が含まれます。

    • LOCATION_ID: オンライン ストアが配置されているリージョン。
    • PROJECT_ID: オンライン ショップが配置されている Google Cloud プロジェクトのプロジェクト ID。
  3. ABAP SDK for Google Cloud がインストールされている BTP ABAP システムの SAP Fiori ランチャーにアクセスします。

  4. [All spaces] > [Administration] > [Communication Management] に移動します。

  5. コミュニケーション システムを作成します。

    1. Communication Systems アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication System] ダイアログで、次のフィールドに値を入力します。
    • System ID: システム ID を入力します。
    • System name: システム名を入力します。
    1. [作成] をクリックします。
    2. [Host name] フィールドに、前の手順で ZCL_GET_FEATURE_STORE_PUB_EP クラスを実行して取得した公開エンドポイントを入力します。
    3. [ポート] フィールドに、「443」と入力します。
    4. [Users for Outbound Communication] タブに移動し、[Add] をクリックします。
    5. [Authentiation method] フィールドで [None] を選択します。
    6. [保存] をクリックします。
  6. 通信設定を作成します。

    1. Communication Arrangements アプリを開きます。
    2. [New] をクリックします。
    3. 表示された [New Communication Arrangement] ダイアログで、次のフィールドに値を入力します。
    • シナリオ: [Authentication using Workload Identity Federation (/GOOG/COM_SDK_SRV)] を選択します。
    • Arrangement name: 通信設定の名前を入力します。
    1. [作成] をクリックします。
    2. 表示された通信設定エントリの [Communication System] フィールドで、前の手順で作成した通信システムを選択します。
    3. [保存] をクリックします。
  7. クライアント鍵と通信マップを作成します。

    1. SDK 構成用の SAP Fiori アプリを含むスペースに移動します。
    2. Google SDK: Main Configuration アプリを開きます。
    3. [Create] をクリックします。
    4. 表示された [Create] ダイアログで、クライアント鍵の名前を入力します。
    5. [続行] をクリックします。
    6. 次の詳細情報を入力します。
    • Service account: API へのアクセス権が付与されているサービス アカウントを入力します。 Google Cloud
    • Project ID: API を有効にした Google Cloud プロジェクトのプロジェクト ID を入力します。 Google Cloud プロジェクト ID については、プロジェクトの識別をご覧ください。
    • Project number: API を有効にした Google Cloud プロジェクトのプロジェクト番号を入力します。 Google Cloud プロジェクト番号については、プロジェクトの識別をご覧ください。
    • Authentication type: [W (Workload Identity Federation)] を選択します。
    1. サービス名のデフォルト エントリが「authentication」の通信マップでは、WIF ベースの認証用に設定した通信設定を指定します。
    2. 通信マップにエントリを 1 つ追加し、サービスとして aiplatform:v1 を選択し、作成した通信設定を指定します。
    3. [作成] をクリックします。標準の利用規約に基づいて ABAP SDK for Google Cloud の使用に同意することを確認するダイアログが表示されます。 Google Cloud
    4. 認証構成を検証するには、[Check connection] をクリックします。エントリの緑色のチェックは、構成が成功したことを示します。

    エラーが発生した場合は、トラブルシューティング ガイドで一般的なエラーの解決方法を確認してください。

  8. コミュニケーション マップに次の 3 つのエントリが含まれていることを確認します。

    サービス名 通信シナリオ 通信の設定
    authentication /GOOG/SDK_COM_WIF XSUAA サービス用に作成した通信設定。
    aiplatform:v1 /GOOG/COM_SDK_SRV AI PLATFORM のリージョン エンドポイントを含む通信システムを使用して設定した通信設定。
    apiinvoker:v1 /GOOG/COM_SDK_SRV 前の手順で Vertex AI Feature Store サービング用のパブリック エンドポイントの通信システムを使用して設定した通信設定。

エンベディングの最近傍の一致を取得する

エンベディングを指定して、意味的に関連するエンティティを検索できます。

エンベディングの最近傍を検索するには、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 です。

次のステップ