工場の設備保全の担当が、製造中止の部品の代替の候補を、過去の置き換えの記録とメーカーの資料から OpenSearch で探し、仕様の違いを並べる
製造中止になった設備の部品について、メーカーが示した後継品、自社で過去に同じ部品を置き換えた例、仕様の近い品を探します。候補ごとに仕様の違いと、過去の置き換えで取付けや配線を変えたことを、記録の番号付きで並べます。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 建設/物流/製造
- 対象部門
- 生産/購買
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 製造中止の案内か、手配できない部品の品番を受け取る
- 共有フォルダで、そのメーカーの製造中止の案内を探し、後継品が書かれているかを見る
- 保全の管理の仕組みで、同じ品番を交換した記録を探し、作業の報告の文を読む
- 後継品が無いか合わないときは、メーカーのカタログの仕様表を開き、仕様の近い品を探す
- 候補ごとに、定格・寸法・取付け・配線・設定の項目を元の部品と見比べる
- ベテランの担当に「前にこれを替えたときに何か変えたか」を聞く
- 代替を決め、購買の担当に手配を頼み、予備品の台帳を直す
- 自動メーカーの資料の PDF が共有フォルダに置かれると、Lambda が文字を取り出し、生成AIが品番と仕様の行を表に起こして索引に入れる
- 自動毎晩、保全の管理の仕組みの交換の記録を取り込み、生成AIが報告の文から新しい品番と取付けで変えたことを取り出す
- 人保全の担当が、代替を探す部品の品番と設備を画面に入れる
- 自動OpenSearch が、過去の置き換えの記録とメーカーの案内を品番で引き、仕様の近い品を nested の仕様で引く
- 自動Lambda が、候補ごとに元の部品と仕様の行を名前と単位で突き合わせ、違う項目を並べる
- 自動生成AIが、候補・仕様の違い・過去に変えたこと・根拠の資料の箇所を、記録のまま並べた表にする
- 人保全の担当が、根拠の資料の箇所を開いて確かめ、取り付けられるかを判断して代替を決める
- 人決めた代替と、取付けで変えることの予定を画面に残し、購買の担当に手配を頼む
各工程の詳しい説明を読む
- 製造中止の案内か、手配できない部品の品番を受け取る
- 共有フォルダで、そのメーカーの製造中止の案内を探し、後継品が書かれているかを見る
- 保全の管理の仕組みで、同じ品番を交換した記録を探し、作業の報告の文を読む
- 後継品が無いか合わないときは、メーカーのカタログの仕様表を開き、仕様の近い品を探す
- 候補ごとに、定格・寸法・取付け・配線・設定の項目を元の部品と見比べる
- ベテランの担当に「前にこれを替えたときに何か変えたか」を聞く
- 代替を決め、購買の担当に手配を頼み、予備品の台帳を直す
(a)過去の置き換えが引けない。 3番目で、旧品番で記録を引いても、新しい品番は備考の欄に、取付けで変えたことは報告の文の中にあります。同じ部品を3年前に別の工程で置き換えていても、気づかずに一から探し直すことがあります。
(b)メーカーの資料が探せない。 2番目と4番目で、PDF を1つずつ開きます。製造中止の案内が品番の一覧の表になっていて、自分の品番がどの表の何行目にあるかを目で追うことも多くあります。
(c)仕様の見比べが記憶頼み。 5番目で、検出距離や応答時間のような数字は表で比べられますが、「この系統は後継品でコネクタの向きが変わる」「出力の形式が変わって設定を直した」のような話は、置き換えた担当しか知りません。6番目で聞く相手が休みなら、作業は止まります。
(d)同じ部品を何度も探す。 探した結果が記録に残っていないので、別の工程の担当がまた最初から探します。
- 【自動】 メーカーの資料の PDF が共有フォルダに置かれると、Lambda が文字を取り出し、生成AIが品番と仕様の行を表に起こして索引に入れる
- 【自動】 毎晩、保全の管理の仕組みの交換の記録を取り込み、生成AIが報告の文から新しい品番と取付けで変えたことを取り出す
- 【人】 保全の担当が、代替を探す部品の品番と設備を画面に入れる
- 【自動】 OpenSearch が、過去の置き換えの記録とメーカーの案内を品番で引き、仕様の近い品を nested の仕様で引く
- 【自動】 Lambda が、候補ごとに元の部品と仕様の行を名前と単位で突き合わせ、違う項目を並べる
- 【自動】 生成AIが、候補・仕様の違い・過去に変えたこと・根拠の資料の箇所を、記録のまま並べた表にする
- 【人】 保全の担当が、根拠の資料の箇所を開いて確かめ、取り付けられるかを判断して代替を決める
- 【人】 決めた代替と、取付けで変えることの予定を画面に残し、購買の担当に手配を頼む
5番目を Lambda で作るのは、比べ方を決めておくためです。 「DC24V」と「24VDC」をそろえた後に、同じ名前・同じ単位の行どうしを比べます。AIに比べさせると、単位の違う値を同じとみなすことが揺れます。
7番目で決めるのは保全の担当です。 画面には「互換あり」も「おすすめ」も出しません。
02今回想定するシステム構成
メーカーの資料(製造中止の案内・後継品の案内・仕様表の PDF) ▼【トリガー】共有フォルダから S3 への写し AWS Lambda ── PDF から文字を取り出す ├──▶ Claude(Amazon Bedrock)── 品番の一覧と仕様の行を表に起こす ▼ Amazon OpenSearch Service │ 資料の索引:メーカー・資料の種類・品番(normalizer)・本文(kuromoji) │ 仕様(nested:名前・値・単位・条件) │ 置き換えの索引:旧品番・新品番・設備・変えたこと・結果 ▲ 保全の管理の仕組み ──【トリガー】毎晩の書き出し ▼【人】保全の担当が品番と設備を入れる AWS Lambda ├──▶ OpenSearch ── 品番で引く/nested の仕様で引く/根拠の箇所の抜粋 ├──▶ 仕様の違いを並べる ├──▶ Claude(Amazon Bedrock)── 候補と違いを記録のまま並べた表 ▼ 保全の担当の画面 ──【人】資料を確かめ、代替を決めて手配を頼む
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(kuromoji、normalizer、nested、ハイライト) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude(Amazon Bedrock の Converse API、構造化出力) | Azure OpenAI(Microsoft Foundry)、OpenAI API |
| 連携 | AWS Lambda(PDF の文字の取り出し、取り込み、品番のそろえ、仕様の突き合わせ、検索の呼び出し) | AWS Step Functions |
| 保管 | Amazon S3(資料の写し、取り込みの記録、探した結果と決めた代替) | 社内のファイルサーバー |
保全の管理の仕組みと予備品の台帳には、この構成から書き込みません。 決めた代替は画面に残し、台帳を直すのは保全の担当がいつもの手順で行います。
OpenSearch Service には、日本語の形態素解析の kuromoji が全ドメインに入っています。 AWS の公式ページの「エンジンのバージョンごとのプラグイン」の表では、Japanese (kuromoji) Analysis と ICU Analysis が全ドメインに含まれるとされ、日本語向けとして推奨と書かれた Sudachi はオプションのプラグインとして関連付けて使う形です。本記事は既定で入っている kuromoji で組み、必要になれば Sudachi を試します。
03どうやって実装するのか
処理の起点を決める
起点は3つあります。メーカーの資料の取り込み、保全の記録の取り込み、保全の担当の検索のボタンです。
資料の取り込みは、共有フォルダの「メーカー資料」に PDF が置かれたら S3 へ写し、それを起点に Lambda を動かします。商社からメールで届いた案内も、担当がこのフォルダへ置くことを決まりにします。
保全の記録は、毎晩、前の日までの部品の交換の記録を書き出し、記録の番号で上書きして取り込みます。
検索のボタンは、保全の担当が品番と設備を入れて押します。製造中止の案内に品番が何十行も並んでいるときは、案内の PDF を選ぶと、その中の品番を自社の予備品の台帳と照らし、自社で使っている品番だけを1件ずつ検索にかけます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 探す部品 | 品番、メーカー、使っている設備と工程、探す理由(製造中止・故障・台帳の見直し) | 保全の担当が入れる |
| 製造中止の案内 | 対象の品番の一覧、製造中止の時期、メーカーが示す後継品 | 共有フォルダの PDF |
| 後継品の案内・仕様表 | 品番、仕様の行(名前・値・単位・条件)、注意書き | 共有フォルダの PDF |
| 置き換えの記録 | 記録の番号、設備、旧品番、新品番、作業の報告の文、作業の日、その後の故障の有無 | 保全の管理の仕組み |
| 予備品の台帳 | 品番、使っている設備、在庫の数 | 予備品の台帳 |
| 仕様の名前の表 | 「定格電圧」「電源電圧」「使用電圧」を同じ名前にそろえる表と、単位の言い換え | 保全の担当で作る表 |
質を決めるのは、いちばん下の仕様の名前の表です。 メーカーごとに、同じ意味の仕様を違う名前で書きます。名前がそろっていないと、同じ定格電圧どうしが比べられず、違う項目として出てきません。 表に無い名前は、名前を書かれたまま残し、比べずに並べます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 過去に同じ部品を置き換えた記録 | 置き換えの索引 | term(old_part_norm) |
| メーカーが示した後継品 | 資料の索引 | term(parts_norm)と filter の term(doc_type: eol_notice) |
| 仕様の近い品 | 資料の索引 | nested(specs)の中で名前の term と値の range |
| 根拠の箇所の抜粋 | 資料の索引 | highlight(body) |
品番は normalizer を付けた keyword で持ちます。 OpenSearch の公式のドキュメントでは、normalizer は analyzer に似ていますが1つのトークンだけを出し、文字単位の操作をするフィルターだけを持てるとされています。全角を半角に、ハイフン・空白・スラッシュを消し、大文字にそろえます。 検索の側の品番も、Lambda で同じ規則でそろえてから渡します。
仕様は nested の項目で持ちます。 公式のドキュメントでは、nested の項目の中の内側の条件は同じ1つのオブジェクトに一致しなければならず、object として持つと値が配列に平らにされ、同じ条件が別々のオブジェクトの値に一致してしまうとされています。仕様の行を object で持つと、「定格電圧」の名前と、別の行の「24」という値が結び付きます。
GET /maker_docs/_search
{
"size": 10,
"_source": ["doc_no", "maker", "doc_type", "part_no", "file", "page"],
"query": { "bool": {
"filter": [
{ "term": { "category": "proximity_sensor" } },
{ "term": { "doc_type": "spec_sheet" } },
{ "nested": { "path": "specs", "query": { "bool": { "filter": [
{ "term": { "specs.name": "supply_voltage" } },
{ "term": { "specs.unit": "V_DC" } },
{ "range": { "specs.value_min": { "lte": 24 } } },
{ "range": { "specs.value_max": { "gte": 24 } } } ] } } } },
{ "nested": { "path": "specs", "query": { "bool": { "filter": [
{ "term": { "specs.name": "thread_size" } },
{ "term": { "specs.value_text": "M12" } } ] } } } } ],
"should": [
{ "nested": { "path": "specs", "score_mode": "max",
"inner_hits": { "name": "sensing_distance" },
"query": { "bool": { "filter": [
{ "term": { "specs.name": "sensing_distance" } },
{ "range": { "specs.value_max": { "gte": 8 } } } ] } } } } ] } },
"highlight": { "fields": { "body": { "fragment_size": 120, "number_of_fragments": 3 } } }
}
inner_hits で、どの仕様の行に当たったかを取ります。 公式のドキュメントでは、一致した内側のオブジェクトが返り、_nested にその位置が入るとされています。
根拠の箇所は highlight で抜き出します。 公式のドキュメントでは、既定の方式は unified で文を単位に BM25 で点数を付け、fragment_size の既定は100文字とされています。「後継品」の行や注意書きを、資料を開く前に読めるようにします。
AIへ渡す前に整形する
- PDF から文字を取り出す … 文字が入っている PDF は Lambda で文字とページ番号を取り出します。文字の入っていない画像の PDF は「手入力が必要」として担当に回します
- 品番の一覧と仕様の行を起こす … 生成AIに、取り出した文字から品番の一覧と、仕様の行(名前・値・単位・条件)を書かれたまま表にさせます
- 仕様の名前と単位をそろえる … 仕様の名前の表で
supply_voltageなどの名前に、「DC24V」「24VDC」をvalue 24・unit V_DCに、「DC10〜30V」をvalue_min 10・value_max 30にします - 品番をそろえる … normalizer と同じ規則の関数で
part_normを作ります - 置き換えの記録を起こす … 生成AIに、作業の報告の文から新しい品番と、取付けで変えたこと(ブラケット・配線・設定・ケーブル)を書かれたまま取り出させます
- 置き換えた後の故障をつなぐ … 同じ設備で、置き換えから180日以内に同じ部品の故障があれば
failed_afterに記録の番号を入れます
3番目の範囲は、最小と最大に分けて持ちます。 1つの値しか書かれていない仕様は、最小と最大に同じ値を入れます。こうしておくと「24V が範囲に入っているか」を2つの range で引けます。
日本語の本文は kuromoji で分けます。 公式のドキュメントでは、IPAdic の辞書による形態素解析で、既定の search モードでは複合語を分けた語と複合語の形の両方を出し、user_dictionary_rules で辞書の行を直接書けるとされています。「近接センサ」「電磁弁」のような語を辞書の行に足します。
AIに処理させる
AIの仕事は3つです。 メーカーの資料から品番の一覧と仕様の行を起こすこと、作業の報告の文から新しい品番と取付けで変えたことを取り出すこと、候補と違う点を記録のまま並べた表を作ることです。
| させること | させないこと |
|---|---|
| 資料に書かれた品番と仕様の行を、書かれたまま表に起こす | 書かれていない仕様を、品番の並びや似た品から推し量ること |
| 報告の文から、新しい品番と変えたことを書かれたまま取り出す | 報告の文に無い作業を足すこと |
| 候補ごとに、Lambda が作った違う項目と、過去に変えたことを並べる | 「互換あり」「代替可能」「おすすめ」を書くこと |
| 資料の箇所(ファイル・ページ)を候補ごとに付ける | 安全機能・安全規格への適合を書くこと |
「互換あり」を書かせないのが、この構成でいちばん大事な線です。 定格電圧と取付けねじが同じでも、出力の形式やケーブルの向きが違えば使えません。急いでいる故障の場面ほど、その一言で手配が進みます。
安全に関わる部品は、さらに線を引きます。 非常停止や安全柵の扉のスイッチは、仕様が似ていても安全の機能の評価が変わります。取り込みのときに区分を付け、その候補には「安全の担当の確認が必要」を必ず出します。
指示内容を固定する
1回目(メーカーの資料を表に起こす)の指示です。
あなたは工場の設備保全の担当の補助として、メーカーの資料を整理する立場です。
【資料の文字】は、メーカーの PDF から取り出した文字とページ番号です。
【取り出すもの】
- doc_type: 資料の種類。eol_notice(製造中止の案内)/successor(後継品の案内)/
spec_sheet(仕様表)/other から1つ
- parts: 資料に書かれた品番の一覧。品番ごとに、書かれたままの品番、ページ、
製造中止の時期(書かれていれば)、メーカーが示した後継品の品番(書かれていれば)
- specs: 品番ごとの仕様の行。名前・値・単位・条件(「周囲温度23℃」など)を書かれたまま
- notes: 注意書き(「取付け寸法が異なります」など)を書かれたままと、そのページ
【厳守事項】
- 書かれていない仕様や後継品は空にしてください。似た品番から推し量らないでください。
- 品番の文字を直さないでください。ハイフン・空白・全角も書かれたまま写してください。
- 値と単位を書かれたまま写してください。単位の換算をしないでください。
- 「互換」「代替可能」の判断を書かないでください。資料に書かれている文はそのまま写します。
【資料の文字】{pdf_text}
3回目(候補の表)の指示です。
あなたは工場の設備保全の担当に、製造中止の部品の代わりの候補を示す立場です。
【候補】は OpenSearch が返した資料と置き換えの記録です。
【違う項目】はシステムが作ったものです。
【書き方】
- 候補を「メーカーが示した後継品」「過去に自社で置き換えた品」「仕様の近い品」に分けて
並べてください。
- 候補ごとに、品番、根拠の資料(ファイル名・ページ)または記録の番号を書いてください。
- 【違う項目】は、文言を変えずにそのまま書いてください。
- 過去の置き換えで変えたこと(ブラケット・配線・設定など)は、記録の文のまま書いてください。
- 置き換えた後に故障の記録がある候補は、その記録の番号を書いてください。
- 安全に関わる部品の区分が付いた候補には「安全の担当の確認が必要」と書いてください。
【厳守事項】
- 「互換あり」「代替可能」「おすすめ」「問題ありません」と書かないでください。
- 候補の順位を付けないでください。並べる順はシステムの順のままにしてください。
- 記録や資料に無いことを書かないでください。
【探す部品】{target}
【候補】{hits}
【違う項目】{differences}
2回目(作業の報告の文の取り出し)は、1回目と同じ厳守事項で、新しい品番と変えたことだけを書かれたまま取り出させます。
「候補の順位を付けない」を書くのは、AIが自分で並べ直すためです。 何も言わないと、一番上に置いた候補を「最も近い」と書き添えます。 並べる順は検索の点数と区分で決めます。
出力形式を固定する
Bedrock の Converse API の outputConfig.textFormat に JSON スキーマを渡し、3回目は次の形で受け取ります。
{
"target": { "part_norm": "", "maker": "", "equipment": "" },
"groups": [
{ "kind": "maker_successor | past_replacement | spec_near",
"candidates": [
{ "part_norm": "", "source": { "doc_no": "", "file": "", "page": 0 },
"record_no": "", "differences": [""], "changes_made": [""],
"failed_after": "", "safety_related": false } ] } ],
"to_confirm": [""]
}
AWS の公式ページでは、Converse API の outputConfig.textFormat に JSON スキーマを渡すと応答がスキーマに沿い、enum が使えるとされています。すべての object に additionalProperties: false が要り、数値の minimum・maximum と文字列の長さの制約は使えず、任意の項目は全体で12個までです。 新しいスキーマの初回は文法の組み立てに最大約90秒かかるため、Lambda の待ち時間を120秒以上にします。
1つ目の理由は、AIが返した品番と資料の場所を索引と照合できることです。 part_norm・doc_no・page が検索の結果に無ければ、表を出さずに作り直します。
2つ目は、differences を Lambda が作った文と1字ずつ照合できることです。 違う項目は次の規則で作ります。
| 比べる仕様 | 違うときの文 |
|---|---|
| 同じ名前・同じ単位で値が違う | 〜が違います(元:〜/候補:〜) |
| 元の部品にあって候補に無い | 〜が候補の資料に書かれていません |
| 単位が違う | 〜の単位が違います(元:〜/候補:〜)。比べていません |
| 名前の表に無い仕様 | 〜は名前がそろっていないため比べていません |
3行目と4行目が大事です。 比べられなかった仕様を黙って落とすと、画面の上では違いが無いように見えます。 比べなかったことを、違う項目と同じ欄に出します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 共有フォルダ | S3 への写し(読み取りのみ) | メーカーの資料の PDF |
| 保全の管理の仕組み | 毎晩の書き出し(読み取りのみ) | 部品の交換の記録と作業の報告 |
| 予備品の台帳 | 書き出し(読み取りのみ) | 使っている設備と在庫 |
| Amazon OpenSearch Service | Lambda からの登録・検索 | 資料の索引と置き換えの索引 |
| Amazon Bedrock | Converse API(Claude) | 資料と報告の起こし、候補の表 |
| 保全の担当の画面 | 社内の画面 | 品番の入力、候補と違う点、決めた代替の記録 |
決めた代替は、「見た資料と記録」と一緒に S3 に残します。 手配の依頼と台帳の更新は、いつもの手順で行います。
人が確認する
- 品番を見る … 入れた品番が、部品の銘板と同じかを確かめます
- 根拠の資料を開く … 後継品の候補は、製造中止の案内の該当のページで確かめます
- 違う項目を見る … 比べていない仕様と書かれていない仕様を、メーカーの資料で確かめます
- 過去に変えたことを見る … ブラケット・配線・設定の変更が今回も要るかを考えます
- 安全に関わる部品は安全の担当に回す … 保全の担当だけで決めません
- 決めて残す … 決めた代替、見た資料と記録の番号、変える予定のことを残します
2番目を省かないでください。 案内の表は行がずれて読まれることがあり、後継品が隣の行のものでも画面では区別がつきません。
例外に対処する
| 起きること | 対応 |
|---|---|
| PDF に文字が入っていない | 「手入力が必要」として担当に回し、品番と後継品だけを人が書き写す |
| 品番が資料にも記録にも無い | 品番のそろえ方を確かめ、メーカーと品目だけで仕様の近い品を引く |
| メーカーの案内に後継品が書かれていない | 「後継品の記載なし」と出し、仕様の近い品と過去の置き換えだけを並べる |
| 仕様の名前が表に無い | 書かれたまま並べ、「比べていません」と出す。名前の表に足す候補として記録する |
| 過去の置き換えの後に故障がある | 故障の記録の番号を候補に付け、画面で目立たせる |
| AIの品番が検索の結果に無い | 表を出さずに作り直す。2回続けば候補の一覧だけを出す |
| 構造化出力が返らない | 候補の一覧と違う項目だけを出し、表は担当が見る |
| 安全に関わる部品 | 候補に関わらず「安全の担当の確認が必要」を出す |
5行目が、記憶頼みの知識を拾う行です。 「後継品に替えたら半年で壊れた」は、記録の上では離れた2件の交換の記録です。つないで出すと、ベテランに聞かなくても気づけます。
記録を残す
- 取り込んだ資料ごとの、元の PDF の場所、取り出した文字、起こした表、担当が直した箇所
- 置き換えの記録ごとの、報告の文と取り出した新しい品番と変えたこと
- 検索ごとの、探した品番、検索の条件、候補、違う項目と照合の結果
- AIの出力を作り直した記録と、その理由
- 決めた代替と、見た資料と記録の番号、取付けで変える予定のこと、決めた担当
- 仕様の名前の表と品番のそろえ方の規則を見直した日と担当
5つ目が、次に同じ部品を探す人のための記録です。 実際に交換した記録が来たら、つながった1件の置き換えの例になります。
04実装レベルの3段階
半自動化で、1件60分が35分程度になります。 資料と記録を探す時間はほぼなくなりますが、仕様の見比べと過去に変えたことの読み取りが残ります。本格構成で20分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月使うと、表に無い仕様の名前が分かります。名前の表を整えてから進むほうが、「比べていません」の行が減ります。
05工数削減シミュレーション
導入後 60件 × 20分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 設備が数百台あり、センサー・リレー・モーター・インバーター・空圧機器などの部品の製造中止の知らせが毎月何件も届く工場や物流センター。過去の置き換えの記録が保全の管理の仕組みに残っているのに、どの部品を何に替えたか、取付けで何を変えたかをベテランの記憶で探している場合。メーカーの製造中止の案内や仕様表の PDF が共有フォルダにたまっていて、探すのに時間がかかっている場合。AWS を使える担当か委託先がいる場合。
- 設備の台数が少なく、製造中止の知らせが年に数件しかない場合。過去の置き換えの記録が紙の日誌だけで、品番が書かれていない場合(先に記録を整えます)。設備メーカーに部品の手配をすべて任せていて、自社で代替を選ばない場合。なお、代替の部品が取り付けられるか、電気的・機械的に互換があるか、安全機能を損なわないかの判断は、この構成では代替できません。過去の記録とメーカーの資料から候補を探し、仕様の違いを記録のまま並べるまでです。
07最小構成で試す方法
- 過去1年の製造中止の部品から20件を選ぶ(後継品が案内された部品と、案内されなかった部品を混ぜる)
- それぞれについて、当時の担当が見た資料、決めた代替、取付けで変えたことを書き出す
- その20件のメーカーの資料の PDF を集め、手元のAIサービスに1つずつ渡して「品番の一覧と仕様の行を書かれたまま表にしてください。書かれていない仕様は空にしてください」と指示する
- 起こした表を表計算に並べ、仕様の名前がメーカーごとにどう違うかを見る
- 保全の記録の書き出しから、20件の旧品番で交換の記録を探し、新しい品番が備考の欄に書かれているかを数える
- 当時の担当が決めた代替が、起こした表と記録から見つかるかを確かめる
5番目で新しい品番の書かれていない記録が多ければ、置き換えの記録の書き方を決めるのが先です。
| 出てきた内容 | 判断 |
|---|---|
| 当時の代替が見つかり、仕様の違いも並べられた | OpenSearch の索引に進む |
| 書かれていない仕様を埋めた・「互換あり」と書いた | 指示の書き方で直る。構成は有効 |
| 資料が画像の PDF ばかりで文字が取れない | 資料の集め方が先。 メーカーのサイトから文字の入った資料を取り直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 合っていない品が仕様の検索に出る | 仕様を object で持つと名前と値が別の行で結び付く。nested で持つ |
| 同じ品番が書き方の違いで漏れる | normalizer でそろえ、検索の値も同じ関数でそろえる |
| 範囲の仕様が引けない | 最小と最大に分けて持ち、2つの range で引く |
| 比べられなかった仕様が消える | 「比べていません」を違う項目と同じ欄に出す |
| 後継品の欄が隣の行のものになる | 根拠のページを必ず開いて確かめる |
| AIが「互換あり」と書く | 書かせない。照合で止める |
| 安全に関わる部品を保全だけで決める | 取り込みのときに区分を付け、候補に必ず出す |
上の3行は、検索がきれいに動いているように見えて起きる失敗です。 第8章の20件で、当時の担当が決めた代替が出てくるかを必ず見てください。
nested には数の上限があります。 公式のドキュメントでは、1つの文書の nested のオブジェクトは既定で10,000までです。仕様表1冊を1文書にせず、品番ごとに1文書にします。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: メーカーの資料(公開されている製造中止の案内・仕様表と、商社から受け取った案内)、自社の保全の記録(設備・部品・作業の報告)、予備品の台帳です。作業の報告には、作業した担当の名前が書かれています。
- 担当の名前を外す … 報告の文から取り出すのは、新しい品番と変えたことだけです。索引にも生成AIにも、作業した担当の名前を入れません
- 互換の判断をさせない … 画面に出すのは違う項目と過去に変えたことまでです
- 安全に関わる部品は別の扱いにする … 安全の機能を持つ部品の置き換えは、安全の担当の確認を経てから決めます。AIの文にも画面の表にも「安全上問題ない」を出しません
- メーカーの資料の扱いを確かめる … 社外に出さない前提の案内もあります。索引に入れる資料と、画面を見られる人の範囲を決めます
- 索引への接続を限る … OpenSearch には、Lambda と保全の担当の画面だけが接続できるようにします
誤りが起きた場合のリスクは、仕様の違う部品を取り付けて設備が止まること、安全に関わる部品を評価なしに替えること、AIの文を根拠に手配を進めることの3つです。 nested の持ち方と比べていない仕様の表示、安全の区分、照合で防ぎます。
10まず何から始めるか
1週目:記録と資料を見る
保全の記録を書き出し、部品の交換の記録のうち新しい品番が書かれているものの割合を数えます。共有フォルダの PDF のうち、文字の入っているものの割合も数えます。
2週目:20件で試す
第8章のとおり、過去の20件で当時の代替が見つかるかを見ます。書かれていない仕様を埋めていないか、「互換あり」と書いていないかを最優先で見ます。
3週目:仕様の名前の表を作る
上位10社の資料から、同じ意味の仕様の名前を一覧にし、そろえる名前と単位の言い換えを決めます。安全に関わる部品の品目の一覧も、安全の担当と作ります。
4週目:索引を作る
OpenSearch に資料の索引と置き換えの索引を作り、品番と nested の仕様で引けるようにします。この時点では、違う項目と候補の表は使いません。
2か月目: 違う項目の規則、候補の表と照合、置き換えた後の故障のつなぎ、決めた代替の記録を足します。3か月目以降: 名前の表に無かった仕様の数、文字の入っていない PDF の数、故障の場面で代替が決まるまでの時間を毎月数えます。ベテランに聞かなくても、過去の置き換えと仕様の違いを見て代替を決め、根拠を残せた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Amazon OpenSearch Service の全ドメインに Japanese (kuromoji) Analysis と ICU Analysis が含まれること。Sudachi が日本語向けに推奨とされ、オプションのプラグインとして関連付けて使うこと | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-29 |
kuromoji のトークナイザーが IPAdic の辞書で形態素解析をし、既定の search モードで複合語を分けた語と複合語の形を出すこと。user_dictionary_rules で辞書の行を直接書けること | OpenSearch: Kuromoji tokenizer | 2026-10-29 |
| normalizer が1つのトークンだけを出し、文字単位の操作をするフィルターだけを持てること | OpenSearch: Normalizers | 2026-10-29 |
nested の中の条件が同じ1つのオブジェクトに一致する必要があり、object で持つと値が配列に平らにされて別のオブジェクトの値に一致すること。inner_hits で一致した内側のオブジェクトと位置が返ること。score_mode の値 | OpenSearch: Nested query | 2026-10-29 |
| 1つの文書の nested のオブジェクトの合計が既定で10,000まで、nested の項目の数が既定で50までであること | OpenSearch: Nested field type | 2026-10-29 |
既定のハイライトの方式が unified で、文を単位に BM25 で点数を付けること。fragment_size の既定が100文字、number_of_fragments の既定が5であること | OpenSearch: Highlight query matches | 2026-10-29 |
Converse API の outputConfig.textFormat で JSON スキーマに沿った出力が得られ、enum が使えること。additionalProperties: false が要ること。数値の minimum・maximum と文字列の長さの制約に対応しないこと。任意の項目が12個まで、新しいスキーマの初回の組み立てが最大約90秒で、待ち時間を120秒以上にするよう案内されていること | AWS: Structured outputs(Amazon Bedrock) | 2026-10-29 |
代替の部品が取り付けられるか、互換があるか、安全の機能を損なわないかは、保全の担当・安全の担当・メーカーの資料に沿って判断してください。 本記事は上記の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2250)についてのご相談はこちらから。
