Vertex AI Search でサイト内検索を実装してみる
目次
概要
Google Cloud の Discovery Engine API(Vertex AI Search)を使ったサイト内検索のデモを実装した。
構成
- フロント
- Astro SSG のページで
/api/searchを叩く
- Astro SSG のページで
- バックエンド
- Vercel Functions(
api/search.ts) が認証トークンを取得して Discovery Engine API に POST
- Vercel Functions(
- 認証
- GCP サービスアカウントの JSON 鍵を Vercel 環境変数に保存し、
google-auth-libraryでアクセストークンを取得
- GCP サービスアカウントの JSON 鍵を Vercel 環境変数に保存し、
Google Cloud 側の準備
- Discovery Engine API を有効化する
- GCP コンソールの API ライブラリから有効化
- データストアを作成する
- ウェブサイトクロール型を選択し、クロール対象を
yuheijotaki.com/*に設定
- ウェブサイトクロール型を選択し、クロール対象を
- 検索アプリを作成する
- データストアと接続し、プロジェクト ID を控えておく
- サービスアカウントを作成する
roles/discoveryengine.viewerロールを付与し、JSON 鍵をダウンロード
- 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 まで無料