管理会社の担当から出る建物の設備・仕様の質問に、物件ごとの竣工図書・設備の仕様書・修繕履歴を根拠にチャットで答える
管理担当から出る「このビルの給水方式は」「屋上の防水は何で、いつ改修したか」といった質問に、物件ごとの竣工図書・設備の仕様書・修繕履歴を検索して答えます。答えには図書の名前と該当箇所を必ず添えます。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- 不動産/宿泊/建設
- 対象部門
- 総務
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 管理担当がテナント・オーナーから設備の問い合わせを受ける
- ファイルサーバーの物件フォルダを開き、竣工図書のPDFを探す。紙だけの物件は書庫へ行く
- 目次や図面の一覧から当たりを付け、該当するページを探す
- 見つからなければ、技術担当にチャットで聞く
- 修繕の工事報告書を探し、竣工後に変わっていないかを確かめる(省かれることが多い)
- 問い合わせの相手へ答える
- 人管理担当が社内チャットのボットを開き、物件の一覧から物件を選んでから質問を書く
- 自動中継プログラムが、選ばれた物件の番号で検索の絞り込みを組み立てる
- 自動Vertex AI Search の answer メソッドが、その物件の図書と修繕履歴だけを検索して答えを作る
- 自動中継プログラムが、引用の位置から図書の名前・ページ・日付を取り出し、修繕履歴のほうが新しければ先に示す
- 自動答えが作られなかったとき、または判断を求める質問と分類したときは、技術担当の待ち行列に回す
- 人管理担当が引用の箇所を開いて確かめ、問い合わせの相手へ答える
- 人技術担当は、回ってきた質問だけを見て答え、その答えを記録する
各工程の詳しい説明を読む
- 管理担当がテナント・オーナーから設備の問い合わせを受ける
- ファイルサーバーの物件フォルダを開き、竣工図書のPDFを探す。紙だけの物件は書庫へ行く
- 目次や図面の一覧から当たりを付け、該当するページを探す
- 見つからなければ、技術担当にチャットで聞く
- 修繕の工事報告書を探し、竣工後に変わっていないかを確かめる(省かれることが多い)
- 問い合わせの相手へ答える
(a)図書のどこにあるかが分からない。 竣工図書は設計図、設備の仕様書、機器の承認図、試験成績書が1冊にまとまったものです。数百ページのPDFを、目次の無いまま上から見ていくことになります。
(b)技術担当2名に質問が集まる。 図書を探すより聞いたほうが早いので、管理担当40名の質問が2名に集まります。2名が休むと、答えが出るまで数日かかります。
(c)竣工時の値をそのまま答えてしまう。 5番目を省くと、20年前の竣工図書の防水仕様を、10年前に改修した後の今の仕様として答えることになります。 修繕の報告書は別のフォルダにあり、図書とつながっていません。
(d)別の物件の図書を開いてしまう。 同じオーナーの似た名前のビル、同じ設計事務所の同じ構成のマンション。フォルダを1つ取り違えると、値はもっともらしいまま全部違います。
- 【人】 管理担当が社内チャットのボットを開き、物件の一覧から物件を選んでから質問を書く
- 【自動】 中継プログラムが、選ばれた物件の番号で検索の絞り込みを組み立てる
- 【自動】 Vertex AI Search の answer メソッドが、その物件の図書と修繕履歴だけを検索して答えを作る
- 【自動】 中継プログラムが、引用の位置から図書の名前・ページ・日付を取り出し、修繕履歴のほうが新しければ先に示す
- 【自動】 答えが作られなかったとき、または判断を求める質問と分類したときは、技術担当の待ち行列に回す
- 【人】 管理担当が引用の箇所を開いて確かめ、問い合わせの相手へ答える
- 【人】 技術担当は、回ってきた質問だけを見て答え、その答えを記録する
1番目が、この設計の分かれ目です。 物件は質問の文章から推測しません。選んだ物件の番号を、検索の絞り込みにそのまま使います。 物件を選ばずに質問すると、検索は全物件の図書から似た箇所を探し、第3章(d)と同じ誤りを機械が起こします。
6番目で、引用の箇所を開いて確かめます。 テナントへの回答に数値を書く前に、図書のその箇所を目で見ます。全文を読む必要はなく、引用されたページを開くだけです。
02今回想定するシステム構成
竣工図書(PDF・スキャン)/設備の仕様書/修繕の工事報告書/設備台帳 │ 物件番号・図書の種類・日付・設備の区分をメタデータとして付ける ▼ Cloud Storage ── 図書のファイルとメタデータ(JSON Lines) ▼ Vertex AI Search(Agent Search)── レイアウト パーサーで読み取り・チャンク分割 ▲ │ answer メソッド(物件番号で絞り込み、引用つき) 中継プログラム(Cloud Run) ▲ ├──▶ 引用から図書名・ページ・日付を整える │ └──▶ 答えられない/判断の要る質問 → 技術担当の待ち行列 社内チャットのボット(物件を選んでから質問)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、チャット・検索・待ち行列をつなぐ) | Node.js で同じものを書く |
| 保管 | Cloud Storage(図書とメタデータ)、BigQuery(質問と回答の記録) | ─ |
ファイルサーバーと書庫の図書は、新しく足すものではありません。 足すのは、図書を Cloud Storage へ写し、1ファイルずつに物件番号と図書の種類を付ける作業です。紙だけの物件はスキャンが先に要ります。
中心になるのは、Vertex AI Search の answer メソッドです。 Google の公式ページでは、Vertex AI Search は Agent Search へ改称中とされています。answer メソッドは検索と回答の生成を1回の呼び出しで行い、答えの文章に引用(citations)と参照(references)を付けて返します。 参照には、根拠になったチャンクの本文と、文書の uri・title が入ります。
回答の生成に使うモデルは、answerGenerationSpec.modelSpec.modelVersion で指定できます。 公式ページのサンプルには、安定版として gemini-2.5-flash/answer_gen/stable が使われています。モデルの版が変わると答え方も変わるので、使った版を記録に残します。
図書の読み取りは、レイアウト パーサーで行います。 PDF の段落・表・見出しを検出し、スキャンした文書にはOCRをかけられます。仕様書の機器表や修繕報告書の仕様欄は表の形をしているので、表を表として読めることが効きます。 レイアウト パーサーは RAG 向けのチャンク分割を有効にしたデータストアでだけ選べ、チャンク分割の設定は、データストアを作った後に変えられません。
03どうやって実装するのか
処理の起点を決める
管理担当がボットで物件を選び、質問を送ったときに動きます。 物件の選択は一覧から行い、自由入力にしません。一覧には物件番号・物件名・所在地を並べ、似た名前の物件を所在地で見分けられるようにします。
同じ会話の続きの質問は、選んだ物件を引き継ぎます。 別の物件の質問に移るときは、選び直してもらいます。会話の途中で物件名が出てきても、絞り込みは変えません。
図書の側の更新も、別のきっかけで動かします。修繕の工事が完了して報告書が保存されたときに、その報告書にメタデータを付けて取り込みます。ここが止まると、第3章(c)がそのまま残ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 竣工図書 | 設計図、設備の仕様書、機器の承認図、試験成績書(PDF。スキャンを含む) | ファイルサーバー、書庫(スキャン) |
| 修繕の工事報告書 | 工事の名前、完了日、施工範囲、使った材料・機器の仕様 | ファイルサーバー |
| 設備台帳 | 物件ごとの主要な設備の型式・容量・設置年 | 表計算 |
| メタデータ | 物件番号、図書の種類、図書の日付、設備の区分(電気・給排水・空調・防水・建築) | 新しく作る一覧 |
| 質問 | 選んだ物件番号、質問の文章、質問者 | チャットのボット |
質を決めるのは、4行目のメタデータです。 物件番号が付いていなければ、物件で絞り込めません。図書の日付が付いていなければ、竣工時の値と修繕後の値を並べられません。AIの性能より先に、この一覧の正しさが答えの正しさを決めます。
設備台帳は表計算のまま取り込みます。 型式や容量は台帳がいちばん新しいことが多いからです。ただし台帳は誰がいつ更新したかが分からないことがあり、図書の日付と並べて示します。
データの取得方法を決める
図書は Cloud Storage に物件ごとのフォルダで写し、メタデータは JSON Lines のファイルで渡します。 1行が1ファイルで、id、structData(物件番号などの項目)、content(mimeType と uri)を持たせます。
{"id": "B0123-as-built-elec-01", "structData": {"building_id": "B0123", "doc_type": "as_built", "doc_date": "2006-03-20", "discipline": "electrical"}, "content": {"mimeType": "application/pdf", "uri": "gs://bucket/B0123/as_built_elec_01.pdf"}}
| 項目 | 値の例 | 使い道 |
|---|---|---|
building_id | B0123 | 検索の絞り込み(必須) |
doc_type | as_built(竣工図書)/repair(修繕報告)/ledger(設備台帳) | 回答の並べ方 |
doc_date | 2006-03-20 | 竣工時か修繕後かの判定 |
discipline | electrical/plumbing/hvac/waterproofing/building | 質問の分野での絞り込み |
絞り込みに使う項目は、スキーマで「インデックス可能」にします。 公式ページでは、インデックス可能にしても絞り込みに使えることが保証されるわけではないとされています。取り込んだ後に、物件番号の絞り込みが効くことを必ず試してください。 1ファイルの上限は200MBです。それを超える竣工図書は、分野ごとに分けて写します。
検索の呼び出しでは、searchSpec.searchParams.filter に building_id: ANY("B0123") を入れます。 物件番号はボットで選ばれた値をそのまま入れ、質問の文章から作りません。
AIへ渡す前に整形する
- 紙の図書のスキャン … 300dpi 程度を目安にPDFにします。図面の寸法や容量の文字は小さいので、既定の設定では読めないことがあります
- 大きなPDFの分割 … 1ファイル200MBを超えるものは、電気・給排水などの分野ごとに分けます
- メタデータの付与 … 1ファイルずつ物件番号・図書の種類・日付・分野を付けます。日付は図書の表紙か報告書の完了日から取り、ファイルの更新日時を使いません
- データストアの設定 … チャンク分割を有効にし、既定のパーサーをレイアウト パーサーにします。
includeAncestorHeadingsを有効にし、チャンクに上位の見出しを付けます - 取り込み … Cloud Storage からインポートします。フォルダの中は再帰的に取り込まれます
- 絞り込みの確認 … 物件を1つ選んで検索し、別の物件の図書が1件も混ざらないことを確かめます
4番目の見出しの付与は、図書の構成に効きます。 仕様書の途中のチャンクは「容量 75kVA」のような行だけになりがちです。上位の見出し(「受変電設備」「変圧器」)が付いていないと、何の容量かが分からないチャンクになります。
チャンクの大きさは100〜500トークンで、既定は500です。 機器表のように1行ずつ意味が完結する図書が多いので、既定のまま始め、引用が細切れすぎるかどうかを見て決めます。
AIに処理させる
させるのは、選んだ物件の図書から質問に当たる記載を探し、書かれている値を引用つきで答えることだけです。
| 質問の型 | 答え方 | 回す先 |
|---|---|---|
| 仕様を知りたい(給水方式、防水の工法、空調の方式) | 図書の記載をそのまま答え、図書名・ページを添える | ─ |
| 数値を知りたい(受変電の容量、配管の口径、床の積載荷重) | 図書の値をそのまま答え、図書の日付を添える | ─ |
| 竣工後の変更を知りたい(いつ改修したか) | 修繕報告を新しい順に並べる | ─ |
| 可否を知りたい(増設してよいか、置いてよいか) | 答えない。 関係する図書の箇所だけを示す | 技術担当 |
| 図書に無い | 「図書に記載が見つからない」と答える | 技術担当 |
4行目が、この構成の線引きです。 増設の可否は、図書の値に加えて現在の使用状況や法令の確認が要ります。図書の値を示すところまでは答え、可否の判断は技術担当へ回します。
| させないこと | 理由 |
|---|---|
| 物件の推測 | ボットで選んだ物件番号で検索を絞る |
| 値の換算・合算 | 容量の残りや荷重の合計は、技術担当が計算する |
| 竣工時の値を現況と言い切る | 修繕で変わっていることがある。図書の日付を必ず付ける |
| 図書に無い値の補完 | 一般的な仕様や他の物件の値で埋めない |
| 可否の判断 | 現在の使用状況と法令の確認が要る |
2行目がいちばん起きやすい失敗です。 「変圧器が75kVAで、現在の契約が50kVAなら残りは25kVA」と答えたくなりますが、残りの容量は機器の構成と実際の負荷で決まります。 計算させず、値と出典だけを返させます。
指示内容を固定する
answer メソッドの answerGenerationSpec.promptSpec.preamble に、次の指示を入れます。
あなたは建物管理会社の図書係です。管理担当からの建物の仕様の質問に、
検索された図書の記載だけを根拠に答えてください。
【答え方】
- 図書に書かれている値と記載を、そのまま答えてください。
数値は単位も含めて、図書の表記どおりに写してください。
- 答えの各文には、根拠にした図書の引用を付けてください。
- 竣工図書と修繕の工事報告書の両方に記載がある場合は、
日付の新しいほうを先に書き、古いほうを「竣工時の記載」として後に書いてください。
- 竣工図書の値だけが見つかった場合は、文末に
「竣工時の図書の記載です。その後の改修の有無は確認できていません」と書いてください。
【してはいけないこと】
- 数値の計算をしないでください。容量の残り、荷重の合計、
単位の換算をしないでください。
- 図書に書かれていない値を、一般的な仕様や推測で答えないでください。
見つからないときは「図書に記載が見つかりませんでした」とだけ答えてください。
- 増設・設置・変更をしてよいかという質問には、可否を答えないでください。
「可否の判断は技術担当が行います」と書き、関係する記載だけを示してください。
- 物件名や物件番号が質問に出てきても、それを理由に別の物件の話をしないでください。
「単位も含めて図書の表記どおり」を書くのは、図書の単位が年代で違うからです。 古い図書には kgf/m² のような旧い単位が残っていることがあり、換算されると、元の図書と突き合わせられなくなります。
呼び出しの他の指定は次のとおりです。
| 指定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 答えの各文に引用を付ける |
ignoreLowRelevantContent | 有効 | 関連する内容が無いときに、無理に答えを作らせない |
groundingSpec の filteringLevel | FILTERING_LEVEL_HIGH | 根拠づけの弱い答えを出さない |
searchSpec.searchParams.maxReturnResults | 既定の10から始める(上限25) | 竣工図書と修繕報告の両方を拾える件数にする |
answerLanguageCode | 日本語 | 答えの言語をそろえる |
3行目の FILTERING_LEVEL_HIGH は、数値を答える構成には欠かせません。 根拠づけの基準を満たさない答えは、LOW_GROUNDED_CONTENT として答えが出ません。答えが出ない件数は増えますが、それは技術担当に回る件数として見えます。 根拠の弱い数値がテナントに届くより、ずっと扱いやすい失敗です。
出力形式を固定する
answer メソッドの応答から、中継プログラムが次の形に組み直してチャットへ返します。
{
"building_id": "B0123",
"answer_text": "",
"skipped": false,
"skipped_reasons": [],
"sources": [
{
"title": "",
"uri": "",
"doc_type": "as_built | repair | ledger",
"doc_date": "",
"quote": ""
}
],
"newer_repair_exists": false,
"route_to_engineer": false,
"route_reason": ""
}
1つ目の理由は、skipped と skipped_reasons で「答えなかった」ことを明示できることです。 answer メソッドは、関連する内容が無いとき NO_RELEVANT_CONTENT を、根拠づけの基準を満たさないとき LOW_GROUNDED_CONTENT などを answerSkippedReasons に返します。これらが返ったものは、答えとして表示せず技術担当へ回します。
2つ目は、doc_date で竣工時と修繕後を並べ直せることです。 引用の referenceId から参照を引き、参照の文書からメタデータの日付を取ります。同じ分野の修繕報告が竣工図書より新しければ newer_repair_exists を立て、答えの冒頭に出します。
3つ目は、引用の位置の扱いです。 citations の startIndex と endIndex は、文字数ではなく UTF-8 のバイト数で返ります。日本語は1文字が複数バイトなので、文字の位置として使うとずれます。答えの文に引用の印を差し込むときは、バイト列で切ってから文字に戻します。
| 状態 | チャットでの見せ方 |
|---|---|
| 答えがあり、修繕報告も引用されている | 修繕報告の記載を先に、竣工時の記載を後に |
| 答えがあり、竣工図書だけ | 文末に「竣工時の記載」と明示 |
skipped が true | 「図書に記載が見つかりません。技術担当に回しました」 |
route_to_engineer が true | 関係する記載を示し、「可否は技術担当が答えます」 |
チャットに表示する答えの例です。
【物件】B0123 〇〇ビル(〇〇区〇〇町)
【答え】
屋上の防水は、2016年の改修工事で塩ビシート防水の機械的固定工法に
改修されています。[修繕報告:屋上防水改修工事 完了報告書 p.3/2016-11-30]
竣工時の記載は、アスファルト防水の露出工法です。
[竣工図書:建築仕様書 p.12/2006-03-20]
【確認してください】
引用のページを開いて、工法と範囲を確かめてから回答してください。
物件名と所在地を答えの先頭に必ず出すのは、第3章(d)の対策です。 管理担当が問い合わせの物件と見比べられるよう、答えの中身より先に、どの物件の答えかを見せます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 社内チャット | ボット(利用中のチャットの仕組みに合わせて個別実装) | 物件の選択、質問の受付、答えの表示 |
| Vertex AI Search | answer メソッド(servingConfigs/default_search:answer) | 物件で絞った検索と回答の生成 |
| Cloud Storage | 図書とメタデータの保管 | 取り込み元 |
| 技術担当の待ち行列 | 表または課題管理の仕組み | 答えられない質問、可否の質問 |
| BigQuery | 記録の書き込み | 質問・答え・引用・回し先 |
中継プログラムは、検索の絞り込みを組み立てる唯一の場所です。 チャットから受けた物件番号を filter に入れ、質問の文章は query にだけ渡します。 物件番号を質問の文章に混ぜて検索に任せると、似た名前の物件の図書が上位に来ることがあります。
判断を求める質問の見分けは、中継プログラムで行います。 「してよいか」「置けるか」「足りるか」などの言い回しを辞書で拾い、route_to_engineer を立てます。拾い漏れがあっても、指示で可否を答えさせないので二重の守りになります。
人が確認する
管理担当は、テナントやオーナーへ数値を答える前に、引用の箇所を開いて確かめます。 ボットの答えをそのまま転記しません。
- 物件を確かめる … 答えの見出しに出る物件名と所在地が、問い合わせの物件と合っているか
- 図書の日付を確かめる … 竣工時の記載だけなら、修繕で変わっていないかを相手に断るか、技術担当に確かめる
- 引用の箇所を開く … 数値は図書のそのページで目で見る
技術担当が見るのは、回ってきた質問だけです。 答えを書いたら、その答えと根拠にした図書の箇所を記録に残します。同じ質問が別の担当から来たとき、記録が次の答えの材料になります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 物件が選ばれていない | 質問を受け付けず、物件の選択に戻す |
| その物件の図書が1件も取り込まれていない | 検索しない。「この物件の図書は未登録です」と返し、総務へ通知 |
NO_RELEVANT_CONTENT が返る | 答えを表示せず技術担当へ |
LOW_GROUNDED_CONTENT が返る | 同上。根拠の弱い答えを表示しない |
| 図面の中の小さな数値が読めていない | 「図書に記載が見つかりません」になる。技術担当が紙の図書で確かめ、記録を残す |
| 同じ分野の竣工図書が2版ある(設計変更) | 日付の新しい版を先に示す。どちらが最終かは総務が確かめる |
| 修繕報告に物件番号が付いていない | 取り込まない。総務の一覧に未処理として残す |
5行目は避けられません。 レイアウト パーサーは図面の文字も読もうとしますが、図面の中の小さな寸法や容量の文字は、スキャンの品質しだいで読めません。 読めなかった質問の記録が溜まった図書から、スキャンし直すかを決めます。
記録を残す
- 質問の日時、質問者、選んだ物件番号、質問の文章
- answer メソッドの応答の全文(答え、引用、参照、
answerSkippedReasons) - 中継プログラムが組み直した答えと、
newer_repair_exists・route_to_engineerの値 - 技術担当に回したものの答えと、根拠にした図書の箇所
- 管理担当が答えを使わなかった記録(「違っていた」ボタン)
最後の記録が、図書の整備の材料になります。 同じ物件で「違っていた」が続くなら、メタデータの物件番号か日付が誤っているか、修繕報告が取り込まれていません。
04実装レベルの3段階
半自動化で、1件30分が18分程度になります。 図書を探す時間は縮みますが、総務が間に入って検索し、管理担当へ伝える手間が残ります。本格構成で10分になり、この段階が本記事の想定です。 差が出るのは、管理担当が自分で物件を選んで聞けるようになり、技術担当を経由する質問が減るからです。 段階を飛ばさないでください。 半自動化の段階で、物件番号の付け間違いと修繕報告の抜けが見つかります。 ここを直さずにボットを開くと、誤った答えが40名に一度に届きます。
05工数削減シミュレーション
導入後 300件 × 10分 ÷ 60 = 50 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数十から数百棟のビル・マンションを管理し、竣工図書や設備の仕様書を物件ごとにPDFや紙で持っている管理会社。テナントやオーナーから設備の問い合わせが来るたびに、担当が書庫やファイルサーバーを探すか、設備に詳しい数名に聞いている場合。修繕の工事報告書が物件ごとにまとまっている場合。
- 管理物件が数棟で、担当が図書の場所を覚えている場合。竣工図書が紙のままで、スキャンする予算と時間が取れない場合。設備の容量や構造の判断そのものを求められる質問が大半の場合。なお、設備の増設や改修の可否の判断は、この構成では代替できません。
07最小構成で試す方法
- 管理物件から3棟を選ぶ(竣工図書がPDFの物件、スキャンの物件、修繕が多い物件を1棟ずつ)
- 過去3か月に技術担当が受けた質問から、その3棟の質問を20問集め、当時の答えを並べる
- 3棟の図書を、物件ごとに分けて手元のAIサービスに読み込ませる(1棟ずつ別の会話で)
- 「この図書の記載だけを根拠に答え、図書名とページを添えてください。計算しないでください。可否は答えないでください」と指示し、20問を聞く
- 答えを、当時の技術担当の答えと突き合わせる
1棟ずつ別の会話にするのは、物件の取り違えを試験から外すためです。 ここで確かめたいのは、図書から値を拾えるかどうかです。
| 出てきた内容 | 判断 |
|---|---|
| 当時の答えと同じ値が、正しいページとともに出た | データストアの構築に進む |
| 竣工時の値を、修繕後も同じとして答えた | 指示と日付の付け方で直る。修繕報告の取り込みを先に |
| スキャンの図書だけ、値が見つからない | スキャンの設定が先。 図書の読み取りの問題 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 別の物件の図書から答える | ボットで物件を選ばせ、物件番号で絞り込む。 質問の文章から推測しない |
| 物件番号の絞り込みが効かない | スキーマでインデックス可能にし、取り込み後に別の物件が混ざらないことを試す |
| 竣工時の値を現況として答える | 図書の日付をメタデータに持たせ、修繕報告を先に示す |
| 修繕報告が取り込まれていない | 工事の完了を取り込みのきっかけにする |
| 容量の残りを計算して答える | 計算を禁じ、値と出典だけを返させる |
| 可否の質問に答えてしまう | 中継プログラムで拾って回し、指示でも可否を禁じる |
| 引用の位置がずれる | startIndex/endIndex は UTF-8 のバイト数。文字の位置に変換する |
| 何の値か分からないチャンクが引用される | includeAncestorHeadings で上位の見出しを付ける |
| スキャンの図面の数値が読めない | 解像度を上げてスキャンし直す。読めない図書の一覧を記録から作る |
| チャンク分割の設定を後から変えたくなる | 変えられない。3棟で試してから全物件を取り込む |
| モデルの版が変わって答え方が変わる | modelVersion を指定し、使った版を記録に残す |
| 同じ質問が何度も技術担当に回る | 技術担当の答えを根拠の図書の箇所とともに記録し、図書の側の整備(スキャンのやり直し、メタデータの修正)につなげる |
上の2行が、この構成の失敗のほとんどです。 物件の取り違えは、値がもっともらしいまま全部違うので、受け取った側も気づきません。 絞り込みを中継プログラムの1か所で組み立て、取り込みのたびに試してください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 建物の竣工図書(設計図・設備の仕様)、修繕の工事報告書、設備台帳、そしてオーナーと管理会社の間の契約に基づいて預かっているオーナーの資料です。
- 預かっている図書をどこまで使ってよいかを確かめる … 竣工図書はオーナーの資料です。管理の委託契約の範囲で、クラウドの検索に取り込んでよいかを確かめてください
- 防犯に関わる図書を取り込まない … 防犯カメラの配置、入退室管理の設備の図、鍵の系統表などは、管理担当の全員が検索できる必要はありません。 取り込む前に除外する一覧を作ります
- 物件ごとの見える範囲を考える … 管理担当が担当外の物件の図書も検索できてよいかを決めます。この構成では、ボットで選べる物件の一覧を担当ごとに絞り、絞り込みの物件番号を中継プログラムだけが組み立てる形で範囲を守ります
- 答えを外へそのまま出さない … テナントやオーナーへの回答は、管理担当が引用の箇所を確かめてから出します
- 可否の判断を機械に置かない … 増設や設置の可否は、技術担当と、必要に応じて電気主任技術者や設計者が判断します
誤りが起きた場合のリスクは、別の物件の値を答えることと、古い値を今の値として答えることの2つです。 どちらもテナントの工事の計画に直接響きます。前者は絞り込みで、後者は日付の付与で、設計の段階で防ぎます。
10まず何から始めるか
1週目:3棟の図書を集め、メタデータの項目を決める
試す3棟の竣工図書・修繕報告・設備台帳を集め、物件番号・図書の種類・日付・分野の4項目を1ファイルずつ付けます。 あわせて、管理の委託契約で図書をクラウドに置いてよいかを確かめます。
2週目:20問で試す
技術担当が過去に受けた質問20問を、1棟ずつ手元のAIサービスで聞きます。竣工時の値を現況として答えていないか、計算をしていないかを最優先で見ます。
3週目:データストアを作る
レイアウト パーサーとチャンク分割を有効にしたデータストアを作り、3棟を取り込みます。物件番号の絞り込みで別の物件が混ざらないことを確かめます。
4週目:防犯の図書の除外と、回し先を決める
取り込まない図書の一覧と、技術担当へ回す質問の言い回しの辞書を作ります。技術担当の待ち行列を、表で作ります。
2か月目: 全物件の図書のスキャンとメタデータの付与を進め、総務が検索して答える半自動化で運用します。「違っていた」の記録を毎週見ます。3か月目以降: ボットを開き、修繕報告の取り込みを工事の完了につなげ、1件30分が何分になったかを実測します。技術担当に回る質問が可否の質問だけになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドが servingConfigs/default_search:answer で呼び出され、searchSpec.searchParams の filter・maxReturnResults、answerGenerationSpec の promptSpec.preamble・includeCitations・ignoreLowRelevantContent・answerLanguageCode を指定できること。応答に citations(startIndex・endIndex は UTF-8 のバイト単位)と references(チャンクの本文、文書の uri・title)が返ること。NO_RELEVANT_CONTENT・LOW_GROUNDED_CONTENT などが answerSkippedReasons に返ること。groundingSpec の filteringLevel に FILTERING_LEVEL_HIGH を指定できること。maxReturnResults が既定10・上限25であること。modelSpec.modelVersion でモデルを指定でき、サンプルに gemini-2.5-flash/answer_gen/stable が使われていること | Google Cloud: Get answers and follow-ups | 2026-10-12 |
レイアウト パーサーが PDF の段落・表・見出しを検出し、スキャンした文書にOCRをかけられること。RAG 向けのチャンク分割を有効にしたときだけ選べること。chunkSize が100〜500トークン(既定500)、includeAncestorHeadings で上位の見出しを付けられること。チャンク分割の設定がデータストアの作成後に変えられないこと | Google Cloud: Parse and chunk documents | 2026-10-12 |
メタデータの項目で検索を絞り込めること。ANY() などの式の書き方。絞り込みに使う項目をスキーマでインデックス可能にする必要があり、それでも絞り込みが保証されるわけではないこと | Google Cloud: Filter custom search with metadata | 2026-10-12 |
取り込めるファイルの形式(PDF・DOCX・XLSX など)、1ファイル200MB・1回100,000ファイルまでであること。メタデータを JSON Lines で id・structData・content(mimeType・uri)として渡すこと。取り込みがフォルダの中を再帰的に行われること | Google Cloud: Prepare data for ingesting | 2026-10-12 |
設備の増設や改修の可否は、技術担当と、必要に応じて電気主任技術者や設計者が判断してください。 本記事は上の公開資料で確認できた範囲だけを扱っています。社内チャットのボットの作り方は、利用中のチャットの仕組みによって異なるため特定していません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1260)についてのご相談はこちらから。
