yuheijotaki.com

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

目次

概要

Google Cloud の Vertex AI Search(Discovery Engine API)を使ったサイト内検索を作ってみた。

構成

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

Google Cloud 側の準備

  1. Discovery Engine API を有効化する
    • Google Cloud コンソールの API ライブラリから有効化
  2. データストアを作成する
    • ウェブサイトクロール型を選択し、クロール対象を yuheijotaki.com/* に設定
  3. 検索アプリを作成する
    • データストアと接続し、プロジェクト ID を控えておく
  4. サービスアカウントを作成する
    • roles/discoveryengine.viewer ロールを付与し、JSON 鍵をダウンロード
  5. 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といったものらしい