yuheijotaki.com

Vertex AI Search でサイト内検索を実装してみる

目次

概要

Google Cloud の Discovery Engine API(Vertex AI Search)を使ったサイト内検索のデモを実装した。

構成

  • フロント
    • Astro SSG のページで /api/search を叩く
  • バックエンド
    • Vercel Functions(api/search.ts) が認証トークンを取得して Discovery Engine API に POST
  • 認証
    • GCP サービスアカウントの JSON 鍵を Vercel 環境変数に保存し、google-auth-library でアクセストークンを取得

Google Cloud 側の準備

  1. Discovery Engine API を有効化する
    • GCP コンソールの API ライブラリから有効化
  2. データストアを作成する
    • ウェブサイトクロール型を選択し、クロール対象を yuheijotaki.com/* に設定
  3. 検索アプリを作成する
    • データストアと接続し、プロジェクト ID を控えておく
  4. サービスアカウントを作成する
    • roles/discoveryengine.viewer ロールを付与し、JSON 鍵をダウンロード
  5. Vercel 環境変数に登録する
    • GOOGLE_SERVICE_ACCOUNT_KEY(JSON 鍵の中身)と VERTEX_AI_SEARCH_ENGINE_ID(プロジェクト ID)を設定

所感など

  • GCP のコンソールで毎回迷子になる
  • Discovery Engine API はデータストアへのウェブクロールが前提で、インデックス作成後に検索が可能となる
  • ページの取得順はデフォルトで関連度順になる。ランク付けをしたりすることも可能。
  • 料金 は 1 回の API 呼び出しが 1 クエリとして計算(100 件の結果を返しても 1 クエリ)
    • アカウントあたり月 10,000 クエリまで無料
    • 有料プランは Standard Edition が $1.50 / 1,000 クエリ
    • AI による回答要約付きの Enterprise Edition が $4.00 / 1,000 クエリ
    • データストアの容量はウェブサイト型の場合 500 KiB x ページ数で計算、月 10 GiB まで無料