観光協会の案内所の職員が、観光施設・交通・イベントの資料を引き、窓口で聞かれた質問に根拠つきで答える
観光案内所の職員が窓口で聞かれた質問を入れると、施設とイベントの一覧を案内所からの距離と来訪日で絞って並べ、交通やイベントの質問には資料と協会のサイトのお知らせから根拠を引用した答えの下書きを作ります。職員が確かめて案内します。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- その他/宿泊/自治体
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/教育コスト削減/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 職員が窓口で質問を聞き、来訪の日と、行きたい場所の種類・条件を確かめる
- 施設の一覧の表計算を開き、種類で絞って、営業時間と定休日を1件ずつ見る
- 地図を開き、案内所からの距離を見て候補を選ぶ
- イベントや交通の質問なら、協会のサイトのお知らせと、交通事業者のPDFを開いて探す
- 分からないことはベテランの職員に聞くか、施設や交通事業者に電話で確かめる
- 旅行者に口頭で伝え、必要ならパンフレットに印を付けて渡す
- 人職員が窓口の端末に質問を入れ、来訪の日を選ぶ(既定は今日)
- 自動中継プログラムが、質問の種類を見て、施設を探す質問か、資料から答える質問かに分ける
- 自動施設を探す質問は、施設とイベントの一覧を、種類・案内所からの距離・来訪日で絞って検索し、一覧の項目をそのまま距離の順に並べる
- 自動資料から答える質問は、Agent Search(Vertex AI Search)の answer メソッドが、交通事業者の案内・パンフレット・協会のサイトから根拠を引用して下書きを作る
- 人職員が一覧と下書きを読み、根拠の日付と出どころを確かめて旅行者に伝える
- 人当日の運行や臨時の休館に関わるものは、事業者の発表を確かめてから伝える
- 人一覧や資料が古いと気づいたら、画面の「情報が違う」から報告し、担当の職員が直す
各工程の詳しい説明を読む
- 職員が窓口で質問を聞き、来訪の日と、行きたい場所の種類・条件を確かめる
- 施設の一覧の表計算を開き、種類で絞って、営業時間と定休日を1件ずつ見る
- 地図を開き、案内所からの距離を見て候補を選ぶ
- イベントや交通の質問なら、協会のサイトのお知らせと、交通事業者のPDFを開いて探す
- 分からないことはベテランの職員に聞くか、施設や交通事業者に電話で確かめる
- 旅行者に口頭で伝え、必要ならパンフレットに印を付けて渡す
(a)表計算と地図を行き来する。 種類で絞った一覧には距離が無く、地図で1件ずつ場所を見ながら候補を選びます。 その間、窓口の後ろに列ができます。
(b)資料が3か所に分かれている。 イベントはサイト、臨時便はPDF、施設はパンフレットと表計算。どこに書いてあるかを知っているのはベテランで、 臨時の職員は聞くまで分かりません。
(c)並びが職員の好みで変わる。 よく知っている店や、話しやすい施設から先に案内しがちです。加盟施設からも、非加盟の施設からも「紹介が偏っている」と言われることがあります。
(d)古い情報を案内してしまう。 冬の間だけの定休日、改装中の休館、終わったイベント。表計算の書き換えが追いつかず、職員が気づかないまま案内することがあります。
- 【人】 職員が窓口の端末に質問を入れ、来訪の日を選ぶ(既定は今日)
- 【自動】 中継プログラムが、質問の種類を見て、施設を探す質問か、資料から答える質問かに分ける
- 【自動】 施設を探す質問は、施設とイベントの一覧を、種類・案内所からの距離・来訪日で絞って検索し、一覧の項目をそのまま距離の順に並べる
- 【自動】 資料から答える質問は、Agent Search(Vertex AI Search)の answer メソッドが、交通事業者の案内・パンフレット・協会のサイトから根拠を引用して下書きを作る
- 【人】 職員が一覧と下書きを読み、根拠の日付と出どころを確かめて旅行者に伝える
- 【人】 当日の運行や臨時の休館に関わるものは、事業者の発表を確かめてから伝える
- 【人】 一覧や資料が古いと気づいたら、画面の「情報が違う」から報告し、担当の職員が直す
3番目で、一覧の項目をAIに書き直させません。 営業時間は一覧に入っている文字のまま出します。時刻の写し間違いが起きる段階を、そもそも作らないためです。
2番目の振り分けに迷う質問は、両方を出します。 「祭りの日に開いている飲食店」は、イベントの資料と施設の一覧の両方が要ります。
02今回想定するシステム構成
施設とイベントの一覧(表計算から書き出し) 交通事業者の案内・パンフレット(PDF) 協会のサイト │ 位置(緯度・経度)・種類・営業日・期間 │ 季節・発行日 │ ドメイン確認 ▼ ▼ ▼ 構造化データのデータストア 非構造化データのデータストア ウェブサイトのデータストア │ (アプリA:一覧の検索) └──────(アプリB:資料からの答え)──────┘ ▼ 窓口の端末 ──【トリガー】職員が質問を入れる ▼ 中継プログラム(Python、Cloud Run) ├──▶ 施設を探す:アプリAの search メソッド(距離・種類・日付で絞る)→ 距離の順に並べる └──▶ 資料から答える:アプリBの answer メソッド(引用付き) ▼ 職員の画面(一覧、下書き、根拠の日付と出どころ)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の search メソッドと answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、窓口の端末・2つのアプリ・報告の受付をつなぐ) | Node.js で同じものを書く |
| 保管 | Cloud Storage(一覧の書き出し、PDF、質問と答えの記録) | ─ |
旅行者が直接使う画面は作りません。 使うのは案内所の職員だけで、旅行者に伝えるのは職員です。旅行者には年齢を問わず多くの人がいますが、生成された文が旅行者に直接届く経路が無い設計にします。
アプリを2つに分けるのは、データの形が違うからです。 施設とイベントは項目のそろった表で、位置や日付で絞りたいものです。公式のドキュメントでは、構造化データのスキーマに geolocation(緯度と経度、または住所)と datetime の型を持たせられ、索引可能にした項目で絞り込めます。絞り込みの構文には、位置の項目が指定の地点から何メートル以内かを見る GEO_DISTANCE があります。
資料のアプリは、複数のデータストアをつないだアプリ(ブレンド検索)にします。 公式では、ブレンド検索はアプリを作るときに2つ以上のデータストアを選ぶ必要があり、1つで作ると後から足せません。ウェブサイトのデータストアをブレンド検索に入れるには、高度なウェブサイトのインデックス登録(advanced website indexing)が要り、それにはドメインの確認が要ります。 協会のサイトは協会のドメインなので確認でき、施設や交通事業者のサイトは入れられません。
03どうやって実装するのか
処理の起点を決める
起点は、職員が窓口の端末に質問を入れて送ることです。 端末の画面には、質問の欄、来訪の日(既定は今日)、起点(既定は案内所。駅の東口、城の大手門など、よく聞かれる起点を選べる)を置きます。電話の質問も、職員が同じ画面に入れます。
もう一つのトリガーは、情報の更新です。
| 更新されるもの | きっかけ | 反映のしかた |
|---|---|---|
| 施設の一覧 | 職員が表計算を直した | 毎晩、表計算を書き出して構造化データを取り込み直す |
| イベントの一覧 | 職員がイベントを登録した | 同上 |
| 交通事業者の案内・パンフレット | 新しいPDFが届いた | 職員が所定のフォルダに置き、毎晩取り込む |
| 協会のサイトのお知らせ | サイトに記事を載せた | 載せた直後に、そのページの再クロールを依頼する |
協会のサイトのお知らせは、載せた直後に再クロールを依頼します。 公式では、高度なインデックス登録のデータストアで recrawlUris を呼ぶと、指定したページを取り直します。呼び出しは1つのプロジェクトで1日20回まで、1回に1万ページまでで、24時間で打ち切られます。台風の日の臨時休館のように1日に何度も更新するお知らせは、数回分をまとめて依頼します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問 | 職員が入れた文、来訪の日、起点 | 窓口の端末 |
| 施設の一覧 | 名前、種類、位置(緯度・経度)、営業時間、定休日、臨時の休業の期間、料金、外国語の対応、最後に確かめた日、確かめた方法 | 協会の表計算 |
| イベントの一覧 | 名前、会場の位置、開催の期間、時間、交通規制の有無、主催者 | 協会の表計算 |
| 交通事業者の案内 | 時刻表、臨時便、う回の案内、発行日、対象の期間 | 交通事業者から届いたPDF |
| パンフレット | 地域の見どころ、散策のコース、季節の案内 | 協会のPDF |
| 協会のサイト | お知らせ、イベントの案内のページ | 協会のドメイン |
質を決めるのは、施設の一覧の「最後に確かめた日」と「確かめた方法」です。 加盟施設の届け出、職員の電話、施設の公式サイト。画面には営業時間と並べて必ず出し、確かめてから90日を過ぎたものには印を付けます。
加盟の有無は一覧に持たせますが、検索の並びには使いません。 一覧の列として持つのは、更新の依頼を誰に出すかを決めるためです。
データの取得方法を決める
施設とイベントの一覧は、表計算から毎晩 JSON に書き出して、構造化データとして取り込みます。 位置の項目は、緯度と経度の組にします。公式では、取り込むデータが緯度と経度の数を持つ組か住所の文字列なら geolocation として検出され、検出を切るとただの組として扱われます。住所の文字列で持つと位置の解釈が揺れるので、緯度と経度で持たせ、スキーマで型を決めておきます。
{"id":"fac-0412","name":"甘味処 さくら","category":["cafe","sweets"],
"location":{"latitude":34.6851,"longitude":135.8048},
"open_time":"10:00-17:00(L.O.16:30)","closed_days":"水曜(祝日の場合は翌日)",
"closed_from":"2026-12-29T00:00:00+09:00","closed_to":"2027-01-03T23:59:59+09:00",
"languages":["en"],"checked_date":"2026-09-20T00:00:00+09:00","checked_by":"phone"}
公式では、絞り込みや並べ替えに使う項目は索引可能(indexable)にする必要があり、索引可能にできる項目は50個まで、検索結果で返す(retrievable)項目も50個までです。
施設を探すときは、search メソッドに次のような絞り込みを付けます。 公式の構文では、位置の項目に GEO_DISTANCE(緯度, 経度, メートル) を書け、日時の項目を ISO 8601 の文字列と比べられ、NOT で否定できます。
location: GEO_DISTANCE(34.6828, 135.8020, 1200)
AND category: ANY("cafe","sweets")
AND NOT (closed_from <= "2026-10-15T12:00:00+09:00"
AND closed_to >= "2026-10-15T12:00:00+09:00")
「歩いて15分」は、中継プログラムが1,200メートルに置き換えます。 直線の距離なので、川や線路で回り道になる場所は実際より近く出ます。画面には「直線の距離」と書きます。
search メソッドは一覧の項目をそのまま返すので、施設の行はAIの文を通りません。 返す項目は、名前、営業時間、定休日、臨時の休業の期間、外国語の対応、最後に確かめた日と方法に絞り、retrievable にしておきます。
定休日の曜日は、絞り込みではなく画面で見せます。 「水曜(祝日の場合は翌日)」のような書き方は、項目で正しく表すのが難しいからです。来訪の日の曜日と祝日を画面の上に出し、職員が定休日の欄と見比べます。
資料のアプリは、answer メソッドで呼びます。 交通事業者の案内とパンフレットはPDFのまま非構造化データとして、協会のサイトはウェブサイトのデータストアとして入れます。サイトのデータストアには、検索結果のページのような動的な URL を最初から除外します。 公式は、除外し忘れると索引が膨らんで費用が増え、その分は返金されないと注意しています。
AIへ渡す前に整形する
- 質問を振り分ける … 「近く」「開いている」「おすすめの店」など施設の種類を探す言葉なら一覧の検索、「バス」「電車」「規制」「何時まで」など交通とイベントの言葉なら資料の答えにします。両方の言葉があれば両方を呼びます
- 起点と距離を数にする … 起点の名前を緯度・経度に、「歩いて◯分」を1分80メートルでメートルに直します
- 来訪の日を付ける … 資料の答えの質問文の先頭に、来訪の日と曜日を付けます
- 終わった資料を外す … 対象の期間が過ぎた交通事業者の案内は、毎晩の取り込みの前に保管用のフォルダに移し、データストアから消します
- 協会のサイトの robots.txt を確かめる … 公式は、robots.txt で Google のクローラーを止めていると取り込めないので、許可するよう求めています
4番目で、終わった臨時便の案内を消すのは、去年の同じ祭りの案内が引かれるのを防ぐためです。 毎年同じ名前のイベントは、資料の文面もよく似ています。期間で絞る代わりに、期間が過ぎたものを置かない運用にします。
AIに処理させる
AIに文を作らせるのは、資料から答える質問だけです。 施設を探す質問では、AIは使いません。
| させること | 中身 |
|---|---|
| 根拠を引用する | 時刻・乗り場・規制の範囲を、資料の文のまま |
| 出どころと日付を示す | 交通事業者の案内か、協会のお知らせか、パンフレットか。発行日・掲載日 |
| 来訪の日に当てはまるかを書き分ける | 資料の対象の期間と来訪の日が重なるか |
| 当日の確認が要るものを示す | 天候や混雑で変わると資料に書かれているもの |
| させないこと | 理由 |
|---|---|
| 時刻や料金を計算・推定する | 1本前・1本後の便を作ってしまう |
| 施設をおすすめする | 案内所は公平な立場で案内する |
| 資料に無い行き方を作る | 一般的な地図の知識で答えると、規制の日に案内を誤る |
| 当日の運行を「平常どおり」と言う | 当日の情報は事業者の発表で確かめる |
2つ目は、JNTOの外国人観光案内所の認定の区分にも関わります。 JNTOの説明では、観光案内を専業としないパートナー施設についても「公平・中立な立場で地域の案内を提供」することが基準に挙がっています。案内所の答えに「おすすめ」を入れるかどうかは職員が決め、AIの下書きには入れません。
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 根拠に出典を付ける(既定は無効) |
ignoreLowRelevantContent | 有効 | 関係の薄い資料で答えない |
groundingSpec.filteringLevel | FILTERING_LEVEL_HIGH | 根拠の弱い下書きを出さない |
promptSpec.preamble | 下の指示 | 答え方の規則を与える |
relatedQuestionsSpec | 無効 | 窓口で関連の質問を出しても使わない |
指示内容を固定する
answer メソッドの promptSpec.preamble に、次の指示を入れます。中継プログラムは、来訪の日、曜日、起点を質問の文の先頭に付けます。
あなたは観光協会の観光案内所で、職員が旅行者の質問に答えるための
下書きを作る立場です。読むのは職員で、旅行者に伝える前に必ず
根拠の資料を確かめます。
【前提】
質問の文の最初に、来訪の日、曜日、起点が書かれています。
検索の対象は、交通事業者の案内、協会のパンフレット、協会の
サイトのお知らせです。
【答え方】
1. 質問に当たる時刻・乗り場・規制の範囲を、資料の文のまま引用する
2. 引用ごとに、出どころ(交通事業者/協会のお知らせ/パンフレット)
と、発行日または掲載日を書く
3. 資料の対象の期間と来訪の日が重なるかを書く。重ならなければ
「来訪の日の情報は見つかりませんでした」と書く
4. 天候や混雑で変わると資料に書かれていれば、その文を引用する
5. 以上を、職員が窓口で読み上げやすい、短い文にまとめる
【厳守事項】
- 時刻や料金を計算したり、資料に無い便を推定したりしないでください。
- 施設や店をおすすめしないでください。
- 資料に無い行き方、乗り換えを書かないでください。
- 当日の運行や開館を「平常どおり」「問題なく」と書かないでください。
- 去年の同じイベントの資料しか見つからないときは、
その資料の年を書き、今年の情報ではないと書いてください。
- 根拠が見つからないときは、
「資料で確認できませんでした」とだけ書いてください。
「去年の資料しか見つからないとき」を明記しないと、AIは去年の時刻を今年のものとして答えます。 前処理で終わった資料を外していても、外し忘れは起きます。年を書かせておけば、職員が読んで気づけます。
出力形式を固定する
中継プログラムが、2つの道の結果を次の形にまとめます。
{
"query_id": "",
"visit_date": "",
"origin": "",
"route": "facility | document | both",
"facilities": [
{ "id": "", "name": "", "distance_m": 0, "open_time": "", "closed_days": "",
"closed_today": false, "languages": [], "checked_date": "", "checked_by": "",
"stale": false }
],
"answer": { "text": "", "citations": [ { "source_kind": "operator | association | pamphlet",
"title": "", "published_date": "", "quote": "", "uri": "" } ],
"skipped": "" },
"flags": []
}
施設の並びは、distance_m の小さい順だけです。 search メソッドの返り値に含まれる位置から、中継プログラムが起点からの直線の距離を計算して並べ直します。検索の関連度の順は使いません。 並べ方が職員から説明できる形にするためです。
stale は、checked_date から90日を過ぎたものに立てます。 画面ではその行の色を変え、「最後に確かめた日」を目立たせます。
flags | 立てる条件 |
|---|---|
same_day_check | 引用に天候・混雑で変わる旨の文がある、または臨時便・規制の資料が引かれた |
old_year | 引用した資料の対象の期間が、来訪の日の年と違う |
promo_words | 下書きに「おすすめ」「人気」「一押し」などの語がある(語を消して職員へ) |
skipped | answerSkippedReasons が返った |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 窓口の端末 | 中継プログラムの画面 | 質問、来訪の日、起点を受け取り、一覧と下書きを返す |
| アプリA(施設とイベント) | search メソッド | 距離・種類・日付で絞った一覧 |
| アプリB(資料) | answer メソッド | 引用付きの下書き |
| 協会のサイト | recrawlUris | お知らせを載せた直後に取り直す |
| 情報の報告 | 画面のボタンから表計算に1行足す | 職員が気づいた古い情報を担当へ |
情報の報告は、そのまま一覧を直しません。 担当の職員が施設に確かめてから表計算を直し、checked_date と checked_by を書きます。
人が確認する
旅行者に伝えるのはいつも職員で、当日の情報は事業者の発表で確かめます。
- 日付と出どころを見る … 一覧の「最後に確かめた日」、下書きの発行日・掲載日を見ます
same_day_checkは事業者の発表を確かめる … 交通事業者の運行情報、施設のお知らせを開きます- 英語で伝えるときも、日本語の下書きの数字で伝える … 時刻や料金は、引用の数字を見ながら伝えます
staleの施設は電話で確かめるか、そう伝える … 時間があれば施設に電話し、無ければ「◯月◯日時点の情報です」と添えて伝えます
2番目は、繁忙期ほど省かれがちです。 列ができていても、臨時便と規制だけは確かめてから伝えます。
臨時の職員には、最初の1週間、ベテランが隣で画面の読み方を教えます。 見るのは答えの文ではなく、出どころと日付の欄です。ここを読む癖がつけば、ベテランと同じ根拠で答えられるようになります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 起点を緯度・経度に直せない | 案内所を起点にし、画面に「起点:案内所」と出す |
| 条件に合う施設が0件 | 距離を倍にして再検索し、「1.2km以内には無く、2.4km以内の結果です」と出す |
| 来訪の日の資料が無い | 「来訪の日の情報は見つかりませんでした」と出し、事業者への確認を勧める |
| 協会のサイトの再クロールが1日の上限に達した | 翌日に回し、そのお知らせを職員の画面の上に固定で出す |
| 下書きに「おすすめ」などの語が出た | 語を消し、promo_words で職員へ |
| 英語で答える必要がある | 日本語の下書きを先に確かめ、要るときだけ answerLanguageCode に en を入れて英語の下書きを作り直す。時刻と料金は日本語の引用の数字で伝える |
| 施設が一覧に無い(新しく開いた店など) | 「一覧にありません」と出し、職員が報告のボタンで担当に知らせる |
| 来訪の日が先すぎる(数か月先) | 臨時便やイベントの資料はまだ無いことが多い。「時期が近づいてから確かめてください」と添える |
| 検索の呼び出しが失敗した | 職員が従来どおり表計算と資料を開く |
記録を残す
- 質問、来訪の日、起点、振り分けの結果
- search メソッドの絞り込みの条件と、返った施設の一覧
- answer メソッドの返り値の全文(
answerText、citations、answerSkippedReasons) flags、職員が押した「情報が違う」の報告と、その後の修正- 質問の言葉の集計(多く聞かれる施設の種類・イベント・交通)
最後の行は、パンフレットとサイトを直す材料になります。 同じ質問が毎日来るなら、案内所の掲示かサイトのお知らせで先に答えられます。
「情報が違う」の報告は、施設ごとの件数を月に一度数えます。 同じ施設の報告が続くなら、その施設との更新の連絡の取り方を見直します。加盟施設なら届け出の様式、非加盟の施設なら職員が確かめる周期を決め直します。
04実装レベルの3段階
最小構成でも、施設の質問はかなり速くなります。 緯度と経度の列を足すだけで、表計算で距離の順に並べられるからです。 半自動化で、5分が3分程度になります。 資料を探す時間は減りますが、起点や距離を職員が打ち込む手間と、協会のサイトが検索に入っていない分の確認が残ります。本格構成で2分になり、この段階が本記事の想定です。
05工数削減シミュレーション
導入後 1,500件 × 2分 ÷ 60 = 50 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 駅前や観光地の中心で観光案内所を運営し、窓口と電話で毎日数十件の質問を受けている観光協会・観光の公社・自治体の観光の窓口。観光施設・飲食店・宿の加盟も非加盟も含めて案内し、案内の公平さが求められる場合。季節のイベントや臨時のバスが多く、パンフレットと協会のサイトと交通事業者の案内が別々にある場合。案内の質がベテランの職員の記憶に頼っていて、季節の臨時の職員が多い場合。
- 質問の数が少なく、職員全員が地域の情報を把握している小さな案内所。旅行者が自分で使うチャットを作りたい場合(この構成は職員が使い、職員が確かめてから案内する前提です)。宿や施設の予約・販売までを窓口で完結させたい場合(予約の仕組みの話です)。協会が自分のサイトのドメインを確認できず、サイトのお知らせを検索に入れられない場合。
07最小構成で試す方法
- 施設の一覧から、よく聞かれる種類(食事、甘味、土産、トイレ、コインロッカー)の100件を選び、表計算に緯度・経度の列を足す
- 過去1か月の窓口の質問から30件を選ぶ(祭りの日の交通、臨時休館、定休日の祝日の扱いを数件入れる)
- 施設の質問は、表計算の絞り込みと並べ替えだけで、距離と営業日で選べるかを試す
- 交通とイベントの質問は、手元のAIサービスに交通事業者の案内とお知らせを貼り、第7章の指示で答えを作らせる
- 当時の職員の答えと突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 表計算の絞り込みで施設の候補が出せた | 一覧の検索はAIを使わずに作れる |
| 交通の答えが資料の時刻のまま出た | 資料のアプリの取り込みに進む |
| 去年の時刻を今年として答えた | 終わった資料を置かない運用と、年を書かせる指示が要る |
| 「おすすめ」を書いた | 語の照合を最初から作る |
1行目が出たら、それで構いません。 施設を探す半分の質問はAIの生成なしで答えられる、ということが分かります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 去年のイベントの時刻を答える | 期間の過ぎた資料を置かない。年を書かせる |
| 加盟施設ばかりが上に出る | 並びは距離の順だけにし、関連度や加盟の有無を使わない |
| 直線の距離で近く見えるが、実際は遠い | 画面に「直線の距離」と書く。川や線路を越える起点は職員が補う |
| 定休日の祝日の扱いを誤る | 定休日は絞り込みに使わず、来訪の日の曜日と祝日を画面に出す |
| 協会のサイトの変更が反映されない | 載せた直後に recrawlUris を呼ぶ。上限に達したら画面に固定で出す |
| 施設のサイトを検索に入れようとして入らない | 高度なインデックス登録はドメインの確認が要る。施設の情報は一覧に書き写す |
| 動的な URL が索引に入り費用が膨らむ | 作るときに除外の URL を設定する |
| 「おすすめ」が下書きに入る | 指示で禁じ、語の照合で消す |
上の2行が、案内所の信頼に直接ひびく失敗です。 去年の時刻は旅行者の帰りの足を、並びの偏りは地域の施設との関係を損ないます。どちらも、AIの外の運用と並べ方の規則で防ぎます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 施設とイベントの一覧、交通事業者の案内、パンフレット、協会のサイトの公開の情報、職員が入れた質問の文です。旅行者の名前や連絡先は扱いません。
- 旅行者に直接使わせない … 生成された文が旅行者に直接届く画面は作りません。旅行者には子どもや未成年の人も含まれるので、職員だけが使う道具にとどめます
- 公平な並びを守る … 加盟の有無や広告の出稿で並びを変えないことを、協会の規程として決めておきます。並べ方の規則を職員が説明できる形にします
- 質問の文に個人の情報を入れない … 旅行者の名前や泊まっている宿の部屋番号は入れないよう、職員に伝えます
- 当日の情報を保証しない … 臨時便、規制、臨時休館は、事業者の発表が正です。この構成の答えは、資料に書かれていることまでです
- データの置き場所を確かめる … データストアの場所は
global・us・euから選びます。扱うのは公開の情報が中心ですが、職員の質問の記録をどこに置くかは協会の規程で決めます
誤りが起きた場合のリスクは、終わった時刻や古い営業日を旅行者に伝え、旅行者が困ることと、案内の偏りで地域の施設の信頼を失うことです。 前者は資料の運用と年の表示で、後者は距離の順の並べ方で防ぎます。
10まず何から始めるか
1週目:施設の一覧に位置と確認日をそろえる
よく聞かれる種類の施設から100件、緯度・経度、最後に確かめた日、確かめた方法を表計算に足します。加盟の有無の列は残しますが、並べ替えに使わないことを職員で確かめます。
2週目:30件で試す
表計算の絞り込みで施設の質問を、手元のAIサービスで交通の質問を試します。去年の時刻を答えていないか、「おすすめ」を書いていないかを最優先で見ます。
3週目:協会のサイトのドメインを確かめ、データストアを作る
協会のサイトのドメインの確認を済ませ、robots.txt を見直し、除外する動的な URL を決めます。施設とイベントの構造化データ、資料、サイトのデータストアを作ります。
4週目:職員が簡単な検索の画面で使う
簡単な検索の画面で、職員が施設と資料を検索して窓口で使います。「情報が違う」と気づいたものを毎日集めます。
2か月目: 窓口の端末の画面、振り分け、距離の順の並べ直し、再クロールの依頼を作ります。3か月目以降: 残りの施設を一覧に足します。施設の「最後に確かめた日」が90日以内にそろい、お知らせを載せたその日に案内所の答えが変わる状態になった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドの includeCitations(既定は false)、ignoreLowRelevantContent、promptSpec.preamble、groundingSpec の filteringLevel、answerSkippedReasons、relatedQuestionsSpec、答えの言語を BCP47 の言語タグで指定する answerLanguageCode。ウェブサイトのデータストアで答えの機能を使うには高度なインデックス登録が要ること | Google Cloud: Get answers and follow-ups | 2026-10-15 |
絞り込みの構文で、位置の項目に GEO_DISTANCE(緯度, 経度, メートル) を書けること、日時の項目を ISO 8601 の文字列と比べられること、ANY()・AND/OR/NOT と括弧が使えること | Google Cloud: Filter custom search for structured or unstructured data | 2026-10-15 |
スキーマの型に geolocation と datetime があり、緯度と経度の組または住所の文字列が geolocation として検出されること。indexable・retrievable にできる項目がそれぞれ50個までであること | Google Cloud: Provide or auto-detect a schema | 2026-10-15 |
| ブレンド検索はアプリの作成時に2つ以上のデータストアを選ぶ必要があり、1つで作ると後から足せないこと。ウェブサイトのデータストアをブレンド検索に使うには高度なインデックス登録が要ること | Google Cloud: Create a data store and ingest data | 2026-10-15 |
高度なインデックス登録のデータストアで recrawlUris により指定のページを取り直せること、1つのプロジェクトで1日20回まで、1回に1万ページまで、24時間で打ち切られること、URI のパターンではなく個々のページを指定すること | Google Cloud: Refresh web pages using automatic and manual refresh | 2026-10-15 |
| ウェブサイトのデータストアの含める・除外する URL のパターンの数(基本の検索は50、高度なインデックス登録は500)、動的な URL を除外すること、除外し忘れによる索引の費用は返金されないこと、robots.txt でクローラーを許可する必要があること | Google Cloud: Prepare data for ingesting | 2026-10-15 |
データストアの場所が global・us・eu で、日本のリージョンが無いこと | Google Cloud: Locations | 2026-10-15 |
| JNTO が観光庁の「外国人観光案内所の設置・運営のあり方指針」(令和5年3月改定)に基づき認定制度を運用し、カテゴリー1〜3とパートナー施設に分けていること。パートナー施設の基準に「公平・中立な立場で地域の案内を提供」とあること | 日本政府観光局(JNTO): 外国人観光案内所の認定 | 2026-10-15 |
案内の内容は、施設・交通事業者・主催者の発表を正としてください。 本記事は Google Cloud の公式ドキュメントと JNTO の公開ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1713)についてのご相談はこちらから。
