研究所の分析担当が、分析装置に出たエラーの文面から取扱説明書の節と過去のトラブルの記録を OpenSearch で引き、近い事例と対処を並べる
分析装置の制御ソフトに出たエラーの番号と文面から、取扱説明書の該当の節と、分析室で書きためたトラブルの記録の近い事例を探します。説明書の文と当時の対処を原文のまま並べ、止めるか直すかを決める材料にします。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- その他/製造
- 対象部門
- 品質管理/研究開発
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 制御ソフトに出たエラーの番号と文面を、紙かスマートフォンで控える
- 装置の型式とソフトの版を確かめ、共有フォルダから対応する取扱説明書のPDFを探す
- PDFの中をエラーの番号か文面の一部で検索し、トラブルシューティングの節を読む
- 分析室の表計算のトラブルの記録を、装置の番号と思いつく語で絞り込む
- 見つからなければ、その装置に詳しい担当者に聞く
- 説明書と記録を見比べ、自分で直すか、装置を止めてメーカーに連絡するかを決める
- やったことと結果を、トラブルの記録に1行足す
- 人担当者が画面で装置を選び、制御ソフトに出たエラーの文面を貼り、症状のメモを書いて検索のボタンを押す
- 自動装置の台帳から、メーカー・型式・ソフトの版・付いているユニットを引く
- 自動生成AIが文面とメモから、エラーの番号・文面の定型部分・数値・ユニット・症状の語を書かれたまま取り出す
- 自動Lambda が文面から数値を外して定型部分を作り、数値は別の項目にする
- 自動OpenSearch が説明書の索引を、型式と版で絞り、定型部分の語の並び(`match_phrase`)で引いて、該当の文を強調付きで返す
- 自動OpenSearch がトラブルの記録の索引を、型式で絞り、症状のメモに似た記録(`more_like_this`)で引いて、事例ごとに1件にまとめる
- 自動生成AIが、説明書の節と過去の事例を原文のまま並べた一覧を作り、説明書の警告の文を先頭に置く
- 人担当者が説明書の節と過去の事例を読み、自分で直すか、止めてメーカーに連絡するかを決める
- 人やったことと結果を、画面からトラブルの記録に足す
各工程の詳しい説明を読む
- 制御ソフトに出たエラーの番号と文面を、紙かスマートフォンで控える
- 装置の型式とソフトの版を確かめ、共有フォルダから対応する取扱説明書のPDFを探す
- PDFの中をエラーの番号か文面の一部で検索し、トラブルシューティングの節を読む
- 分析室の表計算のトラブルの記録を、装置の番号と思いつく語で絞り込む
- 見つからなければ、その装置に詳しい担当者に聞く
- 説明書と記録を見比べ、自分で直すか、装置を止めてメーカーに連絡するかを決める
- やったことと結果を、トラブルの記録に1行足す
(a)説明書の版を取り違える。 2番目で古い版の説明書を開くと、エラーの番号の意味が違うことがあります。番号が同じで原因の説明が違う版があり、気づかずに違う対処をします。
(b)文面の一部で検索しても当たらない。 制御ソフトの文面には圧力や温度の数値が入り、説明書には「圧力が上限値を超えました」のように数値の無い文で書かれています。PDFの検索に文面をそのまま貼ると、数値のせいで1件も当たりません。
(c)記録は書いた人の言葉でしか引けない。 「圧力上昇」と打っても「プレッシャー高」の記録は出ず、同じ切り分けを一から繰り返します。
(d)止めるかどうかが人で分かれる。 知っている人は「この版のこのエラーは再起動で消える」と分かり、知らない人は装置を止めてメーカーを呼びます。 続けてはいけない事例を知らずに測定を続けることもあります。
- 【人】 担当者が画面で装置を選び、制御ソフトに出たエラーの文面を貼り、症状のメモを書いて検索のボタンを押す
- 【自動】 装置の台帳から、メーカー・型式・ソフトの版・付いているユニットを引く
- 【自動】 生成AIが文面とメモから、エラーの番号・文面の定型部分・数値・ユニット・症状の語を書かれたまま取り出す
- 【自動】 Lambda が文面から数値を外して定型部分を作り、数値は別の項目にする
- 【自動】 OpenSearch が説明書の索引を、型式と版で絞り、定型部分の語の並び(
match_phrase)で引いて、該当の文を強調付きで返す - 【自動】 OpenSearch がトラブルの記録の索引を、型式で絞り、症状のメモに似た記録(
more_like_this)で引いて、事例ごとに1件にまとめる - 【自動】 生成AIが、説明書の節と過去の事例を原文のまま並べた一覧を作り、説明書の警告の文を先頭に置く
- 【人】 担当者が説明書の節と過去の事例を読み、自分で直すか、止めてメーカーに連絡するかを決める
- 【人】 やったことと結果を、画面からトラブルの記録に足す
5番目と6番目を別々に引くのは、説明書はメーカーの仕様で、記録は誰かがその時に試したことだからです。 1つの点数に混ぜると、記録の一言が説明書の警告より上に来ます。
8番目で決めるのは担当者です。 装置を止めるか、部品を外してよいかは、装置の状態と試料を知っている人にしか決められません。
02今回想定するシステム構成
取扱説明書(PDF。メーカー・型式・ソフトの版ごと) トラブルの記録(分析室の表。約3,800行) 装置の台帳(装置の番号・メーカー・型式・ソフトの版・ユニット) ▼【トリガー】説明書の追加・差し替え/記録の追加(毎晩の取り込み) AWS Lambda ── 説明書を節に分ける/記録を事例の番号でそろえる ▼ Amazon OpenSearch Service │ 説明書の索引:型式・版・節の見出し・本文(kuromoji)・警告の有無 │ 記録の索引 :事例の番号・装置・型式・エラーの文面・症状・対処・結果 ▼【人】担当者がエラーの文面と症状のメモを貼る AWS Lambda ├──▶ Claude(Amazon Bedrock)── 文面とメモを検索の条件に読み替える ├──▶ OpenSearch ── 説明書:型式と版で絞り、match_phrase、強調 ├──▶ OpenSearch ── 記録:型式で絞り、more_like_this、事例ごとにまとめる ├──▶ Claude(Amazon Bedrock)── 節と事例を原文のまま並べた一覧 ▼ 分析室の画面 ──【人】止めるか直すかを決め、結果を記録に足す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(kuromoji、match_phrase、more_like_this、highlight、collapse) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude(Amazon Bedrock の Converse API、構造化出力) | Azure OpenAI(Microsoft Foundry)、OpenAI API |
| 連携 | AWS Lambda(取り込み、節の分割、数値の取り外し、検索の呼び出し、照合) | AWS Step Functions |
| 保管 | Amazon S3(説明書のPDFと節の写し、記録の写し、検索と一覧の記録) | 社内のファイルサーバー |
装置の制御ソフトには、この構成からつなぎません。 制御ソフトはメーカーごとに違い、測定のパソコンを社内の網から切り離している分析室も多いからです。
トラブルの記録の表は、これまでどおり分析室で持ちます。 画面から足した行も、同じ表に書き戻します。索引は表の写しで、毎晩作り直します。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。毎晩の取り込みと、担当者の検索のボタンです。
取り込みは、説明書の追加・差し替えと、記録の表に足された行を拾って索引を更新します。説明書は古い版を消さず、版の番号を付けて残します。 古い版のソフトで動く装置が残っているからです。
検索のボタンは、担当者が装置を選び、エラーの文面を貼った後に押します。装置を選ばないと検索できない画面にします。 型式と版で絞らない検索は、第3章の(a)をそのまま繰り返すからです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| エラーの文面 | 制御ソフトに出た番号と文、そのときの数値(圧力・温度・流量など) | 担当者が貼る |
| 症状のメモ | 担当者が見たこと(音・漏れ・ピークの形・いつから) | 担当者が書く |
| 装置の情報 | 装置の番号、メーカー、型式、ソフトの版、付いているユニット | 装置の台帳 |
| 説明書の節 | 型式、版、章・節の見出し、本文、警告・注意の文、ページ | 取扱説明書のPDF |
| トラブルの記録 | 事例の番号、日付、装置、エラーの文面、症状、やったこと、結果、書いた人 | 分析室の表 |
| 言い換えの表 | 「プレッシャー高」→圧力上昇、「オートサンプラー」と「AS」など、分析室の書き方 | 分析室で作る表 |
質を決めるのは、装置の台帳のソフトの版です。 版が空の装置は、説明書の版で絞れません。取り込みのときに版の空の装置を数え、画面に「版の記録なし。全部の版の説明書を出しています」と出します。
事例の番号が無い行には、取り込みのときに番号を振ります。 同じ装置で7日以内に同じ文面の行があれば同じ事例とし、番号は表に書き戻して担当者が直せるようにします。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 文面の一致する説明書の節 | 説明書の索引 | filter の term(型式・版)、must の match_phrase(本文。slop を付ける) |
| 該当の文 | 説明書の索引 | highlight(unified、本文の文の切れ目で切る) |
| 症状の近い記録 | 記録の索引 | filter の term(型式)、must の more_like_this(症状・対処) |
| 事例ごとの1件と当時の対処 | 記録の索引 | collapse(事例の番号)と inner_hits(同じ事例の記録を日付の順に) |
説明書の節は、エラーの文面の定型部分を語の並びで引きます。 OpenSearch の公式のドキュメントでは、match_phrase は決まった順に語が並ぶ句を含む文書に一致し、slop を付けると語の間に他の語が入ることや、順の入れ替わりを許すとされています。既定の slop は0です。制御ソフトの文面と説明書の文は、助詞や「〜しました」「〜です」で少しずつ違うので、slop を2から始めます。
日本語の本文は kuromoji で語に分けます。 AWS の公式ページでは、Japanese(kuromoji)Analysis がすべてのドメインに入っているとされています。Sudachi も選べますが、辞書を付け直しても次の blue/green の更新まで反映されないとされているので、言い換えを頻繁に足すこの構成では kuromoji で始めます。
記録は、症状のメモに似た記録を引きます。 公式のドキュメントでは、more_like_this は入力の文からその文を特徴づける語を選び、その語を含む文書を探すとされ、like には文そのものも、索引の中の文書も渡せます。既定では、入力の中で2回未満の語(min_term_freq)と、5件未満の文書にしか出ない語(min_doc_freq)が無視されます。症状のメモは短いので、min_term_freq を1に下げます。 下げないと、1回しか書かれていない「異音」が捨てられます。
GET /lab-trouble/_search
{
"size": 10,
"_source": ["case_no", "date", "device_no", "error_text", "symptom", "action", "result"],
"query": { "bool": {
"filter": [ { "term": { "model": "LC-A20" } } ],
"must": [ { "more_like_this": {
"fields": ["symptom", "action"],
"like": "ポンプの圧力が上がる 夜間の連続測定で止まった 送液の音が大きい",
"min_term_freq": 1, "min_doc_freq": 2, "max_query_terms": 25 } } ] } },
"collapse": { "field": "case_no",
"inner_hits": { "name": "steps", "size": 5, "sort": [ { "date": "asc" } ] } },
"sort": [ "_score" ]
}
事例ごとに1件にまとめるのは、collapse です。 公式のドキュメントでは、collapse は項目の値ごとに一番上の文書だけを返し、項目は keyword か数で、doc values が有効で、1文書に1つの値である必要があるとされています。まとめた1件ごとに、inner_hits で同じ事例の記録を広げられます。inner_hits を日付の順にして、発生から対処・その後までを並べます。
応答の件数(hits の total)は、まとめる前の文書の数とされているので、画面の事例の数は Lambda で数え直します。
説明書の該当の文は、強調で取り出します。 公式のドキュメントでは、既定の強調は unified で、文を単位に分けて BM25 で点数を付け、fragment_size の既定は100文字、number_of_fragments の既定は5とされています。1つの文を途中で切らずに返すには、fragment_size を0にするとされています。説明書の手順の文が途中で切れると、意味が変わることがあるので、0にします。
GET /lab-manual/_search
{
"size": 5,
"_source": ["model", "version", "section_title", "page", "has_warning"],
"query": { "bool": {
"filter": [ { "term": { "model": "LC-A20" } }, { "term": { "version": "3.2" } } ],
"must": [ { "match_phrase": { "body": { "query": "ポンプ 圧力 上限 超え", "slop": 2 } } } ] } },
"highlight": { "fields": { "body": { "fragment_size": 0, "number_of_fragments": 3 } } }
} AIへ渡す前に整形する
- 数値を外す … エラーの文面から「25.3 MPa」「40 ℃」のような数値と単位を外し、
valuesの項目に移します。定型部分だけでmatch_phraseを引きます - 番号をそろえる … 「E-0123」「E0123」「Err.123」を
E0123のような形にそろえます。メーカーごとの番号の書き方は、言い換えの表で持ちます - 言い換えをそろえる … 「プレッシャー高」を「圧力上昇」、「AS」を「オートサンプラー」のように、分析室の表で置き換えます。置き換えの前の語も残します
- 説明書を節に分ける … PDFを章・節の見出しで分け、1節を1文書にします。警告・注意の枠の文は、その節の
warningの項目にも写します - 記録を事例でそろえる … 事例の番号の無い行に番号を振り、同じ事例の行を日付の順に並べます
- 個人の名前を伏せる … 記録の「書いた人」は索引に入れず、表の行番号だけを持ちます
1番目が、第3章の(b)を防ぎます。 外した数値は捨てずに一覧に出します。 どれだけ超えたかは文面の数値にしか無いからです。
3番目で置き換えの前の語を残すのは、表の誤りに気づくためです。 質量分析計の真空の「リーク」とポンプの液の「漏れ」は別の症状です。4番目で警告を別の項目に写すのは、警告の枠が節の頭にあり、強調の文に入らないことが多いからです。
AIに処理させる
AIの仕事は2つです。 エラーの文面と症状のメモを検索の条件に読み替えることと、検索の結果を原文のまま並べた一覧を作ることです。
| させること | させないこと |
|---|---|
| 番号・文面・数値・ユニット・症状の語を、書かれたまま取り出す | 書かれていないユニットや原因を推し量ること |
| 説明書の節と強調の文を、文言を変えずに並べる | 説明書の手順を要約したり、言い換えたりすること |
| 説明書の警告の文を、一覧の先頭に写す | 警告を省く、和らげる、「通常は問題ない」と書くこと |
| 過去の事例の対処と結果を、記録のまま並べる | 事例から「この対処で直ります」と結論を書くこと |
| 説明書と記録が食い違う点を、両方の文を並べて示す | どちらが正しいかを決めること |
説明書の手順を言い換えさせないのが、この構成でいちばん大事な線です。 「パージバルブを開けてから流量を上げる」を「流量を上げてパージする」と書き換えると、順番が入れ替わり、装置を傷めることがあります。 手順は強調で返ってきた文をそのまま写させます。
結論を書かせないのは、過去に再起動で直った事例でも今回も同じとは限らないからです。
指示内容を固定する
1回目(検索の条件への読み替え)の指示です。
あなたは研究所の分析室で、分析装置のエラーを整理する立場です。
【エラーの文面】と【症状のメモ】から、検索に使う条件を取り出してください。
【取り出すもの】
- error_code_raw: エラーの番号。書かれたまま。無ければ空
- fixed_text: エラーの文面から、数値と単位を除いた部分。語順は変えない
- values: 文面に出てくる数値と単位。書かれたまま(「25.3 MPa」など)
- unit_raw: ユニットの名前。書かれたまま(「ポンプ」「AS」など)。無ければ空
- symptom_terms: 症状のメモに書かれた症状の語。書かれたまま
- since_raw: いつからか。書かれたまま。無ければ空
【厳守事項】
- 書かれていないユニットや原因を推し量らないでください。
- 数値を丸めたり、単位を換算したりしないでください。
- エラーの文面の語順を変えないでください。
- 症状のメモに無い症状を足さないでください。
- 人の名前は写さないでください。
【装置】{device}
【エラーの文面】{error_text}
【症状のメモ】{memo}
2回目(一覧の作成)の指示です。
あなたは研究所の分析室で、エラーの切り分けの材料を並べる立場です。
【説明書の節】は取扱説明書の索引の検索結果、【過去の事例】は分析室のトラブルの
記録の検索結果です。どちらも原文です。
【書き方】
- 最初に、【説明書の節】の warning を、文言を変えずにすべて写してください。
- 説明書の節ごとに、型式・版・節の見出し・ページと、強調の文をそのまま写して
ください。
- 過去の事例ごとに、日付・装置・エラーの文面と、steps の「やったこと」と
「結果」を日付の順にそのまま写してください。
- 説明書と過去の事例で、やったことが食い違うときは、両方の文を並べて
conflicts に書いてください。
【厳守事項】
- 説明書の手順を要約・言い換え・並べ替えしないでください。
- 「この対処で直ります」「続けて問題ありません」と書かないでください。
- 装置を止めるか、部品を外すかについて、あなたの考えを書かないでください。
- 検索結果に無い手順や数値を書かないでください。
- 検索結果が0件のときは、0件であることだけを書いてください。
【エラーの条件】{conditions}
【説明書の節】{manual_hits}
【過去の事例】{case_hits}
「warning をすべて最初に写す」を指示の先頭に置くのは、警告がいちばん落ちやすいからです。 AIは一覧を読みやすくしようとして、エラーの文面に関係の薄い警告を省きます。写した警告は、後で warning の項目と照合します。
「0件のときは0件と書く」も外せません。 何も当たらないと、AIは一般的な知識で手順らしいものを書くことがあります。
出力形式を固定する
Bedrock の Converse API の outputConfig.textFormat に JSON スキーマを渡し、2回目は次の形で受け取ります。
{
"request_no": "",
"device": { "device_no": "", "model": "", "version": "" },
"warnings": [ { "doc_id": "", "text": "" } ],
"manual_sections": [
{ "doc_id": "", "section_title": "", "page": 0, "quotes": [""] } ],
"cases": [
{ "case_no": "", "date": "", "error_text": "",
"steps": [ { "date": "", "action": "", "result": "" } ] } ],
"conflicts": [ { "manual_quote": "", "case_quote": "" } ],
"zero_hit": "none | manual | cases | both"
}
AWS の公式ページでは、Converse API では outputConfig.textFormat に JSON スキーマを渡すと応答がスキーマに沿うとされています。すべての object に additionalProperties: false が要り、数値の minimum・maximum、文字列の minLength・maxLength は使えず、minItems は0と1だけとされています。新しいスキーマは初めの1回に最大約90秒かかるとされているので、呼び出しの待ち時間を120秒以上にします。
1つ目の理由は、写した文を原文と照合できることです。 quotes と warnings の text が、検索で返った強調の文と warning の項目にそのまま含まれているかを Lambda で確かめます。 1文字でも違えば一覧を出さず、検索の結果だけを出します。
2つ目は、zero_hit で引けなかった側を画面に出せることです。 cases なら「分析室で初めての事例です。結果を必ず記録に足してください」、both なら「説明書も記録も当たりません。メーカーのサポートへ」と出します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有フォルダ(説明書のPDF) | 毎晩の取り込み(読み取りのみ) | 説明書の索引の元 |
| トラブルの記録の表 | 毎晩の取り込み、画面からの書き戻し | 記録の索引の元、新しい事例の追加 |
| 装置の台帳 | 照会(読み取りのみ) | 型式・版・ユニット |
| Amazon OpenSearch Service | Lambda からの登録・検索 | 説明書と記録の索引 |
| Amazon Bedrock | Converse API(Claude) | 読み替えと一覧 |
| 分析室の画面 | 社内の画面 | 文面とメモの貼り付け、一覧、結果の記入 |
人が確認する
- 装置と版を見る … 画面の型式とソフトの版が、目の前の装置と合っているかを確かめます
- 警告を読む … 一覧の先頭の警告を、手を動かす前に読みます
- 説明書の節を開く … 強調の文だけでなく、節の前後をPDFのページで確かめます
- 過去の事例を読む … 当時の装置の版と、今の版が同じかを確かめます
- 止めるか直すかを決める … 自分で直す範囲を超えるものは、装置を止めてメーカーに連絡します
- 結果を記録に足す … やったことと結果を、画面から記録に書きます
3番目を省かないでください。 強調の文は検索の語を含む文だけで、その前の文に「電源を切ってから」と書かれていることがあります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 装置の台帳に版が無い | 全部の版の説明書を引き、「版の記録なし」と出す。台帳の担当へ知らせる |
| 説明書が0件 | slop を広げずに、版を外した検索の件数を示す。番号だけで引いた件数も示す |
| 記録が0件 | 「分析室で初めての事例」と出し、結果の記入を必ず求める |
| 文面が英語で、説明書が日本語 | 番号で引いた件数を示す。文面の訳はさせない |
| 1つの事例の行が多すぎる | inner_hits は5行までにし、残りは「ほかに〇行」と出す |
| 写した文が原文と合わない、構造化出力が返らない | 一覧を出さず、検索の結果だけを出す |
| 説明書が改訂された | 古い版も残す。台帳の版と合わせて引く |
2行目で slop を広げないのは、広げるほど違う節が当たるからです。 「圧力」と「上限」が離れて出てくる別の節が上に来ます。4行目で訳をさせないのも、訳語が説明書の語と合う保証が無いからです。
記録を残す
- 検索ごとの、装置・版・エラーの文面・症状のメモ・1回目の JSON
- 説明書の検索の条件と、当たった節・強調の文・警告
- 記録の検索の条件と、当たった事例・
inner_hits - 2回目の JSON と、原文との照合の結果
- 担当者が決めたこと(自分で直した/止めてメーカーに連絡した)と、記録に足した行の番号
- 言い換えの表を更新した日と担当
5つ目は、引けた事例が役に立ったかを見る材料です。 0件のまま記録に足されなかった件は、毎月数えて分析室の会議で確かめます。
04実装レベルの3段階
最小構成では件数がさばけません。 PDFと表を手で検索するので、1件の時間はあまり減りません。確かめるための段階です。 半自動化で、1件30分が18分程度になります。 説明書の節は型式と版で絞って引けますが、記録は同じ事例の行が上位を埋め、警告を節の頭まで読みに行く手間が残ります。本格構成で10分になり、この段階が本記事の想定です。 差が大きいのは、事例ごとのまとめと警告の写しが、毎回の読み直しだからです。 段階を飛ばさないでください。 半自動化を1か月使うと、引けなかった言い換えと版の空の装置が先に分かります。
05工数削減シミュレーション
導入後 240件 × 10分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 液体クロマトグラフ・ガスクロマトグラフ・質量分析計などの分析装置を複数のメーカーで20台以上持ち、制御ソフトのエラーが月に数百回出る研究所や受託分析の会社の分析室。取扱説明書がPDFで、トラブルの記録が分析室の表計算やノートに書きためてあるのに、探すのが装置に詳しい担当者の記憶に頼っている場合。同じエラーで、人によって装置を止めたり止めなかったりしている場合。AWS を使える担当か委託先がいる場合。
- 分析装置が数台で、全部の装置の扱いを1人の担当者が把握している場合。トラブルの記録がほとんど残っておらず、取扱説明書の索引だけで足りる場合(メーカーのサポートの検索で足ります)。装置の保守をメーカーとの契約にすべて任せていて、分析室でエラーの切り分けをしない場合。なお、装置を止めるか続けるかの判断、部品の交換や分解の可否、測定の結果を使えるかの判断は、この構成では代替できません。説明書の節と過去の事例を原文のまま並べるまでです。
07最小構成で試す方法
- 過去3か月のトラブルの記録から、エラーの文面が分かる20件を選ぶ(うち数件は、当時に説明書の節がすぐ見つからなかったものを入れる)
- その20件について、当時どの説明書のどのページを見たか、誰に聞いたかを書き出す
- 20件の文面を、手元のAIサービスの画面に1件ずつ貼り、数値と単位を除いた部分と症状の語を取り出させる
- 取り出した定型部分で、該当の装置の説明書のPDFを検索し、当時見たページに当たるかを見る
- 症状の語で、トラブルの記録の表を絞り込み、当時の事例に当たるかを見る
20件は必ずやってください。 OpenSearch を立てる前に、数値を外せば説明書に当たるのかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 定型部分で当時のページに当たった | 索引と検索の画面に進む |
| 数値を外しても当たらない | 文面と説明書の書き方が違う。番号の表を先に作る |
| 記録が言い換えで引けない | 言い換えの表が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 引けなかった語を言い換えの表に足し、同じ20件で引き直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 文面を貼っても説明書に当たらない | 数値と単位を外して定型部分で引く |
| 古い版の説明書が当たる | 型式と版で必ず絞る。台帳の版を空にしない |
| 症状のメモが短く、似た記録が出ない | more_like_this の min_term_freq を1に下げる |
| 同じ事例が上位を埋める | 事例の番号で collapse し、inner_hits で広げる |
| 強調の文が途中で切れる | fragment_size を0にして文を切らない |
| 警告が一覧に出ない | 節の警告を warning の項目に写し、必ず先頭に出す |
| AIが手順を言い換える | 文言を変えずに写させ、原文と照合して違えば出さない |
| 0件なのに手順らしい文が出る | 0件のときは0件とだけ書かせる |
slop を広げすぎて違う節が当たる | 2から始め、広げずに版や番号を変えて引き直す |
| 記録が足されない | 一覧の画面から結果を記入しないと閉じられないようにする |
上の2行が、この構成の失敗のほとんどです。 どちらも「書いてあるのに見つからない」という同じ見た目から出発しています。
下の2行も早く効いてきます。 slop を広げて当てにいくと担当者が一覧を疑って読まなくなり、記録が足されないと詳しい担当者に聞きに行く流れに戻ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 装置のエラーの文面と数値、症状のメモ、取扱説明書、分析室のトラブルの記録です。記録には、測っていた試料の名前や研究の課題の名前が書かれていることがあります。
- 生成AIに渡す範囲を絞る … 1回目は文面とメモだけ、2回目は検索で当たった節と事例だけを渡します。記録の表を丸ごと渡しません。 取り込みのときに、試料の名前や研究の課題の名前の列を索引から外す設計にできます
- 装置を止めるかどうかを自動で決めない … 出すのは判断の材料までです。止めるか続けるかは、装置と試料を知っている担当者が決めます
- 説明書の警告を省かない … 高電圧、可燃性のガス、高温のユニットを持つ装置があります。警告の写しを先頭に置き、原文と照合するのは、この構成の安全のための線です
- 説明書の扱いを確かめる … 説明書を社内の索引に入れることが、メーカーとの取り決めで許されているかを導入の前に確かめます
- 書いた人の名前を索引に入れず、メーカーへ一覧をそのまま送らない … 誰のトラブルが多いかを見る使い方をしません。メーカーへは文面と装置の情報と、やったことだけを伝えます
誤りが起きた場合のリスクは、違う版の手順で装置を傷めることと、続けてはいけない状態で測定を続けることの2つです。 前者は版の絞り込みで、後者は警告の写しで防ぎます。
10まず何から始めるか
1週目:装置の台帳にソフトの版の列を足す
装置の台帳に、メーカー・型式・ソフトの版・付いているユニットの列を足します。40台すべてを一度に埋める必要はありません。エラーの多い上位10台から埋めます。 この10台で月のエラーの大半が出ます。
2週目:20件で試す
過去3か月の記録から20件を選び、文面から数値を外した定型部分で説明書を引けるかを試します。当時見たページに当たるか、言い換えをそろえると記録が引けるかを最優先で見ます。
3週目:言い換えの表と、説明書の分け方を決める
分析室の言い換えを表にし、1社分の説明書の節と警告の枠の分け方を決めます。 説明書を索引に入れてよいかも、メーカーとの取り決めで確かめます。
4週目:説明書の索引から作る
1社分の説明書を OpenSearch に入れ、型式と版で絞った match_phrase と強調を、20件で試します。この時点では記録の索引を作らず、説明書の節の当たり方だけを見ます。
2か月目: 記録の索引と more_like_this、事例ごとのまとめを足し、残りの3社の説明書を入れます。3か月目以降: 生成AIの一覧と原文との照合、結果の書き戻しを足し、1件30分が何分になったかを実測します。0件のまま記録に足されなかった件が毎月減り、詳しい担当者に聞きに行く回数が減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
match_phrase が決まった順に語が並ぶ句を含む文書に一致すること。slop で語の間に他の語が入ることや順の入れ替わりを許し、既定が0であること | OpenSearch Documentation: Match phrase | 2026-10-29 |
more_like_this が入力の文を特徴づける語を選んで、その語を含む文書を探すこと。like に文と文書を渡せること。min_term_freq の既定が2、min_doc_freq の既定が5、max_query_terms の既定が25であること | OpenSearch Documentation: More like this | 2026-10-29 |
既定の強調が unified で、文を単位に BM25 で点数を付けること。fragment_size の既定が100文字、number_of_fragments の既定が5で、fragment_size を0にすると文を切らずに返すこと | OpenSearch Documentation: Highlight query matches | 2026-10-29 |
collapse が項目の値ごとに一番上の文書だけを返し、項目が keyword か数で doc values が有効・1文書に1つの値である必要があること。inner_hits で広げられること。応答の件数がまとめる前の数で、まとまった数は示されないこと | OpenSearch Documentation: Collapse search results | 2026-10-29 |
| Amazon OpenSearch Service で Japanese(kuromoji)Analysis がすべてのドメインに入っていること。Sudachi が選べるプラグインで、辞書を付け直しても次の blue/green の更新まで反映されないこと | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-29 |
Converse API の outputConfig.textFormat で JSON スキーマに沿った応答を受け取れること。すべての object に additionalProperties: false が要ること。数値の minimum・maximum、文字列の minLength・maxLength が使えず、minItems が0と1だけであること。新しいスキーマの初回に最大約90秒かかること | AWS: Structured outputs(Amazon Bedrock) | 2026-10-29 |
装置を止めるか、部品を外してよいかは、装置のメーカーの説明書と分析室の責任者の判断に従ってください。 本記事は公開されている製品のドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2254)についてのご相談はこちらから。
