メディア検索を使ってみる
最先端のメディア検索アプリを簡単に構築できます。メディア検索を使用すると、ユーザーは Google 品質の結果でコンテンツを見つけられるようになります。
メディア向け Vertex AI Search の一般的な情報については、メディア検索とレコメンデーションの概要をご覧ください。この入門チュートリアルでは、Movielens データセットを使用して、メディア コンテンツ カタログを Vertex AI Search にアップロードする方法を示します。MovieLens データセットには、映画(ドキュメント)のカタログが含まれています。
映画のデータをアップロードしたら、検索アプリを作成し、プレビュー ページでテストします。
メディア レコメンデーションのスタートガイド チュートリアルを完了していて、データストア(推奨名 quickstart-media-data-store)が残っている場合は、別のデータストアを作成する代わりに、そのデータストアを使用できます。この場合は、メディア検索用のアプリを作成するのステップからチュートリアルを開始する必要があります。
このチュートリアルの所要時間: 1 時間程度。
目標
- メディア ドキュメントをインポートしてメディア データストアを作成する方法について学習する。
- 検索アプリを作成、構成、テストする。
このチュートリアルに進む前に、始める前にの手順が完了していることを確認してください。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI Search (Discovery Engine), Cloud Storage, BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Discovery Engine Admin and BigQuery Admin.
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI Search (Discovery Engine), Cloud Storage, BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Discovery Engine Admin and BigQuery Admin.
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
データセットを準備する
注: メディア レコメンデーションを使ってみるのチュートリアルを完了していて、データストア(推奨名quickstart-media-data-store)が残っている場合は、メディア検索用のアプリを作成するに進みます。Cloud Shell を使用して Movielens のデータセットをインポートし、メディア用の Vertex AI Search 用にデータセットを再構築します。
Cloud Shell を開く
- Google Cloud コンソールを開きます。
- Google Cloud プロジェクトを選択します。
- ダッシュボード ページの [プロジェクト情報] カードのプロジェクト ID をメモします。以降の手順では、このプロジェクト ID が必要です。
コンソールの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。Google Cloud コンソールの下部の新しいフレーム内で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。 Cloud Shell を起動する他の方法については、Cloud Shell を起動するをご覧ください。
データセットのインポート
Movielens データセットは、公開の Cloud Storage バケットで利用できるため、簡単にインポートできます。
プロジェクト ID を使用して次のコマンドを実行し、コマンドラインのデフォルト プロジェクトを設定します。
gcloud config set project PROJECT_IDBigQuery データセットを作成します。
bq mk movielensmovies.csvを新しいmoviesBigQuery テーブルに読み込みます。bq load --skip_leading_rows=1 movielens.movies \ gs://cloud-samples-data/gen-app-builder/media-recommendations/movies.csv \ movieId:integer,title,genresratings.csvを新しいratingsBigQuery テーブルに読み込みます。bq load --skip_leading_rows=1 movielens.ratings \ gs://cloud-samples-data/gen-app-builder/media-recommendations/ratings.csv \ userId:integer,movieId:integer,rating:float,time:timestamp
BigQuery ビューを作成する
このステップでは、MovieLens のデータセットを、メディア データストアの想定される形式に再構成します。
このガイドでは、過去 90 日間の肯定的な評価(>= 4)からフェイクの view-item ユーザー イベントを作成します。
ムービーテーブルを
Documentスキーマに変換するビューを作成します。bq mk --project_id=PROJECT_ID \ --use_legacy_sql=false \ --view ' WITH t AS ( SELECT CAST(movieId AS string) AS id, SUBSTR(title, 0, 128) AS title, SPLIT(genres, "|") AS categories FROM `PROJECT_ID.movielens.movies`) SELECT id, "default_schema" as schemaId, null as parentDocumentId, TO_JSON_STRING(STRUCT(title as title, categories as categories, CONCAT("http://mytestdomain.movie/content/", id) as uri, "2023-01-01T00:00:00Z" as available_time, "2033-01-01T00:00:00Z" as expire_time, "movie" as media_type)) as jsonData FROM t;' \ movielens.movies_viewこれにより、Discovery Engine API で想定されるスキーマが新しいビューに追加されます。
Google Cloud コンソールで、[BigQuery] ページに移動します。
[エクスプローラ] ペインでプロジェクト名を開きます。[データセット] をクリックして、
movielensデータセットを選択し、[movies_view] をクリックしてこのビューのスキーマページを開きます。または、[エクスプローラ] ペインで [従来のエクスプローラ] タブを選択し、プロジェクト名を開き、
movielensデータセットを開いて、[movies_view] をクリックしてこのビューのスキーマページを開きます。
[テーブル エクスプローラ] タブに移動します。
[生成されたクエリ] ペインで、[クエリにコピー] ボタンをクリックします。クエリエディタが開きます。
[実行] をクリックすると、作成したビューで映画のデータが表示されます。
次の Cloud Shell コマンドを実行して、映画の評価から架空のユーザー イベントを作成します。
bq mk --project_id=PROJECT_ID \ --use_legacy_sql=false \ --view ' WITH t AS ( SELECT MIN(UNIX_SECONDS(time)) AS old_start, MAX(UNIX_SECONDS(time)) AS old_end, UNIX_SECONDS(TIMESTAMP_SUB( CURRENT_TIMESTAMP(), INTERVAL 90 DAY)) AS new_start, UNIX_SECONDS(CURRENT_TIMESTAMP()) AS new_end FROM `PROJECT_ID.movielens.ratings`) SELECT CAST(userId AS STRING) AS userPseudoId, "view-item" AS eventType, FORMAT_TIMESTAMP("%Y-%m-%dT%X%Ez", TIMESTAMP_SECONDS(CAST( (t.new_start + (UNIX_SECONDS(time) - t.old_start) * (t.new_end - t.new_start) / (t.old_end - t.old_start)) AS int64))) AS eventTime, [STRUCT(movieId AS id, null AS name)] AS documents, FROM `PROJECT_ID.movielens.ratings`, t WHERE rating >= 4;' \ movielens.user_events
Vertex AI Search を有効にする
Google Cloud コンソールで、[AI Applications] ページに移動します。
省略可: [モデルの入力と回答の選択的サンプリングを Google に許可する] をクリックします。
[続行して API を有効化] をクリックします。
メディア検索用のアプリを作成する
このセクションの手順では、メディア検索用のアプリの作成とデプロイについて説明します。
Google Cloud コンソールで、[AI Applications] ページに移動します。
[
アプリを作成 ] をクリックします。[アプリを作成する] ページの [メディア カタログ検索] で [作成] をクリックします。
[アプリ名] フィールドに、アプリの名前(
quickstart-media-searchなど)を入力します。エンジン名の下にアプリ ID が表示されます。[続行] をクリックします。
メディア レコメンデーションを使ってみるのチュートリアルを完了していて、データストア(推奨名
quickstart-media-data-store)が残っている場合は、それを選択して [作成] をクリックし、検索をプレビューするに進みます。MovieLens のデータセットを含むデータストアがない場合は、新しいデータストアを作成して選択します。
[データストア] ページで、[データストアを作成] をクリックします。
データストアの表示名(
quickstart-media-data-storeなど)を入力し、[作成] をクリックします。作成したデータストアを選択し、[作成] をクリックしてアプリを作成します。[データソースの選択] ページにリダイレクトされます。
データのインポート
次に、先ほどフォーマットした映画とユーザー イベントのデータをインポートします。
ドキュメントのインポート
[データソースの選択] ページに自動的にリダイレクトされない場合:
- [ドキュメント] タブを開きます。
- [データをインポート] をクリックします。
[データソースの選択] ページで、[BigQuery] を選択します。
作成した
moviesBigQuery ビューの名前を入力し、[インポート] をクリックします。PROJECT_ID.movielens.movies_viewすべてのドキュメントがインポートされるまで待ちます。インポートには 15 分ほどかかります。 完了すると、86,537 個のドキュメントが作成されます。
インポート オペレーションのステータスは [アクティビティ] タブで確認できます。インポートが完了すると、インポート オペレーションのステータスが [完了] に変わります。
ユーザー イベントのインポート
[イベント] タブを開きます。
[イベントをインポート] をクリックします。
[BigQuery] を選択します。
作成した
user_eventsBigQuery ビューの名前を入力し、[インポート] をクリックします。PROJECT_ID.movielens.user_eventsイベントがインポートされる前に次のステップに進むことはできますが、検索結果に完全なデータセットは含まれなくなります。
オペレーションのステータスは [アクティビティ] タブで確認できます。何百万もの行をインポートするため、このプロセスには約 1 時間かかります。
検索のプレビューと構成
ナビゲーション メニューで [
構成 ] をクリックします。[ここで検索] ボックスに映画の名前(「ロード オブ ザ リング」など)を入力します。
入力した映画のタイトルに関連する検索結果が表示されます。
このページでは、検索ウィジェットで検索結果情報を表示する方法をカスタマイズできます。詳しくは、検索ウィジェットの結果を設定するをご覧ください。
メディア検索アプリでは、次のことができます。
変更を加えたら、[保存して公開] をクリックしてウィジェットを更新します。
検索ウィジェットをデプロイする
ナビゲーション メニューで [統合] をクリックします。
[Widget] タブが選択されていることを確認します。
ウィジェットの認証タイプとして [JWT または OAuth ベース] を選択します。
[ドメイン] フィールドに、ウィジェットを配置するウェブページのドメイン名を入力します。たとえば、ウィジェットをウェブページ
example.com/ai.htmlにコピーする場合は、ドメインとして「example.com」と入力します。[Add] をクリックしてから、[Save] をクリックします。
「次のコードをウェブ アプリケーションにコピーする」セクションにあるコード スニペットをコピーします。
コードベースで認証トークンを生成します。
認証トークンをウィジェットに渡すには、[次のコードをウェブ アプリケーションにコピーする] セクションにある「認証トークンを設定する」コード スニペットを使用し、テキスト
<JWT or OAuth token provided by you backend>を認証トークンに置き換えます。検索アプリをウェブアプリに統合する方法については、検索結果を取得するのコードサンプルをご覧ください。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
メディア レコメンデーションのスタートガイド チュートリアルでは、作成したデータストアをメディア レコメンデーション用に再利用できます。 このクリーンアップ手順を行う前に、そのチュートリアルをお試しください。
- 不要な Google Cloud 料金が発生しないようにするには、Google Cloud console を使用して、不要なプロジェクトを削除します。
- Vertex AI Search の学習用に新しいプロジェクトを作成し、そのプロジェクトが不要になった場合は、プロジェクトを削除します。
- 既存の Google Cloud プロジェクトを使用した場合は、作成したリソースを削除して、アカウントに課金されないようにします。詳細については、アプリを削除する、データストアからデータを完全に削除する、データストアを削除するをご覧ください。
- Vertex AI Search を無効にするの手順に沿って操作します。
BigQuery データセットを作成した場合は、Cloud Shell でそれを削除します。
bq rm --recursive --dataset movielens