食品工場の保全員が、包装ラインの症状やアラーム番号から、取扱説明書と過去の保全記録を根拠付きで調べ、点検と復旧の手順を決める
包装ラインで不具合が起きたとき、保全員が設備と症状かアラーム番号を入れると、取扱説明書と保全標準書から点検と復旧の手順を引用付きで返します。あわせて、過去の保全記録から同じ設備・似た症状の原因と処置を並べます。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 製造
- 対象部門
- 生産
- 対象業務
- 情報検索
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 作業者か検査の担当が、不具合に気づいて保全員を呼ぶ
- 保全員がラインに行き、症状を見て、思い当たる原因から点検する
- 思い当たらなければ、事務所に戻って共有フォルダから取扱説明書を開き、トラブルシューティングの章を探す
- 保全記録の表計算を開き、同じ設備の行を上から読んで似た不具合を探す
- それでも分からなければ、ベテランの保全員に電話する
- 点検と処置をして、保全記録に1行書く
- 人保全員がライン脇の端末で、設備のQRコードを読み、症状を言葉で入れる(アラーム番号があれば一緒に入れる)
- 自動中継プログラムが設備台帳から機種と言語を引き、検索の絞り込みの条件を作る
- 自動取扱説明書と保全標準書を対象に answer メソッドを呼び、点検と復旧の手順を引用付きで返す
- 自動保全記録を対象に検索を呼び、同じ設備・同じ機種の似た記録を一覧で返す
- 自動中継プログラムが、過去の記録を原因ごとに数え、件数と直近の日付を並べる
- 人保全員が、説明書の手順と過去の記録の一覧を見比べて、点検の順番を決める
- 人点検と処置をして、決まった様式で保全記録を残す。どの検索結果を使ったかも記録する
各工程の詳しい説明を読む
- 作業者か検査の担当が、不具合に気づいて保全員を呼ぶ
- 保全員がラインに行き、症状を見て、思い当たる原因から点検する
- 思い当たらなければ、事務所に戻って共有フォルダから取扱説明書を開き、トラブルシューティングの章を探す
- 保全記録の表計算を開き、同じ設備の行を上から読んで似た不具合を探す
- それでも分からなければ、ベテランの保全員に電話する
- 点検と処置をして、保全記録に1行書く
(a)症状から説明書のどこを見ればよいか分からない。 取扱説明書のトラブルシューティングは、アラーム番号の一覧と、症状の表に分かれています。症状の表は「シール不良」のような言葉で引くので、現場で見た様子をその言葉に置き換えられないと、該当の行に行き着けません。
(b)過去の不具合を知っているのがベテランだけ。 同じ不具合が半年前に起きていても、記録を探す時間が無いと、最初から原因を探し直します。 夜勤は保全員が2名なので、ベテランが休みの夜に起きると、復旧までの時間が伸びます。
(c)症状の書き方がばらばらで記録を探せない。 表計算の検索で「シール」と入れても、「溶着」「口開き」と書かれた行は出ません。記録はあるのに使えない状態です。
(d)保全標準書が知られていない。 ベテランが作った標準書は共有フォルダにありますが、どの不具合のときに開けばよいかは、作った本人しか知りません。
- 【人】 保全員がライン脇の端末で、設備のQRコードを読み、症状を言葉で入れる(アラーム番号があれば一緒に入れる)
- 【自動】 中継プログラムが設備台帳から機種と言語を引き、検索の絞り込みの条件を作る
- 【自動】 取扱説明書と保全標準書を対象に answer メソッドを呼び、点検と復旧の手順を引用付きで返す
- 【自動】 保全記録を対象に検索を呼び、同じ設備・同じ機種の似た記録を一覧で返す
- 【自動】 中継プログラムが、過去の記録を原因ごとに数え、件数と直近の日付を並べる
- 【人】 保全員が、説明書の手順と過去の記録の一覧を見比べて、点検の順番を決める
- 【人】 点検と処置をして、決まった様式で保全記録を残す。どの検索結果を使ったかも記録する
6番目で決めるのは保全員です。 画面は「説明書と標準書の手順」と「過去の記録」を左右に分けて出し、どちらを先に試すかは保全員が決めます。 過去の記録で同じ原因が何度も出ていれば、そこから点検するのが早いことが多いですが、それを決めるのも人です。
7番目の記録の様式が、この構成を育てます。 症状・原因・処置・交換部品を決まった項目で残し、翌日には検索の対象に入ります。 記録が整うほど、4番目の一覧の質が上がります。
02今回想定するシステム構成
取扱説明書(PDF。日本語・英語) 保全標準書(Word) 保全記録(表計算。1件1行) │ 文書ごとに機種・設備・言語を付ける │ 毎晩1件1ファイルに書き出す ▼ ▼ Cloud Storage ── メタデータ(JSON Lines) ▼ Vertex AI Search(Agent Search) ├── データストア(日本語の説明書・標準書)レイアウト パーサー、見出し付きのチャンク ├── データストア(英語の説明書) └── データストア(保全記録) ▲ ライン脇の端末 ──【トリガー】QRコードと症状・アラーム番号の入力 ▼ 中継プログラム(Python) ├──▶ 設備台帳から機種・言語を引いて絞り込み ├──▶ answer メソッド:手順の回答と引用 ├──▶ 検索:過去の記録の一覧 └──▶ 原因ごとの件数と直近の日付 ▼ 端末に表示(左:手順と引用元のページ 右:過去の記録の一覧)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッドと検索 | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。設備台帳・検索・端末をつなぐ) | Google Apps Script |
| 集計 | Python(過去の記録の原因ごとの件数と直近の日付) | ─ |
| 保管 | Cloud Storage(説明書・標準書・保全記録の書き出しとメタデータ、問い合わせの記録) | ─ |
設備台帳と保全記録の表計算は、いまあるものをそのまま使います。 保全記録は毎晩書き出して取り込むだけで、表計算そのものには書き込みません。 設備の制御装置にもつながず、アラーム番号は保全員が入れます。
検索の土台は、Agent Search(Vertex AI Search から改称中)です。 公式のドキュメントでは、answer メソッドで引用を付ける設定(includeCitations)、関係の薄い内容しか無いときに回答しない設定(ignoreLowRelevantContent)、回答の作り方を指示する preamble、回答の言語(answerLanguageCode)を指定できます。言語の一覧では、日本語(ja-JP)は回答と追加の質問(Answers and follow-ups)に対応する言語として示されています。
データストアを言語ごとに分けるのは、公式の勧めに従うためです。 言語の一覧のページでは、言語ごとに別のデータストアを作り、英語とドイツ語のデータを1つのデータストアに入れないことを勧めています。 英語の説明書は別のデータストアにし、海外のメーカーの設備のときだけ引きます。
03どうやって実装するのか
処理の起点を決める
保全員がライン脇の端末で、設備のQRコードを読み、症状を入れたことを起点にします。 設備にはすでに設備台帳の番号を書いたラベルが貼ってあるので、そこにQRコードを足します。設備を選ぶ操作を QR コードにするのは、似た型式の設備を選び間違えないためです。
症状は、端末に言葉で入れます。「シールが甘い」「フィルムが右に寄っていく」「横シールのところで噛む」のように、見たままを書いてもらいます。 説明書の言葉に置き換えてから入れる必要はありません。置き換えられないことが、第3章の(a)の原因だからです。アラーム番号が出ていれば、別の欄に入れます。
検索は、入れた時点で1回だけ動きます。 結果が合わなければ、症状の書き方を変えて入れ直します。入れ直した回数も記録に残し、何度も入れ直した症状は、説明書と標準書に書かれていない不具合の候補として後で見直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 問い合わせ | 設備の番号、症状の文、アラーム番号(あれば)、保全員の番号 | ライン脇の端末 |
| 設備台帳 | 設備の番号、ライン、メーカー、機種、説明書の言語、導入の年 | 保全課の表計算 |
| 取扱説明書 | メーカーの説明書。トラブルシューティング、調整、部品の交換の章 | 共有フォルダのPDF |
| 保全標準書 | 保全課で作った調整と点検の手順書 | 共有フォルダのWord |
| 保全記録 | 日付、設備、症状、原因、処置、交換部品、停止時間 | 保全課の表計算 |
質を決めるのは、保全記録の「原因」の列です。 原因が空の記録や「不明」の記録は、検索に引っかかっても点検の順番の役に立ちません。取り込むときに、原因が空の記録には印を付け、一覧の下に並べます。
保全標準書には、対象の機種と設備を書いてもらいます。 標準書は書いた人の頭の中で対象が決まっていて、表紙に機種が書かれていないことがあります。取り込む前に、保全課で1冊ずつ対象を確かめます。
データの取得方法を決める
文書は1冊ずつ、保全記録は1件ずつファイルにして Cloud Storage に置きます。公式では、非構造化データは TXT・JSON・Markdown・PDF・HTML・DOCX・PPTX・XLSX・XLSM に対応し、1ファイルの上限は200MB、一度に取り込めるのは10万ファイルまでです。メタデータは JSON Lines で、1行ごとに id、structData、content(mimeType と uri)を書きます。
{"id":"rec-2026-0915-L07-P2","structData":{"doc_kind":"record",
"line":"L07","equipment_id":"L07-P2","model":"HP-300",
"cause_class":"ヒーター","has_cause":"true","date":"2026-09-15"},
"content":{"mimeType":"text/plain",
"uri":"gs://maint-search/records/rec-2026-0915-L07-P2.txt"}}
保全記録は、表計算の1行を1つのテキストファイルにします。 「症状:」「原因:」「処置:」「交換部品:」の見出しを付けて並べ、症状の文が検索の主な手がかりになるようにします。 日付や設備はメタデータの側に持たせ、絞り込みと並べ替えに使います。
| 項目 | 中身 | 使い道 |
|---|---|---|
doc_kind | manual(説明書)/standard(標準書)/record(記録) | データストアの使い分け、表示 |
line/equipment_id | ライン、設備の番号 | 同じ設備の記録の絞り込み |
model | 機種 | 説明書・標準書と記録の絞り込み |
cause_class | 原因の分類(ヒーター、フィルム、センサ、駆動、調整など) | 件数の集計 |
has_cause | 原因が書かれているか | 一覧の並べ方 |
date | 記録の日付 | 直近の日付、並べ替え |
絞り込みには ANY() を使います。 公式の構文では、文字の項目は ANY() に並べた値のどれかと完全に一致するかを見られ、AND/OR で組み合わせられます。項目はスキーマで索引可能(Indexable)にしておかないと絞り込みに使えません。
model: ANY("HP-300") AND doc_kind: ANY("manual", "standard")
保全記録の一覧は、answer メソッドではなく検索で取ります。 公式のドキュメントで絞り込みが説明されているのは servingConfigs/default_search:search の呼び出しで、結果は文書ごとに structData 付きで返るので、中継プログラムが原因の分類ごとに数えられます。 生成した要約は使いません。
AIへ渡す前に整形する
- 取扱説明書はレイアウト パーサーで取り込む … 公式では、段落・表・リスト・見出し・ヘッダ・脚注を検出し、スキャンしたPDFにはレイアウト パーサーを有効にすることが勧められています
- チャンクに見出しを含める …
includeAncestorHeadingsを有効にします。既定は無効です。「シール部の調整」のような章の見出しがチャンクに入り、手順がどの章のものかが回答に残ります - チャンクの大きさを決める …
chunkSizeは100〜500トークンで、既定は500です。手順の工程が途中で切れないよう、既定のまま始めます - チャンク分けはデータストアを作るときに決める … 公式では、チャンク分けはデータストアを作った後に有効・無効を切り替えられません。 パーサーの設定は変えられますが、変えた後に取り込んだ文書にだけ効きます
- 保全記録を整える … 1行を1ファイルにし、原因の分類を付け、作業者の名前を外します
- 言語ごとに分ける … 英語の説明書は英語のデータストアへ入れます
4番目を先に読んでください。 チャンク分けを後から有効にすることはできないので、データストアを作り直すことになります。 試しに作るときから、本番と同じ設定にします。
AIに処理させる
answer メソッドにさせるのは、説明書と標準書から、症状に当てはまる点検と復旧の手順を引用付きで返すことだけです。 保全記録は answer メソッドに渡しません。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 症状の文 | 説明書のトラブルシューティングの表や調整の章から、当てはまる箇所を探す | 関係の薄い内容しか無ければ回答しない |
| アラーム番号 | 番号の一覧の行を引く | 機種の説明書に無ければ「記載なし」 |
| 手順 | 工程を番号の順に、引用付きで返す | 工程を省かない |
| 標準書 | 説明書に無い調整のやり方があれば、標準書として分けて示す | 説明書と食い違えば両方を並べる |
標準書を「標準書として分けて」示させるのは、出どころを区別するためです。 メーカーの手順と保全課の手順が同じ回答の中で混ざると、どちらに従ったのかが記録に残りません。
| させないこと | 理由 |
|---|---|
| 過去の記録の要約 | 一覧で件数と日付を見せる。要約すると、その場しのぎの処置が手順に見える |
| 原因の断定 | 原因の候補を並べるまで。決めるのは点検した保全員 |
| 説明書に無い数値の提示 | 温度・圧力・すき間の値は、引用元に書かれたものだけ |
| 運転を止めるかどうかの判断 | 現場の責任者と保全員が決める |
| 他の機種の手順の流用 | 絞り込みで機種を限る。当てはまらなければ「記載なし」 |
3行目がいちばん起きやすい失敗です。 シール温度の調整を聞くと、一般的な値を答えたくなります。フィルムの銘柄と機種で値が違うので、引用元に書かれた値だけを、引用元と一緒に出させます。
指示内容を固定する
answer メソッドの preamble に、次のように書きます。
あなたは食品工場の保全課で、包装ラインの不具合の点検と復旧の手順を調べる担当です。
検索で見つかった取扱説明書と保全標準書の内容だけを使って答えてください。
【答え方】
- 症状またはアラーム番号に当てはまる箇所を示し、点検と復旧の手順を
番号の順に、工程を省かずに書いてください。
- 各工程に、引用元の文書の箇所を付けてください。
- メーカーの取扱説明書の手順と、保全標準書の手順は、見出しを分けて書いてください。
混ぜないでください。両者が食い違うときは、両方を並べて「食い違いあり」と書いてください。
- 温度・圧力・すき間・トルクなどの数値は、引用元に書かれている値だけを書いてください。
書かれていなければ「記載なし」としてください。一般的な値を書かないでください。
- 警告・注意として書かれている文は、言い換えずにそのまま写してください。
- 原因を1つに決めつけないでください。説明書に原因の候補が並んでいれば、その順に並べてください。
- 当てはまる箇所が見つからなければ、「説明書と標準書に記載なし」とだけ答えてください。
- 運転を止めるかどうか、作業をしてよいかの判断は書かないでください。
呼び出しの設定は次のとおりです。
| 設定 | 値 | 理由 |
|---|---|---|
searchSpec.searchParams.filter | 機種と doc_kind | 他の機種の手順を混ぜない |
searchSpec.searchParams.maxReturnResults | 10(既定。最大25) | 手順の章が複数に分かれる設備に備える |
answerGenerationSpec.includeCitations | 有効 | 工程ごとの引用元を出す |
answerGenerationSpec.ignoreLowRelevantContent | 有効 | 関係の薄い箇所から手順を作らせない |
answerGenerationSpec.answerLanguageCode | ja | 日本語のデータストアの回答 |
groundingSpec.includeGroundingSupports | 有効 | 文ごとの根拠のスコアを受け取る |
groundingSpec.filteringLevel | FILTERING_LEVEL_HIGH | 根拠の弱い回答を返さない |
filteringLevel を指定しないと、根拠のスコアによる絞り込みはかかりません。 公式の説明どおり、指定しなければ回答はそのまま返ります。手順の回答では、根拠の弱い回答を出さないほうを選びます。
出力形式を固定する
中継プログラムは、2つの呼び出しの結果を次の形にまとめて端末に返します。
{
"query_id": "",
"equipment_id": "",
"model": "",
"symptom_text": "",
"alarm_no": "",
"procedure": {
"state": "answered | skipped",
"skipped_reason": "",
"answer_text": "",
"citations": [ { "start_byte": 0, "end_byte": 0, "doc_title": "", "uri": "" } ],
"grounding_score": 0
},
"past_records": {
"total": 0,
"by_cause": [ { "cause_class": "", "count": 0, "latest_date": "" } ],
"items": [ { "date": "", "symptom": "", "cause": "", "action": "", "uri": "" } ]
}
}
procedure と past_records を別の枝に置くのが、この形の要点です。 端末の左右に分けて出すので、保全員は、どちらが説明書の手順でどちらが過去の処置かを見間違えません。
引用の位置は、文字ではなくバイトで返ってきます。 公式の説明では、引用の startIndex・endIndex は UTF-8 のバイトで数えられ、日本語のように1文字が複数バイトの文字では、文字の数と合いません。 中継プログラムで、回答の文をバイト列にしてから切り出し、端末で引用の範囲を色付けします。
回答が返らなかったときは、answerSkippedReasons を skipped_reason に入れます。公式の例では、関係のある内容が無いときの NO_RELEVANT_CONTENT、根拠の基準を満たさないときの LOW_GROUNDED_CONTENT があります。どちらの場合も、過去の記録の一覧は出します。 説明書に無い不具合こそ、過去の記録が役に立つからです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| ライン脇の端末 | 社内の Web 画面 | QRコードと症状の入力、結果の表示 |
| 設備台帳 | 毎朝の書き出しファイル | 機種・言語の引き当て |
| Vertex AI Search(説明書・標準書) | answer メソッド | 手順の回答と引用 |
| Vertex AI Search(保全記録) | 検索 | 似た記録の一覧と structData |
| 保全記録の表計算 | 毎晩の書き出しと取り込み | 新しい記録を翌日から検索の対象にする |
| 問い合わせの記録 | Cloud Storage | 問い合わせ・結果・使った結果 |
保全記録の表計算には書き込みません。 処置の後の記録は、いまと同じく保全員が表計算に書きます。端末の結果の画面から、使った結果の番号を記録の行に貼れるようにしておきます。
人が確認する
決めるのは保全員です。端末の結果は、調べものの材料です。
- 引用元を開いて確かめる … 手順の工程ごとに引用元のページを開き、機種と版が合っているかを見ます
- 数値は引用元で確かめる … 温度や圧力の値は、回答の文ではなく引用元のページの値で作業します
- 過去の記録の件数を見る … 同じ原因が何度も出ていれば、そこから点検します。件数が少なくても、直近の日付のものは見ます
- 安全の手順は社内の手順書に従う … 運転を止める、電源を切る、残圧を抜くといった工程は、回答に書かれていなくても社内の手順書のとおりに行います
- 処置の後に記録を書く … 決まった様式で書き、使った結果の番号を貼ります
4番目を省かないでください。 回答は説明書と標準書の該当の箇所を返すもので、作業の前後に要る安全の工程が、同じ箇所に書かれているとは限りません。
目標は、240件をならして1件10分です。 結果がそのまま当てはまれば数分、説明書に記載が無く過去の記録を読み比べると15分ほどかかります。
例外に対処する
| 起きること | 対応 |
|---|---|
NO_RELEVANT_CONTENT で手順が返らない | 過去の記録の一覧だけを出す。説明書と標準書に無い不具合として記録する |
LOW_GROUNDED_CONTENT で手順が返らない | 引用元の候補の一覧だけを出し、保全員が開いて読む |
| 過去の記録が0件 | 「記録なし」と出す。似た機種で探すかは保全員が選ぶ |
| 症状の文が短すぎる(「調子が悪い」) | 何が起きているかを書き足すよう端末で促す |
| QRコードが読めない・設備台帳に無い | 設備を一覧から選ばせる。機種が分からなければ絞り込まずに検索し、その旨を出す |
| 英語の説明書の設備 | 英語のデータストアを引き、原文の引用を出す |
| 説明書と標準書の手順が食い違う | 両方を並べて「食い違いあり」。保全課の責任者が後で標準書を見直す |
| スキャンした説明書の文字が読めていない | 引用元の文が崩れていれば、その章を取り込み直す |
1行目の記録が、この構成でいちばん役に立つ記録です。 説明書と標準書に書かれていない不具合が、件数とともに積み上がるので、どの標準書を新しく書くべきかが分かります。
記録を残す
- 問い合わせ(設備・症状の文・アラーム番号・保全員・日時)と、入れ直した回数
- answer メソッドの回答、引用、根拠のスコア、回答しなかった理由
- 過去の記録の一覧と、原因ごとの件数
- 保全員が使った結果 … 手順の回答か、過去の記録のどれか
- 処置の後の保全記録の行への結び付き
使った結果の記録は、検索の質を見るための唯一の手がかりです。 回答が出ても使われていない設備や症状は、取り込んだ説明書の版が古いか、チャンクの切れ目が悪いか、標準書が足りないことを示しています。月に一度、保全課で見直します。
04実装レベルの3段階
最小構成では、件数がさばけません。 説明書を毎回読み込ませるので、12本のラインには使えません。現場の言葉で引けるかを確かめる段階です。 半自動化で、1件25分が18分程度になります。 説明書と標準書を探す時間は減りますが、過去の記録はまだ表計算を読みます。本格構成で10分になり、この段階が本記事の想定です。 差が大きいのは、過去の記録が言い方の違いを越えて見つかり、原因ごとの件数で点検の順番の見当がつくからです。 段階を飛ばさないでください。 半自動化の問い合わせの記録を1か月見ると、説明書と標準書に記載の無い症状が見えます。記録の様式を整えてから本格構成に進むほうが、過去の記録の一覧が使えるものになります。
05工数削減シミュレーション
導入後 240件 × 10分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 充填機・包装機・シール機・金属検出機・ケーサーなど、複数のメーカーの設備を並べたラインを持つ食品・日用品の工場。不具合の多くがアラーム番号の出ない「症状」として現れ、原因の見当をつけるのがベテランの保全員の経験に頼っている場合。保全記録を表計算や保全管理の仕組みに残しているが、症状の書き方がばらばらで探せない場合。Google Cloud を使える場合。
- 設備が数台で、保全員が取扱説明書と過去の不具合を覚えていられる場合。保全記録がほとんど残っていない場合(まず記録の様式を決めるのが先)。復旧の作業をしてよいか、運転を止めるかの判断を、検索の回答だけで済ませたい場合。メーカーの取扱説明書を社内の検索に取り込むことが、メーカーとの取り決めで認められていない場合。
07最小構成で試す方法
- 先月の保全記録から、症状で始まった不具合を20件選ぶ(アラーム番号の出なかったもの、ベテランに聞いて解決したものを入れる)
- その20件について、どの説明書のどの章、どの標準書が答えだったかを、ベテランに書き出してもらう
- 対象の設備2台分の取扱説明書と標準書、保全記録の書き出しを、手元の生成AIの画面に読み込ませる
- 「この症状のとき、説明書と標準書のどこに点検の手順が書かれているかを、ページを付けて示してください。過去の記録で似た不具合を挙げてください。記載が無ければ記載なしとしてください」と1件ずつ聞く
- 出てきた箇所を、ベテランの書き出しと比べる
20件は必ずやってください。 データストアを作る前に、現場の言葉の症状から、説明書と記録の該当の箇所に行き着けるのかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| ベテランの書き出しと同じ箇所が出た | データストアの作成に進む |
| 他の機種の手順や一般的な値を答えた | 絞り込みと preamble で直る。構成は有効 |
| 過去の記録の処置を手順として答えた | 記録を別のデータストアに分ける設計が要る |
| 記録の原因の欄が空で、何も出ない | 記録の様式が先。 AIの問題ではない |
4行目が出ることは珍しくありません。 失敗ではなく、記録が探せなかった理由が1つ分かったということです。 保全記録の様式を決めて、1か月分を整えてから試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 過去の記録の処置が手順として回答に入る | 記録を別のデータストアにし、answer メソッドに渡さない |
| 説明書に無い数値を一般的な値で答える | 引用元の値だけを書かせ、無ければ「記載なし」 |
| 他の機種の手順が混ざる | 機種と doc_kind で絞り込む。項目を索引可能にする |
| 引用の範囲がずれる | 位置は UTF-8 のバイト。バイト列で切り出す |
| 英語と日本語の説明書を1つに入れる | 言語ごとにデータストアを分ける |
| チャンク分けを後から有効にしようとする | 作った後は切り替えられない。最初から有効にする |
| 手順の章の見出しが回答に残らない | includeAncestorHeadings を有効にする |
| 根拠の弱い回答が出る | filteringLevel を指定する。指定しないと絞り込みがかからない |
| 記録の原因が空で件数が数えられない | 記録の様式を決め、原因の分類を付ける |
| 回答だけで作業する | 引用元を開いて確かめる時間を残す |
上の2行が、この構成でいちばん重い失敗です。 どちらも、根拠の無い手順や値が、決められた手順の顔をして保全員に届く経路です。出どころの違うものを分けて出し、引用元に無いものは書かせません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: メーカーの取扱説明書、保全課の標準書、保全記録(設備・症状・原因・処置・停止時間)です。メーカーの説明書は著作物で、保全記録は自社の設備の弱点と停止の実績が分かる情報です。
- メーカーとの取り決めを確かめる … 取扱説明書を社内の検索に取り込むことが、メーカーとの取り決めで認められているかを確かめます。取り込めない説明書は、引用元のページへのリンクだけを出す形にします
- 利用者を保全課の社員に限る … 端末と中継プログラムは、保全課の社員のアカウントだけが使えるようにします。工場の見学者や派遣の作業者が操作できる場所に、検索の画面を置きません
- 保全記録から個人の名前を外す … 取り込むときに作業者の名前を外します。記録を誰の失敗かを探す材料にしないためです
- 作業の判断を検索に任せない … 運転を止めるか、作業をしてよいかは、現場の責任者と保全員が社内の手順書に従って決めます
- 問い合わせの記録の扱いを決める … 問い合わせと使った結果の記録は、検索の質を見るために使い、保全員の評価には使わないことを、保全課の中で決めておきます
- データの置き場所を確かめる … データストアと Cloud Storage の場所を、社内の決まりに照らして選びます
誤りが起きた場合のリスクは、別の機種の手順や根拠の無い値で作業することと、その場しのぎの処置が手順として広まることの2つです。前者は機種の絞り込みと引用元の確認で、後者は手順と過去の記録を別の枝に分け、記録を要約させないことで防ぎます。
10まず何から始めるか
1週目:保全記録の様式を決める
保全記録の「症状」「原因」「処置」「交換部品」の書き方を決め、原因の分類(ヒーター、フィルム、センサ、駆動、調整など)を作ります。直近1年の記録に分類を付けるところから始めます。
2週目:20件で試す
先月の記録から症状で始まった不具合を20件選び、最小構成で説明書と記録の該当の箇所を聞いて、ベテランの書き出しと比べます。過去の記録の処置を手順として答えていないかを最優先で見ます。
3週目:説明書と標準書をそろえる
設備台帳に機種と説明書の言語の列を足し、取扱説明書と標準書の対象の機種を1冊ずつ確かめます。メーカーとの取り決めで取り込めない説明書を洗い出します。
4週目:説明書と標準書のデータストアを作る
レイアウト パーサーと見出し付きのチャンクを有効にしてデータストアを作り、answer メソッドで手順を引用付きで返すところまで作ります。この時点では保全記録を入れず、手順の回答だけを見ます。
2か月目: 保全記録のデータストアと毎晩の取り込み、機種の絞り込み、件数の集計を足し、端末で左右に分けて出す運用にします。3か月目以降: 使った結果の記録を足し、1件25分が何分になったかを実測します。「説明書と標準書に記載なし」の症状をもとに標準書が書き足され、夜勤でもベテランに電話せずに復旧できたことを確かめた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
answer メソッドが servingConfigs/default_search:answer で呼ばれること。includeCitations・ignoreLowRelevantContent・ignoreAdversarialQuery・ignoreNonAnswerSeekingQuery・promptSpec.preamble・answerLanguageCode を指定できること。searchParams の filter、maxReturnResults(既定10・最大25)。引用の startIndex・endIndex が UTF-8 のバイトで数えられること。groundingSpec の includeGroundingSupports と filteringLevel(指定しなければ絞り込みがかからない)。answerSkippedReasons に NO_RELEVANT_CONTENT・LOW_GROUNDED_CONTENT があること。Vertex AI Search が Agent Search に改称中であること | Google Cloud: answer メソッド(回答と追加の質問) | 2026-10-14 |
絞り込みの構文で ANY() が完全一致を見ること、AND/OR/NOT で組み合わせられること。項目をスキーマで索引可能にする必要があること。非構造化データのメタデータを structData で持つこと。絞り込みが default_search:search の呼び出しで説明されていること | Google Cloud: メタデータによる検索の絞り込み | 2026-10-14 |
非構造化データが TXT・JSON・Markdown・PDF・HTML・DOCX・PPTX・XLSX・XLSM に対応し、1ファイル200MB、一度に10万ファイルまで取り込めること。メタデータの JSON Lines に id・structData・content(mimeType・uri)を書くこと。スキャンしたPDFにはレイアウト パーサーを有効にすることが勧められていること | Google Cloud: 取り込むデータの準備 | 2026-10-14 |
レイアウト パーサーが段落・表・リスト・見出し・ヘッダ・脚注を検出すること。chunkSize が100〜500トークン(既定500)、includeAncestorHeadings が既定で無効であること。チャンク分けはデータストアを作った後に切り替えられず、パーサーの設定の変更は後から取り込んだ文書にだけ効くこと | Google Cloud: 文書の解析とチャンク分け | 2026-10-14 |
日本語(ja-JP)が検索の機能と、回答と追加の質問(Answers and follow-ups)に対応する言語として示されていること(原文の HTML で確認)。言語ごとに別のデータストアを作ることが勧められていること | Google Cloud: 対応言語 | 2026-10-14 |
作業をしてよいか、運転を止めるかの判断、メーカーの説明書の取り込みの可否は、現場の責任者とメーカーに確かめて判断してください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1525)についてのご相談はこちらから。
