Vertex AI Search でサイト内検索を実装してみる
目次
概要
Google Cloud の Vertex AI Search(Discovery Engine API)を使ったサイト内検索を作ってみた。
構成
- フロント
- Astro SSG のページで
/api/searchを叩く
- Astro SSG のページで
- バックエンド
- Vercel Functions(
api/search.ts) が認証トークンを取得して Discovery Engine API に POST
- Vercel Functions(
- 認証
- Google Cloud サービスアカウントの JSON 鍵を Vercel 環境変数に保存し、
google-auth-libraryでアクセストークンを取得
- Google Cloud サービスアカウントの JSON 鍵を Vercel 環境変数に保存し、
Google Cloud 側の準備
- Discovery Engine API を有効化する
- Google Cloud コンソールの API ライブラリから有効化
- データストアを作成する
- ウェブサイトクロール型を選択し、クロール対象を
yuheijotaki.com/*に設定
- ウェブサイトクロール型を選択し、クロール対象を
- 検索アプリを作成する
- データストアと接続し、プロジェクト ID を控えておく
- サービスアカウントを作成する
roles/discoveryengine.viewerロールを付与し、JSON 鍵をダウンロード
- Vercel 環境変数に登録する
GOOGLE_SERVICE_ACCOUNT_KEY(JSON 鍵の中身)とVERTEX_AI_SEARCH_ENGINE_ID(プロジェクト ID)を設定
所感など
- ウィジェット埋め込みと API 2種類の統合形式がある
- ウェブクロール後(インデックス作成後)に検索が可能となる。だいたい8時間ほどかかる
- ページの取得件数は上限は100件まで(参考)
filter使えば特定階層のみに絞ったクエリも投げれそう
- ページの取得順はデフォルトで関連度順になる。ランク付けをしたりすることも可能
- サイト内検索の場合の料金(参考)
- データストアの容量は月 10 GiB まで無料
- Standard Edition ではなく Enterprise Edition($4.00 / 1,000 クエリ)が必須。月 10,000 クエリまで無料
- データソースは今回はウェブサイトを選択しているが、BigQuery や Cloud Storage も選択可能で、データソースの種類に合わせてAIを使った検索や会話機能を作れるAPIといったものらしい