Vertex AI Searchを採用した検索システムの導入ポイント
はじめに
こんにちは、株式会社バンダイナムコネクサスの山野です。
昨今のECサイトや動画プラットフォームにおいて、レコメンドや検索はユーザ体験を向上させるうえで今や欠かせない機能となっています。
しかし、高精度な検索システムを最初からフルスペックで実装しようとすると、膨大な開発コストと時間がかかります。意味検索、パーソナライズ、スペル補正、同義語辞書の整備、Google Knowledge Graphのような外部知識ベースとの統合など、考慮すべき要素は多岐にわたり、リソースが限られる中ですべてを実現するのは現実的ではありません。
そこで重要になるのが、少ない工数で段階的に導入し、継続的に改善していくアプローチです。まずは基本的な検索機能を素早く立ち上げ、ユーザの反応を見ながら徐々に精度を高めていく方が、ビジネス成果に早く繋がります。
私が参画したプロジェクトでも、このアプローチを採用しました。Google Cloud の Vertex AI
Search(以降VAIS)を活用することで、強力な検索機能を比較的クイックに導入することができました。レコメンドについては以前こちらの記事でご紹介しましたが、今回は検索についてご紹介します。
VAISは、小売向けの VAIS for Commerce やメディア向けの VAIS for Media といった用途ごとに特化したサービスが用意されています。土台の部分は同じなので、裏側の仕組みは多くの面で共通しています。
本記事ではVAIS検索の概要や導入するうえでのポイントについてお伝えします。for Commerce と for Media を両方取り上げますが、いずれか一方にしかない機能もあるのでご注意ください。VAISを使い込んだ中で知ったTipsについては別途ご紹介します。
※本記事の内容は、執筆時点の情報に基づいて記載しています。最新の情報もご参照ください。
検索の重要性と評価指標
ECサイトにおいてユーザが商品を探す「検索」機能は、売上やコンバージョンに直結する重要な要素です。ユーザが求める商品に素早くたどり着けなければ、機会損失や離脱に繋がりかねません。また、動画プラットフォームでも、膨大なコンテンツの中から関連動画や興味ある作品を見つけやすくする検索システムが、ユーザーエンゲージメントを左右します。
さらに、近年では従来のキーワード検索以上の機能が求められるようになっています。例えば、意味検索やパーソナライズされた結果の提供、高度なフィルタリング、スペルミスの補正など、ユーザ体験をより高めるための多様な機能が生み出されてきました。
そうした検索機能のパフォーマンスを定量的に評価するための指標も、様々なものが考案されています。
-
ユーザが求める商品にたどり着けているか
- 離脱率
- 商品到達までの検索回数
- 0件ヒット率 など
-
ユーザーの検索体験が向上しているか
- 検索利用者数
- 検索利用率
- ユーザー満足度 など
-
検索機能が売上に貢献しているか
- 検索による売上 = 検索CVR × 検索利用者数 × 検索経由の購入単価 など
Vertex AI Search の特徴
VAISは従来型の単純なキーワードマッチング検索とは異なり、AIを活用した高度な検索体験を提供します。
高度な検索機能
最適化
検索アルゴリズムはGoogle品質です。裏側でGoogleによって継続的に改善されており、その恩恵を受けることができます。さらに、それぞれ小売とメディアに特化した最適化が行われています。特徴量については、for Commerce は商品カタログ(価格、在庫、カテゴリなど)やユーザイベント(検索、クリック、購入など)を利用するのに対し、for Media はメディアメタデータ(タイトル、公開日時、再生時間など)や視聴イベント(視聴日時、視聴時間など)を利用します。最適化対象についても考慮されており、for Commerce は収益等の最大化を目指し、for Media の場合は視聴時間などメディア特有の目標に合わせて動作します。
意味検索 (Semantic Search)
自然言語処理技術を用いて、ユーザの検索意図を解析。キーワードが一致しなくても関連する商品を検索結果に含めます。検索結果が極端に少ない場合のクエリ制約緩和や、スペルミスや誤入力への「もしかしてこれ?」の表示機能も備えています。これにより、ユーザーが意図した検索結果にたどり着けるように支援します。
カタログ拡張
Googleのナレッジグラフを活用し、カタログにないデータも検索対象になります。曖昧なクエリでも文脈を補完して関連商品を拡張してくれます。例えば、概念間の関係性を理解した拡張(ピクサー → トイストーリー)や、略称から正式名称への補完(hxh →ハンターハンター)など、ユーザーの検索意図を広く捉えて関連商品を提示します。
パーソナライズとランキング
機械学習モデルを用いて、関連性・人気・収益性に基づいて検索結果を最適化(動的ランク付け)します。さらにそれを各ユーザに最適化された並びで検索結果として表示します。
柔軟な検索オプションとビジネスルールによるカスタマイズ
価格帯やブランド、在庫有無などのフィルタリングや、サイト運営者の意図で特定商品のブースト(上位表示)やデモート(下位表示)の補正を行うことも可能で、ビジネスニーズに合わせた最適な検索体験を実現します。さらに、類義語・同義語の登録による検索結果の強化や、ユーザーがキーワードを入力すると候補を表示する予測入力も提供しています。
インフラと運用
- 低レイテンシ
- 高速な応答時間(APIレスポンスタイム)でユーザ体験を向上させます
- スケーラビリティ
- インフラ管理を気にせず、必要に応じてスケールできます
- 過去にかなりの負荷がかかるサービスで利用した際も、事前に上限緩和申請をしておけば、激しいスパイク含めて何事もなく処理できました
- コスト最適化
- リクエスト量に応じた従量課金制でコストを最適化できます
- 自動化
- トレーニングやアップデート、チューニングが自動で行われます
- 低運用作業コスト
- データパイプラインや権限周りさえ最初に作り込めば、エンジニアリングスキルが高くない人でも運用可能です
以上のように、VAISは検索アルゴリズムの高度化と運用者の調整機能の両面から、「ユーザにとってもビジネスにとっても最適な検索結果」を提供することを目指しています。スクラッチで実装すると自由度が高すぎて要件の優先順位付けが難しくなることがありますが、マネージドサービスを利用すれば解消できます。Googleに任せられる部分は任せてしまい、個別のサービスごとにチューニングすべきポイントの議論に注力できるのも重要な利点です。
アーキテクチャ
私たちの場合、カタログデータとユーザーイベントデータをインプットとして、検索結果をアウトプットするシステムを構築しました。カタログデータはデータレイクからバッチパイプラインを通じて取得し、ユーザイベントデータは画面からリアルタイムで連携しています。モデルの学習とAPI提供にはVAISを利用しています。
- カタログデータ(商品データ):
- カテゴリ、ブランド、価格、在庫ステータス、商品説明文などを含む
- ユーザイベントデータ(行動ログ):
- 商品詳細ページ閲覧、カート投入、購入完了などの行動を時系列で記録したもの
前回の記事をご覧いただいた方はお気づきかもしれませんが、これはレコメンドと同様です。レコメンドで構築済みの場合は、ほとんど追加の開発が不要です。
VAISでは検索とレコメンデーションで同じデータセットを活用するため、商品カタログの取り込みの二重運用が削減されます。さらに、アトリビューショントークン(検索結果識別子)を使った検索と商品レコメンドによるユーザーアクティビティの一貫したトラッキングが可能です。この仕組みによって、検索 → 結果表示 → ユーザ反応 → 学習 のサイクルがリアルタイムに回るフィードバックループが形成されます。
構成イメージ図
レコメンドとほぼ同じ構成なので省略します。
設計/プロジェクト進行上のポイント
ビジネス要件整理
検索体験の改善による利益向上見込みを算出します。「検索の重要性と評価指標」の節で紹介したような指標で評価する場合は、それらが取得できるように準備します。また、ユーザーアンケートや定性評価で指摘された課題を整理します。課題としては例えば以下のようなものがあるでしょう。
- 関連順の精度が悪い
- キーワードマッチで1文字でも違えば0件ヒットになってしまう
- 曖昧検索・意味検索ができない
UI/UX改善の計画を立て、クエリ、ブラウジング、フィルタ、並び替えなどの検索パターンを整理します。
プロジェクト計画立て
PoCとシステム要件定義・開発・リリース等の各フェーズにおける進行要件を整理しておきます。
リリース前のオフライン検証では、何をもって「検索精度が良い」と判断するのかを定義します。定性評価の場合も基準を決めてから検証を行い、基準が後からぶれないようにします。
ステージング環境やリリース直後のプロダクション環境ではイベントデータが十分に蓄積されず、Googleが定めるデータ品質の階層(ティア。後続の「データ品質向上」に詳細)が上がらない可能性があるため、段階的に検証とリリースを進める必要があります。予測入力については、GA4のデータが事前に整備されていれば確認が可能です。GA4のデータ連携がない場合は、予測入力のリリースも段階的に行う必要があるかもしれません。
機能要件整理
VAISの基本機能で対応可能な要件としては例えば下記があります。また、ここになくともサービス独自でやるべきことがあればそれも洗い出しておきます。
- 高度な検索
- あいまい検索・意味検索
- Google Knowledge Graph の利用
- パーソナライズ等の最適な並び替え
- 検索結果のフィルタリング
- 検索結果の並び替え
- 検索結果のファセット表示と動的ファセット
- 検索結果が0件もしくは少ない場合のクエリ制約緩和
- スペルミスや誤入力時に「もしかしてこれ?」を表示
- 類似ワードの登録(同義語、置き換え)
- リダイレクト
- 特定の条件にマッチする商品の除外
- ブースト、デモート設定
- 検索結果のトップ固定やピン留め
- 商品情報のニアリアルタイム反映
- 関連度のスコア表示
- 予測入力および特定ワードの除外設定
コスト見積もり
VAISの主なコストは以下の通りです。最新の料金体系や詳細については公式ドキュメントをご確認ください。
- APIコスト:リクエスト1000件あたり$2.50
- Data Index:1GBあたり月$5.00
- 予測入力API:無料
- 注:コスト削減が必要になったときのために、あらかじめキャッシュを検討しておくと良いです
カタログデータ整理
VAISにはデフォルトのシステム属性(商品タイトル、説明、サイズなど)があり、公式ドキュメントで適切な値を入れることが推奨されています。各社固有の項目(素材、販売店舗名、アーティスト名など)はカスタム属性として定義可能です。
各システム属性をどのデータソースからどんな頻度で取得するか、どういう加工が必要かを検討します。以下のような設定が可能です。
- インデックスに登録するか(Indexable)
- キーワード検索の対象にするか(Searchable)
- 結果に含めるか(Retrievable)
- 動的ファセット生成を許可するか
デフォルトのシステム属性は基本的にインデックス登録されていますが、カスタム属性は明示的に設定しないと検索対象にならない場合があるため注意が必要です。例えば、商品説明やカテゴリは全文検索の対象に含めたいでしょうし、型番などはユーザが正確に入力したときのみ一致させたい(部分一致ではなく完全一致検索にする)といった調整も可能です。
設計段階で、ユーザーに見せたい属性、絞り込みに使わせたい属性、検索キーワードと突合したい属性を整理し、それに沿ってスキーマとフィールド設定を詰めることが重要です。
ユーザーイベントデータ連携
サイトにトラッキング機能を実装し、ユーザの行動ログ(検索語、クリック、購入など)をパーソナライズやランキング最適化に活用します。必要なイベントは以下です。
-
search:検索実行 -
page-view:商品詳細ページ閲覧 -
add-to-cart:カート追加 -
purchase:購入
検索結果の最適化において重要な情報は、ユーザーがどの商品をクリックしたか、あるいはまったくクリックせずに離脱したかです。検索API呼び出し時に Attribution Token が返信され、VAISはこれを用いて検索クエリと結果に対するユーザ反応を関連付けて学習します。Attribution Token はユニークで再利用不可、他ユーザに渡してはならないものです。このTokenをどのように取り扱うか(session storage, URL parameter など)という設計も欠かせません。
データ品質向上
VAISでは、投入したデータの量と質に応じてデータ品質スコアが計算され、それをもとに検索パフォーマンス階層(ティア)が自動的に変化します。最下層のティア1だと商品属性とクエリの単純照合しか行われませんが、ティア2では人気順を考慮したランキングに、ティア3では最適化されたランキングとなり、ティア4になるとパーソナライズされたランキングが提供されます。ティア4では同じクエリでもユーザーごとに異なる並び順を提示するため、特に大量のユーザーイベントデータとユーザ識別情報が必須です。
コンソールで項目別にティアが上げるための条件を満たしているかを確認し、適用されるティアを事前に把握しておくことが重要です。データ品質スコアを高めるため、計測実装の見直しやUIの改善などの対応が必要です。
検索体験のチューニング
VAISにはデフォルトで関連度の高い結果を返すAIモデルが搭載されていますが、ビジネス要件に応じたチューニングも可能です。ブースト/バリア設定、類義語(シノニム)登録、除外フィルタ、ピン留めなどの Serving Controls を利用できます。
要件に基づいて、「どのような検索語で何を上位に見せたいか」「どういった結果を除外すべきか」「ユーザーにどんな絞り込み条件を提供するか」を洗い出し、必要なビジネスルールを設定します。
例として、常に在庫ありの商品のみを表示するなら、サイト全体のフィルタルールとして availability: IN_STOCK をデフォルト適用する設定が考えられます。新商品を優先的に見せたい場合は、新商品タグに対してブースト値を+0.5与えることができます。類義語に関しても、ユーザが使いがちな俗称や略語が商品データと食い違う場合に補正ルールを入れると効果的です(「USBメモリ」と検索したら「フラッシュドライブ」もヒットさせるなど)。
チューニングはコンソール上で試験的に行い、逐次結果を確かめながら調整していきます。ただし、明確な根拠とビジネス要件に基づいた最小限のルール設定に留めることが推奨されます。過度なルール設定はAIの学習を阻害し、メンテナンスコストが増大するためです。
API仕様の合意
画面側やAPIリクエストの実装を担当するのが別チームの場合は、お互いに手戻りが発生しないように最初にAPI仕様を合意しておきましょう。特に、レスポンスに含める要素は入念に確認する必要があります。
精度検証・効果検証
まずはモデルがブラックボックスである前提を関係者で合意し、早めに精度を検証します。
例えば定性評価観点として過去のクエリ数上位ワードの検証に加えて、以下のようなパターンの結果を確認します。
- キーワード検索
- 同形異義語
- 意味検索(意味、誤字)
- 曖昧検索(表記揺れ)
- 画像情報検索
- 同義語検索(略称) など
最後に、「ビジネス要件整理」で想定した効果が出ているかを検証します。因果推論の手法を駆使してバイアスを除き、効果を正しく検証します。
おわりに
今後の展望として、VAISにはいくつか注目すべき機能拡張があります。例えば、会話型の検索インターフェースです。ユーザーが「もっと安いのは?」「在庫のあるサイズは?」といった追加質問を投げかけ、それにAIが応答して検索結果を絞り込む。まさにチャットボットと検索が融合した体験が可能になりつつあります。このような対話型検索は、特にスマートフォンや音声アシスタント経由のショッピングで威力を発揮すると思われます。
最後に、こうした高度な検索システムを支えるものはやはり良質なデータと継続的な運用です。AIに多くを任せられるとはいえ魔法ではないので、今回紹介したようなデータ整備やサービス特性に応じたチューニングを継続することが成功のポイントとなります。VAISはそのためのツール群(分析ダッシュボードなど)も備えているので、活用しながら検索体験を磨き上げていきます。検索はユーザと商品の出会いの場です。現代のAI検索プラットフォームを使いこなしつつ、ユーザにとって快適でビジネスに貢献する最高の検索を実現していきます。
Discussion