Agent Search(旧Vertex AI Search)のウェブサイト検索でフィルタを使用する方法

Agent Search(旧Vertex AI Search)は、Googleが提供するAI検索エンジン構築サービスで、高度な自然言語処理や生成AI技術を活用した検索システムを簡単に構築できます。

Agent Searchには検索結果をフィルタする機能があり、検索時に条件を指定して、検索結果や回答生成のソースを特定範囲に限定することができます。

データソースに何を指定するか(Webサイト、ファイル、メディア等)によってフィルタに使える条件は異なります。この記事では、ウェブサイトをデータソースにした場合のフィルタの使用方法について解説します。

目次

ウェブサイト検索でフィルタに指定できる項目

ウェブサイト検索の場合、「高度なインデックス登録」を有効にするかどうかでフィルタの条件に指定できる項目が変わります。

「高度なインデックス登録」は、Googleの公開インデックスではなく、指定したサイト専用の独立したインデックスを作成するオプションです。AIによる要約・回答生成を使用するためには「高度なインデックス登録」を有効にする必要があります。

「高度なインデックス登録」が無効の場合

フィルタとして使用できるのは以下の項目です。

項目名説明
cr特定の国のページに制限します。
highRangewebページに含まれる数値データをフィルタ対象に指定できます。highRangeはその上限値を指定できます。どの数値データかという指定はできません。
lowRangehighRangeと同様に、下限値を指定できます。
fileType指定した拡張子のページに制限します。例えば、HTMLに限定するといった指定が可能です。
lr指定した言語で作成されたページに制限します。crとの違いは、国で指定するか、言語で指定するかです。
rightsライセンスに基づいて制限します。ページのライセンスはrel=”license”や構造化データで指定します。
siteSearch特定のURLに制限します。

フィルタは以下のように、[キー]:\”[値]\”の形式で指定し、複数条件を指定する場合にはANDで繋ぎます。例えば以下のような書式になります。このフィルタ式をどこで使うかは、記事の後半で説明します。

cr:"countryJP" AND fileType:"html" AND siteSearch:"https://example.com/A/*"

「高度なインデックス登録」が有効の場合

URL、任意のメタデータ、検索クエリとの関連度の高さの3つがフィルタとして使用可能です。それぞれについて説明します。

URL

ページのURLを指定できます。「高度なインデックス登録」を無効にした場合と同じくsiteSearchというキーで指定しますが、こちらは「NOT」または「-」を頭に付けることで否定条件を指定できるほか、複数の条件をORで繋いで指定可能です。

NOT siteSearch:"https://example.com/A/*"
siteSearch:"https://example.com/A/*" OR siteSearch:"https://example.com/B/*"

メタデータ

フィルタの条件に使用する情報をページに埋め込んでおき、その情報を使って検索ができます。任意の値を設定することで、自由にフィルタをカスタマイズすることが可能です。

メタデータをページに埋め込む方法(「高度なインデックス登録」が有効の場合)

メタデータをページに埋め込む方法について説明します。埋め込みの方法としてはmetaタグ、PageMapデータ、構造化データが使用できます。また、埋め込まなくても自動的にメタデータとして認識される項目もあります。

metaタグ

metaタグの場合は、name属性に項目名を、content属性に値を指定して、headタグの下に配置します。
任意の項目名が指定できますが、他の用途用に予約済の項目名や明示的に無視される項目名、ハイフンとドット以外の記号を含む項目名は基本的には使用できません。

<meta name="category" content="apple,grape">

予約済の項目名
robots, description, keywords, revisit-after, generator, verify-v1, googlebot, google-site-verification, mssmarttagspreventparsing, no-cache

無視される項目名
keywords

サイトの仕様上どうしても使わざるを得ない場合もあるため、使用できない項目名であってもフィルタの条件として使うための回避策も用意されています。

この用途で認識されるmetaタグは50個が上限となります。

PageMapデータ

PageMapというXML形式のデータをWebページのHTMLまたはサイトマップに埋め込みます。

PageMapデータは以下の構成になります。全てのデータはPageMapタグに含める必要があります。DataObjectが一つ一つのデータを、AttributeはそのDataObjectの属性を表します。DataObjectはPageMapに複数含めることができ、typeも任意の値を指定できます。またAttributeも任意の項目名で複数設定可能です。

<PageMap>
  <DataObject type="article">
    <Attribute name="author">新芽太郎</Attribute>
    <Attribute name="rating">3.5</Attribute>
  </DataObject>
</PageMap>

各ページのHTMLに埋め込む場合には、headタグの下に配置します。PageMapはHTMLタグではないため、コメントアウトする必要があります。

<head>
(中略)
  <!--
    <PageMap>
      <DataObject type="article">
        <Attribute name="author">新芽太郎</Attribute>
        <Attribute name="rating">3.5</Attribute>
      </DataObject>
    </PageMap>
  -->
(中略)
</head>

サイトマップに埋め込む場合、urlタグの中にPageMapタグを含めます。

<url>
   <loc>http://www.example.com/A</loc>
   <PageMap xmlns="http://www.google.com/schemas/sitemap-pagemap/1.0">
     <DataObject type="article">
       <Attribute name="author">新芽太郎</Attribute>
       <Attribute name="rating">3.5</Attribute>
     </DataObject>
   </PageMap>
 </url>

構造化データ

JSON-LDやMicrodata、RDFaといった形式で構造化データをHTMLに埋め込みます。schema.orgの仕様に沿って正しい項目名と形式で記述する必要があり、任意の項目名は使用できません。以下はJSON-LDでの記述例です。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Agent Searchのフィルタとは?",
  "image": "https://example.com/thumbnail.jpg",
  "datePublished": "2026-07-17T08:00:00+09:00",
  "dateModified": "2026-07-17T15:30:00+09:00",
  "author": {
    "@type": "Person",
    "name": "山田 太郎"
  }
}

CMSなどを利用している場合、Google検索用に構造化データが既に正しい形式で埋め込まれている場合も多く、その値をそのままフィルタに使用できます。

自動的に認識される値

ページが最初に公開された日付を表す「datePublished」と直近に更新された日付を表す「dateModified」の2つの値は、データを埋め込まなくてもページ内のコンテンツから自動的に認識されます。これらの値は構造化データを使ってより明示的に指定することも可能です。

コンテンツから値を認識できなかった場合、ページによってdatePublishedやdateModifiedの値が入らないこともあります。

スキーマへの登録

メタデータの場合、フィルタに使用するにはAgent Searchのコンソール上で「スキーマ」として登録する必要があります。

例えば、以下のように「article-categories」という名前でmetaタグを埋め込んだとします。

<meta name="article-categories" content="基礎知識">

この場合の設定例が以下になります。

PageMapデータを使用した場合には、Attributeタグのname属性に指定した値を「フィールド名」として指定します。

自動的に認識される「datePublished」と「dateModified」は、スキーマへの登録は不要です。

フィルタ式

メタデータのフィルタの式は以下になります。文字列の場合はANYを使います。日時の場合にはISO 8601に準拠した形式で指定が可能です。NOTによる否定が使用できるのと、複数の式をORで接続することが可能です。また、値が存在するかどうかを判定するEXISTSという表現も指定できます。

例えば以下の2個目の例では、datePublishedが取得されてない場合を考慮したフィルタ式になっています。

article-categories: ANY("categoryA")
NOT datePublished: EXISTS OR datePublished>= "2026-01-01T00:00:00+09:00"

フィルタの使用方法

コンソール上で指定する

Agent Searchのコンソール上からフィルタを指定することができます。

アプリを選択して左側のメニューから「構成」を選択、「管理」タブを開いて「コントロールを作成」をクリックします。

ドロワーメニューから以下の項目を入力していきます。

項目名
設定名任意の名前を入力します。
コントロール タイプ「フィルタ」を選択します。
データストアを選択フィルタの対象にするデータストアを選択します。
フィルタフィルタ式を入力します。
このルールが有効になる条件検索のクエリや期間など、フィルタを適用する条件を指定できます。

作成したコントロールを保存すると、少しラグを置いてフィルタが適用されます。フィルタ結果はコンソール上の「プレビュー」メニューより確認可能です。

API実行時に指定する

API実行時にフィルタを指定することも可能です。検索の実行のたびにフィルタの条件を変えられるため、より細かい制御が可能です。

例えば、検索実行時にフィルタを指定する時は以下のように指定します。伏字になっている箇所は環境に合わせて変更が必要です。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/xxxxxxx/locations/global/collections/default_collection/engines/xxxxxxx/servingConfigs/default_search:search" \
  -d '{
    "query": "多摩川でおすすめのスポットは?",
    "pageSize": 10,
    "languageCode": "ja",
    "userInfo": {
      "timeZone": "Asia/Tokyo"
    },
    "filter": "NOT datePublished: EXISTS OR datePublished>= \"2026-01-01T00:00:00+09:00\""
  }'

APIでフィルタを指定する場合、フィルタ式内部のダブルコーテーションはバックスラッシュ(\)でエスケープする必要があります。

回答生成の際にも以下のように設定可能です。指定するプロパティが若干異なります。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/xxxxxxxx/locations/global/collections/default_collection/engines/xxxxxxxx/servingConfigs/default_search:answer" \
-d '{
  "query":{
    "text":"多摩川でおすすめのスポットは?",
  },
  "searchSpec":{
    "searchParams":{
      "filter":"NOT datePublished: EXISTS OR datePublished>= \"2026-01-01T00:00:00+09:00\""
    }
  }
}'

ドキュメントの関連度によるフィルタ

URLやコンテンツのメタデータの他に、入力したクエリに対する各ページの関連度によってフィルタすることも可能です。

ドキュメントの関連度によるフィルタについては、v1、v1alpha、v1betaの各APIのバージョンによって使用できる機能が異なります。この記事は2026年7月時点でのv1の情報を元に記載しています。

検索結果自体をドキュメントの関連度によってフィルタする機能は、API経由での実行時のみ指定可能です。

以下のように、「relevanceThreshold」というフィールドに設定します。”LOWEST”、”LOW”、”MEDIUM”、”HIGH”から選択でき、”HIGH”に近づくにつれて関連度の高いドキュメントしか検索結果として返さなくなります。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/xxxxxxx/locations/global/collections/default_collection/engines/xxxxxxx/servingConfigs/default_search:search" \
  -d '{
    "query": "多摩川でおすすめのスポットは?",
    "pageSize": 10,
    "languageCode": "ja",
    "userInfo": {
      "timeZone": "Asia/Tokyo"
    },
    "relevanceThreshold": "MEDIUM"
  }'

生成AIによる回答の生成時に、関連度の低いドキュメントを除外するフィルター機能もあります。

ウィジェットによる組み込みの場合には、Agent Searchのコンソール画面からアプリを選択し、左側のメニューから「構成」を選択、「UI」タブから「関連性の低いコンテンツを無視する」にチェックを入れます。

APIではこのフィルターはデフォルトでONになっています。OFFにする場合、以下のように「ignoreLowRelevantContent」というフィールドでfalseを指定します。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/xxxxxxxx/locations/global/collections/default_collection/engines/xxxxxxxx/servingConfigs/default_search:answer" \
-d '{
  "query":{
    "text":"多摩川でおすすめのスポットは?",
  },
  "answerGenerationSpec":{
    "ignoreLowRelevantContent":false
  }
}'

まとめ

この記事では、Agent Searchでウェブサイトをデータソースに指定した場合のフィルタの使い方について説明しました。「高度なインデックス登録」を有効にするかどうかでフィルタに使用できる項目は異なり、有効にしているとURLのほか、ページに埋め込んだ任意のメタデータをフィルタの条件に指定することも可能です。

APIでは実行毎にフィルタの内容を指定できるため、ユーザーの入力クエリに応じてフィルタの条件を変更したり、ファセット検索のようなUXを提供することも可能です。

自社の導入要件や目指す検索体験に合わせて、Agent Searchのフィルタ機能を効果的に活用しましょう。

Agent Searchを活用したAIサイト内検索を手軽に導入「SiteAsk(サイトアスク)」

Agent Searchを活用したAIサイト内検索を手軽かつ安全に導入できるサービスが、弊社が提供する「SiteAsk(サイトアスク)」です。

  • Agent Searchを採用、回答データの作成や保守が不要

Agent SearchがWebサイトのデータから自動的にRAGを構築するため、面倒なデータ処理は不要です。Webサイトの更新と共にデータは更新されるので、運用中のデータ保守も不要です。

  • 強力なハルシネーション防止機能

Agent Searchの安全構造に加え、SiteAsk独自の「3層AIガードレール」を搭載。悪意のある質問による不適切な回答やブランドを毀損する回答をブロックします。

  • システム改修不要で導入可能

JavaScriptを読み込むコードを追加するだけで導入できます。Googleタグマネージャー(GTM)を利用した導入も可能なため、既存のシステムやサイトのソースコードを改修する必要がありません。

Agent Searchのフィルタ機能を使った回答の調整にも対応しています。Agent Searchを活用したAIサイト内検索を手軽にWebサイトに導入したい方は、ぜひSiteAskの導入をご検討ください。

よかったらシェアしてね!
  • URLをコピーしました!
目次