着工前の施工検討会に向けて、構造・工法・立地が近い過去の現場の不具合と是正の記録を探し、リスクを根拠付きで資料に載せる
新しい現場の構造・工法・所在地を入れると、過去の不具合・是正・クレームの記録から、条件の近い現場と近隣の現場で起きたことを探し、原因と是正を記録番号付きで返します。検討会の資料のリスクの欄が、記憶ではなく記録で埋まります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 不動産/建設
- 対象部門
- 品質管理
- 対象業務
- 情報検索/書類作成
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 品質管理の担当者が、新しい現場の設計図書と施工計画の概要を読み、構造・用途・主な工法を確かめる
- 現場の台帳から、構造と用途が近い過去の現場を選ぶ
- 不具合報告の仕組みで、選んだ現場の記録を1件ずつ開き、関係しそうなものを拾う
- 地図で新しい現場の近くにある過去の現場を探し、その不具合とクレームの記録を読む
- その地域を担当した所長や、経験の長い品質管理の担当者に聞く
- 拾った記録を、検討会の資料のリスクの欄に書き写す
- 自動不具合報告の仕組みで是正が完了する、またはクレームの対応が完了すると、記録と現場の台帳の属性を取り出す
- 自動Claude が、記録から部位・不具合の区分・原因・是正を項目として取り出す
- 人現場の担当者か品質管理の担当者が、取り出された項目を確かめて確定する
- 自動確定した記録を、文の埋め込みと現場の属性(所在地の座標を含む)とともに検索基盤に登録する
- 人担当者が新しい現場の構造、用途、階数、主な工法、所在地を検索画面に入れる
- 自動「工法が近い現場」の検索:構造で絞り、工法と部位の言葉と文の近さのハイブリッド検索で記録を集める
- 自動「近隣の現場」の検索:所在地から半径の中にある現場の記録を、部位と不具合の区分ごとに集める
- 自動Claude が2つの結果について、部位ごとに不具合・原因・是正を記録番号付きでまとめる
- 人担当者が結果を読み、根拠の記録を開いて確かめ、検討会の資料に載せるものを選ぶ
- 自動選んだ記録を、資料のリスクの欄の下書きに書き出す
各工程の詳しい説明を読む
- 品質管理の担当者が、新しい現場の設計図書と施工計画の概要を読み、構造・用途・主な工法を確かめる
- 現場の台帳から、構造と用途が近い過去の現場を選ぶ
- 不具合報告の仕組みで、選んだ現場の記録を1件ずつ開き、関係しそうなものを拾う
- 地図で新しい現場の近くにある過去の現場を探し、その不具合とクレームの記録を読む
- その地域を担当した所長や、経験の長い品質管理の担当者に聞く
- 拾った記録を、検討会の資料のリスクの欄に書き写す
(a)条件を重ねて探せない。 構造、部位、工法、立地の条件を重ねて絞る手段がなく、現場を選んでから記録を1件ずつ開くことになります。選んだ現場が外れていれば、それまでの時間は無駄になります。
(b)原因と是正の書き方がばらばら。 「打継ぎ部からの漏水」と「打ち継ぎ箇所より雨水浸入」は同じことを書いていますが、言葉で探すと別のものになります。 「ジャンカ」「豆板」のように、同じものに複数の呼び方がある言葉も多くあります。
(c)近隣の現場の経験が引き継がれない。 埋め立て地の沈下、沿岸の塩害、高層ビルのそばの強い風。その地域で何が起きやすいかは、その地域を担当した人の頭の中にあります。 担当が変わると、同じ地域で同じ不具合が繰り返されます。
(d)クレームの記録が検討会に届かない。 引き渡し後のクレームは別の部署が対応しており、施工中の不具合の記録とつながっていません。 引き渡しから数年後に出てくる不具合ほど、次の現場の検討会で見られていません。
取り込み(不具合の是正やクレームの対応が完了するたび)
- 【自動】 不具合報告の仕組みで是正が完了する、またはクレームの対応が完了すると、記録と現場の台帳の属性を取り出す
- 【自動】 Claude が、記録から部位・不具合の区分・原因・是正を項目として取り出す
- 【人】 現場の担当者か品質管理の担当者が、取り出された項目を確かめて確定する
- 【自動】 確定した記録を、文の埋め込みと現場の属性(所在地の座標を含む)とともに検索基盤に登録する
検索(施工検討会の資料を作るたび)
- 【人】 担当者が新しい現場の構造、用途、階数、主な工法、所在地を検索画面に入れる
- 【自動】 「工法が近い現場」の検索:構造で絞り、工法と部位の言葉と文の近さのハイブリッド検索で記録を集める
- 【自動】 「近隣の現場」の検索:所在地から半径の中にある現場の記録を、部位と不具合の区分ごとに集める
- 【自動】 Claude が2つの結果について、部位ごとに不具合・原因・是正を記録番号付きでまとめる
- 【人】 担当者が結果を読み、根拠の記録を開いて確かめ、検討会の資料に載せるものを選ぶ
- 【自動】 選んだ記録を、資料のリスクの欄の下書きに書き出す
9番目が、この設計の分かれ目です。 検索結果は「過去にこういうことが起きた」という事実で、新しい現場で同じことが起きるかどうかは分かりません。 載せるかどうかは担当者が決め、対策は検討会で決めます。
6番目と7番目を分けているのも、意図してのことです。 1本にまとめると、遠くの工法が近い現場と、近くの工法が違う現場が同じ順位の中で混ざり、なぜその記録が出てきたのかを説明できなくなります。
02今回想定するシステム構成
【取り込み】不具合報告の仕組み/クレーム対応の記録(完了) ▼【トリガー】是正・対応の完了 AWS Lambda ── 記録と現場の台帳の属性(所在地・構造・工法)を取り出す ▼ Claude(Amazon Bedrock)── 部位・不具合の区分・原因・是正を項目に ▼【人】担当者が確定 Amazon Titan Text Embeddings V2 ── 内容・原因・是正の文を埋め込み ▼ Amazon OpenSearch Service(記録の索引。kuromoji+現場の用語の辞書、所在地は geo_point) 【検索】担当者の検索画面(構造・用途・工法・所在地) ▼ Amazon OpenSearch Service ├── 工法が近い現場:ハイブリッド検索(言葉の一致+文の近さ)+構造の絞り込み └── 近隣の現場:geo_distance で半径の中の現場の記録 ▼ Claude(Amazon Bedrock)── 検索結果のブロックで渡し、部位ごとに引用付きでまとめる ▼ 担当者が確認 → 施工検討会の資料へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ハイブリッド検索、geo_distance、kuromoji) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude(Amazon Bedrock。項目の取り出しと検索結果のまとめ) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込みと2本の検索、資料への書き出し) | AWS Step Functions |
| 保管 | Amazon S3(記録の写しと写真) | 既存のファイルサーバー |
| 不具合報告 | 既存の不具合報告の仕組み | ― |
「近隣の現場」の検索は、OpenSearch の geo_distance クエリで行います。 公開されているドキュメントでは、geo_distance クエリは指定した地点から指定した距離の中にある地点を持つ文書を返すもので、距離はその地点を中心とする円の半径です。検索する項目は geo_point 型である必要があります。 距離の計算は arc(既定、より正確)と plane(速いが、長い距離や極地では不正確)から選べます。現場の間の距離は数十km程度なので、既定の arc のままにします。
「工法が近い現場」の検索は、ハイブリッドクエリです。 ドキュメントでは、ハイブリッドクエリは複数のクエリの関連度のスコアを1つのスコアに組み合わせるもので、サブクエリは最大5つ、filter はすべてのサブクエリに適用されます。スコアの組み合わせには検索パイプラインが必要です。 正規化は min_max(既定)、l2、z_score、組み合わせは arithmetic_mean(既定)、geometric_mean、harmonic_mean から選び、重みは0.0〜1.0で、合計を1.0にします。
日本語の解析は kuromoji で行います。 kuromoji の解析器は、辞書に基づいて日本語を区切るトークナイザーと、活用形を基本形に戻す kuromoji_baseform、助詞などを取り除く kuromoji_part_of_speech、全角と半角をそろえる cjk_width などで構成されています。既定の search モードでは複合語を部分に分け、検索で拾われやすくします。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは、不具合の是正が完了したとき、または引き渡し後のクレームの対応が完了したときを起点にします。 是正の途中の記録を取り込まないのは、原因が確定していない見立てや、効かなかった是正を検索結果に出さないためです。 完了を通知できない仕組みなら、毎晩、完了日で絞った一覧を取りに行きます。
過去の約2万4,000件は、別に一括で取り込みます。 このときは担当者の確認が取れないので、記録に「未確認」の印を付けます。検索結果では未確認の記録を区別して表示し、検討会の資料に載せるときに、その場で元の記録と写真を確かめてもらいます。
検索は、担当者が検索画面で「探す」を押したときに動きます。 施工計画の概要が固まった段階で一度探し、工法が変わったら探し直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 不具合の記録 | 現場番号、部位、内容、原因、是正、発生した工程、写真 | 不具合報告の仕組み |
| クレーム対応の記録 | 現場番号、引き渡しからの年数、部位、内容、原因、対応 | クレーム対応の記録 |
| 現場の属性 | 所在地の座標、構造(RC/S/SRC/木造)、用途、階数、主な工法、立地の条件(沿岸・埋め立て地・寒冷地など) | 現場の台帳 |
| 記録の項目 | 取り込み時に作る。部位の区分、不具合の区分、原因の区分、原因と是正の文 | 検索基盤 |
| 新しい現場(検索時) | 構造、用途、階数、主な工法、所在地、検討したい部位 | 検索画面 |
| 現場の用語の辞書 | 用語と読み、言い換え(「豆板」と「ジャンカ」など) | 品質管理部が作る一覧 |
質を決めるのは、現場の属性と用語の辞書です。 現場の台帳に所在地の座標が無ければ、近隣の現場は探せません。住所しか無い現場は、取り込みの前に座標に直しておきます。 主な工法の欄も、現場ごとに自由に書かれていると絞り込みが効かないので、外壁、防水、杭、床の仕上げなどの区分から選ぶ形にそろえます。
部位と不具合の区分は最初に固定します。 部位は、基礎・躯体・外壁・屋上防水・開口部・内装・設備の7つ程度、不具合は、漏水、ひび割れ、剥離・浮き、沈下・傾き、結露、仕上げ不良、騒音・振動、その他、です。
データの取得方法を決める
不具合とクレームの記録は、それぞれの仕組みから文字で取り出します。写真は取り込みの対象にせず、記録番号から元の仕組みで開けるようにします。 現場の属性は、現場番号で現場の台帳から引き、記録ごとに持たせます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 内容・原因・是正の文 | 不具合とクレームの記録 | 言葉の一致と文の近さの検索、引用の本文 |
| 所在地の座標 | 現場の台帳 | geo_point の項目。近隣の現場の検索 |
| 構造・用途・階数・工法 | 現場の台帳 | 絞り込みと、工法の言葉の一致 |
| 発生した工程と引き渡しからの年数 | 記録 | 検討会の資料で、いつ起きる不具合かを示す |
「工法が近い現場」の検索では、新しい現場から2つのサブクエリを作ります。 1つは主な工法と検討したい部位の言葉による言葉の一致(kuromoji で解析した項目)、もう1つは「RC造・14階・外壁タイル張り・屋上はアスファルト防水」のように属性を文にしたものの埋め込みによる近さです。構造は filter で絞ります。
「近隣の現場」の検索は、構造で絞りません。 半径の中にある現場の記録を、部位と不具合の区分ごとに数件ずつ集めます。半径は立地の条件で変えます。 既定は10kmで、沿岸と埋め立て地は同じ立地の条件の現場に限ったうえで30kmまで広げます。
AIへ渡す前に整形する
- 用語の辞書の反映 … 現場の用語を kuromoji の
user_dictionary_rulesに入れ、「打継ぎ」「コールドジョイント」を1語として扱います - 表記のゆれ … 「打ち継ぎ」「打継ぎ」「打継」を同じ語にそろえ、「豆板」と「ジャンカ」の言い換えを辞書に入れます
- 全角と半角 …
cjk_widthで、「RC」と「RC」、半角カタカナをそろえます - 座標の確認 … 所在地の座標が無い、または日本の範囲の外にある現場は、取り込みを止めて一覧に載せます。geo_distance の
validation_methodは既定のSTRICTのままにし、不正な座標を黙って受け入れないようにします - 埋め込みの対象を絞る … 内容・原因・是正の文だけを埋め込みます。Titan Text Embeddings V2 の入力は最大8,192トークンまたは50,000文字で、検索では段落などの単位に分けることが勧められています
- 重複の検知 … 同じ不具合が施工中の記録とクレームの記録の両方にあるときは、両方を残し、互いの記録番号を持たせます
4番目を軽く見ないでください。 座標が緯度と経度を取り違えて登録されていると、現場が海の上や外国に置かれ、近隣の現場の検索から黙って抜け落ちます。 取り込みの最初に、全現場の座標を地図に落として確かめます。
1番目と2番目は、品質管理部の仕事です。 辞書が足りないと言葉の一致が効かず、ハイブリッド検索の片方がほとんど働きません。最初は30語ほどで始め、検索で拾えなかった言葉を毎月足します。
AIに処理させる
AIの仕事は2か所です。取り込み時の項目の取り出しと、検索結果のまとめです。
| 場面 | させること |
|---|---|
| 取り込み | 記録から部位の区分、不具合の区分、原因の区分、原因と是正の文、発生した工程を取り出す |
| 検索 | 2つの検索結果を部位ごとに並べ、不具合・原因・是正を記録番号付きでまとめる |
| 検索 | 「工法が近い現場」と「近隣の現場」の両方に出てきた不具合を示す |
| させないこと | 理由 |
|---|---|
| 新しい現場で起きる確率や重大度の判定 | 根拠のない格付けが、検討会の優先順位を決めてしまう |
| 対策や施工計画の変更の提案 | 決めるのは検討会。記録に無い対策が資料に入る |
| 記録に書かれていない原因の推測 | 推測された原因が「過去の不具合の原因」として広まる |
| 是正の結果の補い | 是正が効いたかどうかが記録に無ければ、空のまま |
| 区分の読み替え | 「漏水」を「結露」に寄せるなど、記録の結論を変えない |
3行目がいちばん起きやすい失敗です。 不具合の記録の原因の欄は空欄が多く、AIは内容と部位から原因を補いたくなります。補われた原因は、次の検討会で「過去の記録にあった原因」として扱われます。 書かれていなければ「記載なし」とします。
1行目も外せません。 「発生の可能性が高い」と書かれたリスクは、資料の上で目立ち、記録の件数が多いだけの不具合が、検討会の時間を取ります。
指示内容を固定する
取り込み時(項目の取り出し):
あなたは建設会社の品質管理部で、完了した不具合とクレームの記録を整理する担当です。
記録に書かれたことだけを根拠にしてください。推測で埋めないでください。
【区分】
部位:基礎 / 躯体 / 外壁 / 屋上防水 / 開口部 / 内装 / 設備
不具合:漏水 / ひび割れ / 剥離・浮き / 沈下・傾き / 結露 / 仕上げ不良 / 騒音・振動 / その他
原因:材料 / 施工 / 設計 / 立地・気象 / 経年 / 不明
【やること】
次の項目を取り出してください。
- 部位、不具合、原因の区分(上の一覧から1つずつ)
- 原因:記録に書かれた文をそのまま写す
- 是正:記録に書かれた文をそのまま写す
- 発生した工程、または引き渡しからの年数
【厳守事項】
- 原因が書かれていなければ、原因の区分は「不明」、原因の文は「記載なし」にしてください。
内容や部位から原因を推測しないでください。
- 是正が効いたかどうかが書かれていなければ、effective を null にしてください。
- 区分は記録の書き方に従ってください。迷ったら「その他」にし、
uncertain に理由を書いてください。
- 現場の住所や関係者の名前を、原因や是正の文に書き足さないでください。
検索時(結果のまとめ):
あなたは施工検討会の資料作りを助ける担当です。
渡された検索結果だけを根拠に、過去の不具合を部位ごとに並べてください。
【新しい現場】{new_site}
【工法が近い現場の記録】検索結果として渡します(group: method)
【近隣の現場の記録】検索結果として渡します(group: nearby)
【書くこと】
1. 部位ごとに、不具合・原因・是正(記録の記載どおり)と記録番号
2. 記録ごとに、工法が近いから出てきたのか、近隣だから出てきたのか
3. 両方のグループに出てきた部位と不具合
【厳守事項】
- 新しい現場で起きる可能性や重大度を書かないでください。
- 対策や施工計画の変更を提案しないでください。
- 原因を言い換えたり、付け足したりしないでください。
- 件数の多さを、起きやすさとして書かないでください。
- 「未確認」の印のある記録は、その旨を必ず書いてください。
検索結果は、Claude の検索結果ブロックで渡します。 1件の記録を1つの search_result にし、source に記録番号と現場番号、title に部位と不具合の区分、content に内容・原因・是正を別々のテキストブロックで入れます。グループの別は title の先頭に「[工法]」「[近隣]」と付けて示します。 引用を有効にすると、まとめの文ごとにどの記録を根拠にしたかが付き、資料のリスクの欄から元の記録へたどれます。
「件数の多さを起きやすさとして書かない」を明記しないと、「外壁の剥離が最も多く、注意が必要です」とまとめます。 件数は、過去にその工法の現場が多かっただけかもしれません。
出力形式を固定する
取り込み時の項目は、次の形のJSONで受け取ります。
{
"record_id": "DF-2021-03318",
"site_id": "S-2019-112",
"source": "defect | claim",
"part": "基礎 | 躯体 | 外壁 | 屋上防水 | 開口部 | 内装 | 設備",
"defect": "漏水 | ひび割れ | 剥離・浮き | 沈下・傾き | 結露 | 仕上げ不良 | 騒音・振動 | その他",
"cause_category": "材料 | 施工 | 設計 | 立地・気象 | 経年 | 不明",
"cause": "",
"remedy": "",
"effective": null,
"phase": "",
"years_after_handover": null,
"uncertain": ""
}
1つ目の理由は、部位と不具合を決まった値に限れることです。 担当者によって「雨漏り」「漏水」「浸水」と書き方が違っても、区分は1つにそろいます。検討会の資料を部位ごとに並べる処理は、この値で行います。
2つ目は、cause_category に「不明」を持てることです。 原因が書かれていない記録を「不明」として残すと、どの部位の不具合で原因の記録が抜けているかが数えられます。品質管理部が記録の書き方を直す材料になります。
3つ目は、source と years_after_handover で、いつ起きる不具合かを示せることです。 施工中に見つかった不具合と、引き渡しの数年後に出てきた不具合では、検討会で考える対策の時期が違います。
検索の要求は、次の考え方で組みます。
| 検索 | 中身 |
|---|---|
| 工法が近い現場 | ハイブリッドクエリ。サブクエリは工法と部位の言葉の一致、属性の文の埋め込みの近さ。filter は構造。正規化は min_max、組み合わせは arithmetic_mean |
| 近隣の現場 | bool の filter に geo_distance(既定10km)。部位と不具合の区分ごとに数件ずつ |
| 共通 | 「未確認」の記録は下位に回し、印を付ける |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 不具合報告の仕組み | 是正完了の通知、または毎晩の一覧の取得 | 完了した不具合の記録を取り出す |
| クレーム対応の記録 | 対応完了の一覧の取得 | 完了したクレームの記録を取り出す |
| 現場の台帳 | 現場番号での参照 | 所在地の座標、構造、用途、工法 |
| Amazon Titan Text Embeddings V2 | Lambda からの呼び出し | 内容・原因・是正の文の埋め込み |
| Claude(Amazon Bedrock) | Lambda からの呼び出し | 項目の取り出しと、検索結果のまとめ |
| Amazon OpenSearch Service | 索引への登録と、2本の検索 | 記録の検索 |
| 施工検討会の資料 | 検索画面からの書き出し | 選んだ記録をリスクの欄の下書きへ |
埋め込みの次元は、索引を作る前に決めます。 Titan Text Embeddings V2 の出力は1,024(既定)、512、256から選べます。索引の次元を同じ値にそろえます。 英語に最適化されたモデルで、日本語は多言語対応の一覧に入っていますが、100以上の言語はプレビューとされています。 第8章の試しで検索の質を確かめ、足りなければ言葉の一致の重みを上げるか、代替候補に切り替えます。
不具合報告の仕組みと現場の台帳には書き込みません。 資料への書き出しは下書きまでで、検討会に出すのは担当者です。
人が確認する
確認は2か所です。取り込み時の担当者と、資料作りの担当者です。
- 担当者が項目を確定する … 是正の完了の直後に、部位・不具合・原因の区分を確かめます。
uncertainが付いた記録と、原因が「不明」の記録を優先して見ます - 資料作りの担当者が根拠の記録を開く … 資料に載せる記録は、引用の付いた記録と写真を必ず開いて確かめます
- 未確認の記録を確かめる … 一括取り込みの記録を載せるときは、その場で元の記録と照らし、確かめたら「確認済み」に変えます
- 近隣の現場の記録は、立地の条件が同じかを見る … 半径の中でも、埋め立て地と台地では起きることが違います。同じ条件の現場の記録かどうかを確かめてから載せます
1件の検討会あたり75分を目安にします。 2つの検索結果を読み、うち数件の記録と写真を開いて確かめ、リスクの欄を整える時間です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 現場の座標が無い、範囲の外にある | 取り込みを止めて一覧に載せる。台帳を直してから取り込み直す |
| 原因の欄が空 | 区分を「不明」、文を「記載なし」にする。推測で埋めない |
| 工法が近い現場の記録が0件 | 構造の絞り込みを外して再検索し、外したことを明示して出す |
| 近隣の現場が半径の中に無い | 「近隣の現場の記録なし」と表示する。半径を勝手に広げない |
| 言葉の一致で拾えない用語がある | 検索の記録に残し、月に1回、用語の辞書に足す |
| 施工中の記録とクレームの記録が重なる | 互いの記録番号で結び、資料には1件として載せる |
| 公開を控える現場(係争中など)の記録 | 取り込みの対象から外す。外したことを品質管理部の一覧に残す |
| Bedrock の呼び出しに失敗した | 2つの検索結果の一覧だけを表示し、まとめは再試行を促す |
上から2行目までが、取り込みの失敗の大半です。 どちらもAIの問題ではなく、現場の台帳と記録の書き方の問題です。 原因が「不明」の記録の割合を部位ごとに数えると、記録の様式を直すべき箇所が見えてきます。
記録を残す
- 取り込んだ記録の番号、完了日、取り込んだ日時、現場の属性
- Claude が返した項目のJSONと、担当者が確定した時に直した項目
- 検索のたびの新しい現場の条件、2本の検索の結果、半径
- Claude に渡した検索結果と、返ってきたまとめと引用
- 担当者が資料に載せた記録と、載せなかった記録
- 言葉の一致で拾えなかった用語の記録
5つ目の記録は、引き渡し後に見直します。 検討会で載せたのに同じ不具合が起きたのか、載せなかった不具合が起きたのか。新しい現場の不具合の記録と突き合わせると、検索の条件を直すべきか、検討会の進め方を直すべきかが分かります。
04実装レベルの3段階
半自動化で、構造・部位と距離による絞り込みまでは自動になります。 ただし言葉の一致と文の近さが無いので、工法の書き方が違う現場の記録を拾えません。本格構成との差はここで、本記事の想定は本格構成です。
05工数削減シミュレーション
導入後 20件 × 75分 ÷ 60 = 25 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- マンション・事務所ビル・物流施設などを年に数十件施工する総合建設会社やデベロッパーで、施工不具合の報告、是正の記録、引き渡し後のクレーム対応の記録が品質管理部門に10年分ほどたまっている会社。着工前の施工検討会で「似た現場で何が起きたか」を出すのに、品質管理の担当者や経験の長い所長の記憶に頼っている場合。近隣の現場で起きた地盤や塩害、風の影響による不具合が、次の現場に引き継がれていない場合。AWS を社内の基盤として使っており、検索基盤と生成AIを社内の閉じた環境で動かせる場合。
- 施工する現場が年に数件で、担当者が全現場の不具合を覚えていられる場合。不具合の記録が紙の報告書のままで、文字として取り出せない場合(先に読み取りの構成が要る)。現場の住所や構造・工法が記録に残っておらず、現場の属性で絞れない場合。なお、どのリスクに対策をとるか、施工計画をどう変えるかは、施工検討会の参加者が決めます。
07最小構成で試す方法
- 構造と用途が同じ現場を20件選び、その不具合とクレームの記録を100件、手で項目にする(部位、不具合、原因、是正、記録番号)
- 最近開いた施工検討会を10件選び、当時、資料のリスクの欄に何が書かれていたかを控える
- 100件をスプレッドシートにし、10件の検討会それぞれについて、工法の言葉で絞った記録と、地図で半径10kmの中の現場の記録を出す
- 同じ10件について、手元のAIサービスに記録を貼り付け、部位ごとのまとめを作らせる
- 品質管理の経験の長い担当者に、出てきた記録が「思い当たる不具合」と合っているかを見てもらう
10件は必ず、品質管理の経験の長い担当者と一緒に見てください。 2つの軸で分けることが、その人の経験と合っているかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 担当者が思い当たる不具合が並ぶ | 取り込みと検索基盤の構築に進む |
| 近隣の現場の記録に「関係ない」と言われる | 立地の条件の区分が足りない。 地盤や沿岸の区分を足して試し直す |
| まとめに起きやすさや対策が混ざる | 指示の書き方で直る。構成は有効 |
2行目は失敗ではなく、担当者が暗黙に見ていた立地の条件が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 工法の近さと距離の近さを1本の検索で混ぜる | なぜ出てきたかが分からなくなる。2本に分け、資料でも別の表にする |
| 所在地を文字の項目で持つ | 距離で探せない。geo_point 型にする |
| 緯度と経度を取り違える | 現場が範囲の外に置かれ、黙って抜け落ちる。地図に落として確かめる |
| 建設の用語が細かく切られる | user_dictionary_rules に用語を入れる |
| 「豆板」と「ジャンカ」が別の語になる | 言い換えを辞書に入れ、毎月足す |
| 重みの合計が1.0にならない | 正規化プロセッサーの重みは合計1.0にする |
| 原因をAIが補う | 「記載なし」とさせる。補われた原因は事実として広まる |
| 件数が起きやすさとして書かれる | 指示で禁じる。件数は過去の現場の数の偏り |
| 日本語の埋め込みの質が足りない | Titan V2 の多言語はプレビュー。言葉の一致の重みを上げて始める |
上の3行が、この構成の失敗のほとんどです。 どれも「場所が近い」をどう扱うかから出ています。距離を geo_point で持ち、工法の検索と分けて見せるかどうかで、検討会で使われるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 現場の所在地と発注者、施工の不具合と是正の内容、引き渡し後のクレームの内容と入居者・所有者とのやり取り、担当者の名前です。会社の施工品質の弱みがまとまった情報です。
- クレームの記録から個人の情報を外す … 入居者や所有者の名前と連絡先は、取り込みの対象にしません。部位・内容・原因・対応の文だけを取り込みます
- 係争中の現場の記録を外す … 発注者や入居者と争いになっている現場の記録は、取り込みの対象から外し、外したことを品質管理部の一覧に残します
- 索引への書き込みは取り込みの Lambda だけに許す … 担当者には検索の権限だけを与えます
- 資料を社外に出さない … 検討会の資料には、ほかの発注者の現場の不具合が並びます。協力会社に渡す版では、現場名と所在地を伏せます
- 対策の判断をAIに寄せない … この構成が出すのは過去の記録の事実までです。どのリスクに対策をとるかは検討会が決めます
誤りが起きた場合のリスクは、近隣の現場の不具合を見落として同じことを繰り返すことと、ほかの発注者の現場の不具合が社外に出ることの2つです。 前者は座標の確認と2本の検索で、後者は取り込みの範囲と資料の版で防ぎます。
10まず何から始めるか
1週目:区分を決め、台帳の座標をそろえる
品質管理部で、部位・不具合・原因の区分と、立地の条件の区分を決めます。あわせて、現場の台帳の全現場に所在地の座標があるかを確かめ、無い現場を一覧にします。
2週目:100件の記録と10件の検討会で試す
構造と用途が同じ20現場の記録100件を手で項目にし、最近の検討会10件で2つの軸の記録を出します。経験の長い担当者の思い当たる不具合と合うかを見て、半径と立地の条件を決めます。
3週目:用語の辞書と取り出しの指示を作る
現場の用語を30語ほど集めて辞書にし、同じ記録を Claude に読ませて項目を取り出します。原因を補っていないか、区分を読み替えていないかを最優先で見ます。
4週目:完了のたびの取り込みを始める
新しく完了する不具合とクレームの記録から、担当者の確認付きで項目をためます。この時点では検索は構造・部位の絞り込みと半径の検索だけにします。
2か月目: OpenSearch Service の索引を kuromoji と用語の辞書で作り、文の埋め込みとハイブリッド検索を足します。3か月目以降: 過去の記録を一括で取り込み、引用付きのまとめを足します。検討会の資料のリスクの欄が、近隣の現場の記録を含めて記録番号付きで埋まるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
geo_distance クエリが指定した地点から指定した距離の中の地点を持つ文書を返し、距離がその地点を中心とする円の半径であること。項目が geo_point 型である必要があること。distance_type が arc(既定、より正確)と plane(速いが長距離や極地で不正確)であること。validation_method の既定が STRICT であること | OpenSearch Documentation: Geodistance query | 2026-10-06 |
kuromoji の解析器が辞書に基づくトークナイザーと、kuromoji_baseform・kuromoji_part_of_speech・cjk_width などで構成されること。search モード(既定)で複合語を部分に分けること。user_dictionary と user_dictionary_rules で用語を足せること | OpenSearch Documentation: Kuromoji analyzer | 2026-10-06 |
ハイブリッドクエリが複数のクエリの関連度のスコアを1つに組み合わせること。サブクエリが最大5つで、filter がすべてのサブクエリに適用されること。スコアの組み合わせに検索パイプラインが必要なこと | OpenSearch Documentation: Hybrid query | 2026-10-06 |
正規化の手法が min_max(既定)/l2/z_score、組み合わせの手法が arithmetic_mean(既定)/geometric_mean/harmonic_mean であること。重みが0.0〜1.0で合計1.0であること | OpenSearch Documentation: Normalization processor | 2026-10-06 |
| Titan Text Embeddings V2 の入力が最大8,192トークンまたは50,000文字、出力が1,024(既定)/512/256であること。英語に最適化され、100以上の言語はプレビューで、日本語が多言語対応の一覧に含まれること。検索では段落などに分けることが勧められていること | Amazon Bedrock: Amazon Titan Text Embeddings models | 2026-10-06 |
検索結果ブロック(source・title・content)で自社の文書を渡すと、Claude が引用付きで回答すること。Claude API、Amazon Bedrock、Google Cloud で使えること | Claude Docs: Search results | 2026-10-06 |
どのリスクに対策をとり、施工計画をどう変えるかは、施工検討会の参加者が決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0436)についてのご相談はこちらから。
