COLUMN
Vertex AI Searchで実現するレコメンデーション機能とは ~Webアプリへの活用と実装例~
魅力的なコンテンツがあっても、Webサイト上で適切な導線がなければ、ユーザーはすぐに離脱してしまいます。
そのため、Webサイトでユーザーの滞在時間を延ばしたり、コンバージョン率を向上させたりするには、「次に何を見てもらうか」 という導線づくりが重要です。
ここで効果を発揮するのが、ユーザーの関心に基づいて関連コンテンツを表示する「レコメンデーション機能」です。
1. レコメンデーション機能とは
レコメンデーション機能は、コンテンツの特長やユーザーの行動データ等を用いて、関連性の高い情報を自動で提示する仕組みです。主な種類として、「コンテンツベース」(コンテンツの特長に類似するものをレコメンド)や 「協調フィルタリング」(ユーザーの行動データ等をもとにレコメンド)があり、例えば、Web記事のサイトでは閲覧中の記事に類似したものを表示したり、ECサイトでは購入履歴や閲覧傾向を基に商品を提案したりするなど、さまざまな分野で活用されています。
2. Vertex AI Search Recommendation apps
Vertex AI Search Recommendation appsは、AI等を活用してパーソナライズされたレコメンデーションを提供するGoogle Cloud のサービスです。汎用的なレコメンデーション(generic recommendations)とメディア向けのレコメンデーション(media recommendations)の2つのタイプがあります。
- 汎用的なレコメンデーション(generic recommendations)
ユーザーが閲覧中のコンテンツに類似した情報を提案するレコメンデーション機能で、ドキュメント、構造化データやウェブサイトの情報を利用してパーソナライズされたレコメンデーションを提供できるのが特長
- メディア向けのレコメンデーション(media recommendations)
動画などのメディアコンテンツに特化したレコメンデーション機能で、ユーザーの視聴履歴や評価データを基にパーソナライズされたコンテンツを提供できるのが特長
3. 汎用的なレコメンデーションとWebアプリケーションへの実装
Vertex AIのレコメンデーション機能はWebサイト、Eコマース、動画配信プラットフォームなど、さまざまなアプリケーションで活用できます。
本コラムでは、その実装例として汎用的なレコメンデーション(Generic Recommendations)の機能を活用し、Webアプリケーションにレコメンデーション機能を組み込む方法を紹介します。弊社のWebコラムサイトを題材に、データの準備、レコメンデーションアプリの構築、APIを利用した統合までの手順を詳しく解説します。
4. 実装方法
汎用的なレコメンデーション機能の実装方法をご説明します。
以下の構成でレコメンデーション機能を作成します。
- Vertex AI のレコメンデーションアプリを作成
- Cloud Run に構築し、Discovery Engine API を経由してデータ取得
- レコメンデーションのWebコンポーネントを追加
4-1. 構造化データの準備
最初にレコメンデーションに必要なデータを準備します。
Vertex AI Searchで実現する高度なWeb検索の導入と活用法について解説では、Webサイトからデータをインデックスする方法を取り上げましたが、今回は構造化データを活用する方法をご紹介します。
以下のようなタイトルや要約情報を含む構造化データ(JSONL)を用意しました。
{"url": "https://business.ntt-east.co.jp/content/cloudsolution/ih_column-176.html", "title": "小規模運用に最適!Amazon Connect Casesで始める問い合わせ履歴管理とボイスボット自動連携の活用例", "excerpt": "本コラムでは、Amazon Connect Casesについて機能の概要や使い方、活用例をご紹介します。", "description": "・・・・"}
{"url": "https://business.ntt-east.co.jp/content/cloudsolution/column-602.html", "title": "Amazon Connectで生成AIによるリアルタイムなエージェント支援機能を試してみた!", "excerpt": "本コラムでは、Amazon Connectの機能の一つであり、リアルタイムなエージェントの支援を行うためのサービスであるAmazon Q in Connectの紹介と、機能検証のデモを行うための手順をご紹介します。", "description": "・・・"}
{"url": "https://business.ntt-east.co.jp/content/cloudsolution/column-601.html", "title": "AWS入門ガイド:アカウント作成の方法と流れ", "excerpt": "本コラムでは、AWSの入門者向けに、運用に必要な最低限のアカウントである、「ルートユーザー」と「IAMユーザー」の作成方法を解説します。", "description": "・・・"}
次に Google Cloud Storageバケットを作成し、データを保管します。
コンソールからバケット名を入力して、「作成」を選択します。
作成済みのバケットに、準備した構造化データをアップロードします。
4-2. データストアの作成
Google Cloud コンソールからAgent Builderを選択し、データストアを作成します。データソースには「Cloud Storage」を選択します。
次にデータをインポートします。データの種類として「構造化データ(JSONL)」を選択し、GCSに保存されているデータのパスを指定した後、「続行」をクリックします。
インポートしたデータからフィールドが自動検出されます。割り当てられていないフィールドは、手動でマッピングすることもできます。
最後にデータストア名を入力して、「作成」を選択します。
4-3. アプリの作成
次にアプリを作成してデータストアに接続します。
Google Cloud コンソールからAgent Builderを選択し、アプリを作成します。アプリの種類を「レコメンデーション エンジン」に指定します。
アプリ名を入力して「続行」を選択します。
作成したデータストアを選択して、「作成」を選択します。
4-4. プレビュー
アプリ作成後、自動的に学習が開始されます。利用開始できるまで数時間かかることがあります。
完了後に、コンソールからレコメンデーションの結果をプレビューできます。
「生成AIを使った電話対応の効率化・自動化~学校・教育機関編~」の記事を指定して、レコメンデーションを取得します。
すると、旅行代理店編やインフラ業界編など、同じシリーズの記事が上位にランクインしていることが分かります。
4-5. レコメンデーションアプリのAPI統合
レコメンデーションのモデルが学習を完了したら、APIを利用してアプリに統合できます。
ここでは、DiscoveryEngine APIを使用して、レコメンデーション結果を取得する方法を紹介します。
サンプルコードが以下です。
from google.cloud import discoveryengine_v1 as discoveryengine
・・・
project_id = <プロジェクトID>
location = "global"
engine_id = <レコメンデーションアプリID>
def sample_recommend():
client = discoveryengine.RecommendationServiceClient()
user_event = discoveryengine.UserEvent()
user_event.event_type = "event_type_value"
user_event.user_pseudo_id = "user_pseudo_id_value"
user_event = discoveryengine.UserEvent(
event_type="view-item",
user_pseudo_id="user1",
documents=[{"id": <対象記事のドキュメントID>}],
)
request = discoveryengine.RecommendRequest(
serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/{engine_id}",
user_event=user_event,
page_size=3, #出力する結果の数
params={
"returnDocument": True,
"returnScore": True,
"strictFiltering": True,
}
)
# Make the request
response = client.recommend(request=request)
sample_recommend()
このコードを実行すると、以下のような結果が得られます。
Documentブロックには、レコメンデーション結果として返された記事とその詳細情報 が含まれます。
Metadataには、レコメンデーションの関連度スコアが表示されていることがわかります。
results {
id: "ade1e6f1eb4e62770375b80db2c10cea"
document {
name: "projects/134425563507/locations/global/collections/
default_collection/dataStores/ad_1737952871861/branches/0/documents/ade1e6f1eb4e62770375b80db2c10cea"
id: "ade1e6f1eb4e62770375b80db2c10cea"
schema_id: "default_schema"
struct_data {
fields {
key: "url"
value {
string_value: "https://business.ntt-east.co.jp/content/cloudsolution/column-580.html"
}
}
fields {
key: "title"
value {
string_value: "生成AIを使った電話対応の効率化・自動化~旅行代理店編~"
}
}
fields {
key: "excerpt"
value {
string_value: "本コラムでは、広告代理店におけるAI自動電話対応の活用法についてご紹介します。"
}
}
fields {
key: "description"
value {
string_value: "昨今、旅行代理店における電話業務への生成AIの導入が急速に進んでいます。・・・"
}
}
}
parent_document_id: "ade1e6f1eb4e62770375b80db2c10cea"
}
metadata {
key: "score"
value {
number_value: 8.7996078946162015e-05
}
}
}
・・・
4-6. Webアプリケーションへの組み込み
最後に、Webアプリにレコメンデーション機能を組み込む実装を行います。
完成後のイメージがこちらです。
ユーザーが記事を閲覧すると、「おすすめのコラム」として関連する記事が動的に表示されます。
具体的なソースコードは割愛しますが、以下の流れで実装しています。
- Cloud Run にレコメンデーションAPIをデプロイ
- フロントエンドで「おすすめ」コンポーネントを追加
- WebからAPIを呼び出し、関連する記事を表示
5. まとめ
レコメンデーションシステムのWebアプリケーションの構築方法について、ご理解いただけたでしょうか。本コラムでは、Vertex AI Search Recommendation Appsを活用し、コンテンツの特長に基づいたレコメンデーション機能をWebアプリに統合する方法をご紹介しました。また、今回紹介した方法に加えて、ユーザーイベントなどのデータを活用することで、ユーザーの関心に基づいた、より精度の高いレコメンデーション機能もVertex AIから実現できます。ぜひ一度お試しください。
RECOMMEND
その他のコラム
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。