樹脂の商社の営業が、客先が指定したグレードの代替の候補を、物性の表と過去の置き換えの実績から OpenSearch で探し、物性の違いを並べる
客先から指定のグレードの代わりを求められたときに、物性の表と過去の置き換えの実績から候補を探します。候補ごとに物性の違いと、過去に同じ置き換えを提案したときの採用・不採用を、記録の番号付きで並べます。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 商社/製造
- 対象部門
- 営業/購買
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/営業フォローが追いつかない/属人化している
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/対応スピード向上/属人化解消
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 相談のメールを読み、指定のグレードと、客先が求める条件を書き出す
- 指定のグレードの物性表を探し、樹脂の種類・フィラー・難燃性・主な物性を確かめる
- 扱っているメーカーの物性表を開き、同じ樹脂の種類で近いグレードを探す
- 候補ごとに、試験の規格と条件が同じかを確かめてから、物性の値を見比べる
- 案件の記録を検索し、同じ置き換えを過去に提案したことがあるかを探す
- 詳しい営業に「前にこの代わりで何を出したか」を聞く
- 候補を決め、客先への返信とメーカーへのサンプルの依頼を書く
- 自動メーカーの物性表が届くと、生成AIが物性の行を規格・条件ごとに起こし、Lambda が項目名に直して索引に入れる
- 自動毎晩、案件の管理の仕組みの提案の記録を取り込み、生成AIが文から元のグレード・提案したグレード・結果・理由を取り出す
- 人営業が、相談のメールを画面に貼る
- 自動生成AIが相談から、指定のグレードと、客先が求める条件を書かれたまま取り出す
- 自動OpenSearch が指定のグレードの物性を引き、樹脂の種類と必須の条件で絞り、物性の近さで並べる
- 自動OpenSearch の集計が、同じ元のグレードに対する過去の提案を、提案したグレードと結果ごとに数える
- 自動Lambda が、候補ごとに物性の違いと、比べられなかった物性を並べる
- 自動生成AIが、候補・物性の違い・過去の結果と理由・確かめる点を、記録のまま並べた表にする
- 人営業が表を見て、サンプルを出す候補を決め、客先への返信を書く
各工程の詳しい説明を読む
- 相談のメールを読み、指定のグレードと、客先が求める条件を書き出す
- 指定のグレードの物性表を探し、樹脂の種類・フィラー・難燃性・主な物性を確かめる
- 扱っているメーカーの物性表を開き、同じ樹脂の種類で近いグレードを探す
- 候補ごとに、試験の規格と条件が同じかを確かめてから、物性の値を見比べる
- 案件の記録を検索し、同じ置き換えを過去に提案したことがあるかを探す
- 詳しい営業に「前にこの代わりで何を出したか」を聞く
- 候補を決め、客先への返信とメーカーへのサンプルの依頼を書く
(a)比べてはいけない値を比べる。 4番目で、規格や荷重の条件を確かめずに値だけを見ると、条件の違う値どうしで「近い」と判断することになります。 急いでいる日ほど、ここを省きます。
(b)近いグレードが記憶頼み。 3番目は、物性表を何冊も開く作業です。詳しい営業は「この系統ならメーカーBの〇〇」とすぐ出しますが、新しい営業は同じ候補にたどり着くまでに時間がかかります。
(c)過去の不採用が生きない。 5番目で記録が見つからないと、以前に衝撃が足りずに断られたのと同じグレードを、別の営業がまた出すことがあります。
(d)返信が遅れる。 調達に困っている客先は、複数の商社に同じ相談を出しています。候補を早く返した商社にサンプルの話が進みます。
- 【自動】 メーカーの物性表が届くと、生成AIが物性の行を規格・条件ごとに起こし、Lambda が項目名に直して索引に入れる
- 【自動】 毎晩、案件の管理の仕組みの提案の記録を取り込み、生成AIが文から元のグレード・提案したグレード・結果・理由を取り出す
- 【人】 営業が、相談のメールを画面に貼る
- 【自動】 生成AIが相談から、指定のグレードと、客先が求める条件を書かれたまま取り出す
- 【自動】 OpenSearch が指定のグレードの物性を引き、樹脂の種類と必須の条件で絞り、物性の近さで並べる
- 【自動】 OpenSearch の集計が、同じ元のグレードに対する過去の提案を、提案したグレードと結果ごとに数える
- 【自動】 Lambda が、候補ごとに物性の違いと、比べられなかった物性を並べる
- 【自動】 生成AIが、候補・物性の違い・過去の結果と理由・確かめる点を、記録のまま並べた表にする
- 【人】 営業が表を見て、サンプルを出す候補を決め、客先への返信を書く
7番目を Lambda で作るのは、近さの基準を決めておくためです。 物性ごとに「この幅なら近い」とする幅を、技術の支援の担当が表にします。AIに近さを判断させると、どの物性を重く見るかが毎回揺れます。
9番目で決めるのは営業です。 画面には「同等品」も「おすすめ」も出しません。客先の部品に使えるかは、サンプルを使った客先の評価で決まります。
02今回想定するシステム構成
メーカーの物性表(PDF・表計算) ▼【トリガー】物性表のフォルダへの保存 AWS Lambda ── 文字を取り出す ├──▶ Claude(Amazon Bedrock)── 物性の行を規格・条件ごとに起こす ├──▶ 規格・条件を項目名に直す(hdt_iso75_1_80mpa など) ▼ Amazon OpenSearch Service │ グレードの索引:メーカー・グレード・樹脂の種類・フィラー・難燃性(等級と厚み) │ 物性(規格・条件ごとの項目)・食品に触れる用途の書類の有無 │ 提案の索引:元のグレード・提案したグレード・客先の業種・結果・理由 ▲ 案件の管理の仕組み ──【トリガー】毎晩の書き出し ▼【人】営業が相談のメールを貼る AWS Lambda ├──▶ Claude(Amazon Bedrock)── 相談を条件に読み替える ├──▶ OpenSearch ── 必須の条件で絞り、物性の近さで並べる/過去の提案を数える ├──▶ 物性の違いを並べる ├──▶ Claude(Amazon Bedrock)── 候補と違いと過去の結果を記録のまま並べた表 ▼ 営業の画面 ──【人】サンプルを出す候補を決め、返信を書く
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(range、function_score の gauss、terms 集計) | 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(物性表の写し、取り込みの記録、相談と候補と決めた提案) | 社内のファイルサーバー |
案件の管理の仕組みには、この構成から書き込みません。 決めた提案と客先への返信は、営業がいつもの手順で記録します。
物性表は、メーカーから受け取った資料です。 公開されていない値が入った資料もあるので、索引に入れる物性表の範囲と、画面を見られる人の範囲を、メーカーとの取り決めに沿って決めます。
03どうやって実装するのか
処理の起点を決める
起点は3つあります。物性表の取り込み、提案の記録の取り込み、営業の検索のボタンです。
物性表は、新しい表や改訂の表が届いたら、購買の担当が「物性表」のフォルダに置きます。Lambda が動き、古い表は残したまま新しい表を「現行」にします。
提案の記録は、毎晩、更新された案件を書き出し、案件の番号で上書きして取り込みます。結果が「評価中」から「採用」「不採用」に変わった案件もこれで反映されます。
検索のボタンは、営業が相談のメールを貼った後に押します。複数のグレードが書かれていれば、グレードごとに引きます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 相談 | メールの本文、指定のグレード、客先が書いた条件(難燃性・色・用途・数量など) | 営業が貼る |
| 物性表 | メーカー、グレード、樹脂の種類、フィラーの種類と量、物性の行(名前・値・単位・試験の規格・条件)、難燃性の等級と厚み、表の版 | 物性表のフォルダ |
| 用途の書類 | 食品に触れる用途の適合の書類をメーカーから受け取っているか、受け取った日 | 購買の担当の台帳 |
| 提案の記録 | 案件の番号、客先の業種、元のグレード、提案したグレード、結果、理由の文、日付 | 案件の管理の仕組み |
| 近さの幅の表 | 物性ごとの「近い」とする幅(曲げ弾性率は±15%など) | 技術の支援の担当で作る表 |
| 必須の条件の表 | 「V-0」「食品用」「ガラス繊維入り」などの言い方と、絞り込みの条件の対応 | 技術の支援の担当で作る表 |
質を決めるのは、物性の行の「試験の規格と条件」です。 規格が書かれていない行は、「規格不明」として持ち、比べずに並べます。 同じ項目に入れると、第3章の(a)がそのまま起きます。近さの幅の表には、決めた日と根拠を残します。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 指定のグレードの物性 | グレードの索引 | term(grade_norm)で1件を取る |
| 樹脂の種類と必須の条件 | グレードの索引 | filter の term(resin_family・filler・flame_rating) |
| 難燃性の厚みの条件 | グレードの索引 | filter の range(flame_min_thickness_mm) |
| 物性の近さ | グレードの索引 | function_score の gauss(物性ごとの項目) |
| 過去の提案の件数 | 提案の索引 | terms 集計(substitute_grade)と、その下の terms 集計(result) |
物性の近さは、指定のグレードの値を origin にした gauss で付けます。 公式のドキュメントでは、減衰関数は数値・日付・位置の項目に使え、origin から offset までの距離の文書に1点を、scale と offset を足した距離の文書に decay(既定0.5)の点を付けるとされています。近さの幅の表の値を scale に入れます。
GET /grades/_search
{
"size": 15,
"_source": ["grade_id", "maker", "grade", "sheet_version", "resin_family", "filler",
"flame_rating", "flame_min_thickness_mm", "flex_modulus_iso178",
"charpy_notched_iso179", "hdt_iso75_1_80mpa", "food_contact_doc"],
"query": { "function_score": {
"query": { "bool": {
"filter": [
{ "term": { "resin_family": "pc_abs" } },
{ "term": { "status": "current" } },
{ "term": { "flame_rating": "V-0" } },
{ "range": { "flame_min_thickness_mm": { "lte": 1.5 } } },
{ "exists": { "field": "flex_modulus_iso178" } },
{ "exists": { "field": "charpy_notched_iso179" } } ],
"must_not": [ { "term": { "grade_id": "MAKER_A-XXXX" } } ] } },
"functions": [
{ "gauss": { "flex_modulus_iso178": { "origin": 2600, "offset": 100, "scale": 400 } } },
{ "gauss": { "charpy_notched_iso179": { "origin": 40, "offset": 3, "scale": 10 } } },
{ "gauss": { "hdt_iso75_1_80mpa": { "origin": 95, "offset": 2, "scale": 8 } } } ],
"score_mode": "multiply" } }
}
exists で絞るのは、減衰関数の決まりのためです。 公式のドキュメントでは、項目の無い文書に対して減衰関数は1点を返すとされています。値の無いグレードは、何もしないと値が完全に一致したグレードと同じ点数になります。値の足りないグレードは、別の検索で件数と名前だけを出します。
荷重たわみ温度を exists に入れていないのは、意図してのことです。 0.45MPa の値しか載っていない物性表もあり、それだけで候補から落とすと取りこぼします。 その候補は点数が1になるので、画面に「1.80MPa の値なし」を必ず出します。
過去の提案は terms 集計で数えます。
GET /proposals/_search
{
"size": 0,
"query": { "term": { "original_grade_norm": "MAKERAXXXX" } },
"aggs": { "by_substitute": {
"terms": { "field": "substitute_grade_norm", "size": 20 },
"aggs": { "by_result": { "terms": { "field": "result" } } } } }
}
公式のドキュメントでは、terms 集計の size の既定は10で、各シャードの上位の語を合わせるため件数は近似になりうるとされ、doc_count_error_upper_bound で誤差の上限が分かるとされています。提案の索引は数万件なので、シャードを1つにして数えます。 理由の文は、グレードの組で記録を引いて並べます。
AIへ渡す前に整形する
- 物性表から物性の行を起こす … 生成AIに、名前・値・単位・試験の規格・条件を書かれたまま表にさせます
- 項目名に直す … 物性の名前と規格と条件の組を、
flex_modulus_iso178、hdt_iso75_1_80mpa、mfr_iso1133_300c_1_2kgのような項目名にします。規格か条件が書かれていない行はunknown_standardの配列に入れます - 単位をそろえる … 項目ごとに単位を決め、
kgf/cm2などで書かれた値は、Lambda が決めた式で換算し、換算したことを記録します - 難燃性を分ける … 「V-0(1.5mm)」を、等級
V-0と厚み1.5に分けます。厚みが複数書かれていれば、等級ごとに最も薄い厚みを持ちます - グレード名をそろえる … 全角を半角に、ハイフン・空白を消し、大文字にして
grade_normを作ります - 提案の記録を起こす … 生成AIに、案件の文から元のグレード・提案したグレード・結果・理由を書かれたまま取り出させます
3番目の換算は、AIにさせません。 値と単位を写すのはAI、換算の式を当てるのは Lambda です。 AIは桁を違えたまま、それらしい値で返すことがあります。
AIに処理させる
AIの仕事は3つです。 物性表と提案の記録を書かれたまま表に起こすこと、相談を条件に読み替えること、候補と違いと過去の結果を記録のまま並べることです。
| させること | させないこと |
|---|---|
| 物性の行を、値・単位・規格・条件まで書かれたまま起こす | 書かれていない規格や条件を、メーカーの慣習から推し量ること |
| 相談から、指定のグレードと客先が書いた条件を取り出す | 書かれていない条件(難燃性・用途)を足すこと |
| 候補ごとに、Lambda が作った違う項目と過去の結果を並べる | 「同等品」「代替可能」「おすすめ」を書くこと |
| 確かめる点(色・用途の書類・難燃性の厚み)をまとめる | 単位の換算、物性の差や比率の計算 |
「同等品」と書かせないのが、この構成でいちばん大事な線です。 物性表の値が近くても、成形の収縮や長く使ったときの性質は分かりません。AIの「同等品」が返信に写れば、評価の前に話が進みます。
食品に触れる用途は、書類の有無で絞ります。 消費者庁のページでは、食品用の器具・容器包装に政令で定める材質を使う場合は、ポジティブリストに個別に規格が定められた物質のみ使用を認める制度で、政令で定める材質は合成樹脂とされ、2025年5月31日に経過措置が満了したとされています。適合するかを判断するのは、この構成ではありません。 相談に食品に触れる用途と書かれていれば、メーカーから適合の書類を受け取っているグレードだけを候補にし、無いグレードは「書類の確認が必要」として別に出します。
指示内容を固定する
1回目(物性表の起こし)は、値・単位・規格・条件を書かれたまま写させ、書かれていなければ空にさせます。2回目(相談の読み替え)の指示です。
あなたは樹脂の商社で、客先からの代替のグレードの相談を整理する立場です。
【相談】から、物性の表を探すための条件を取り出してください。
【取り出すもの】
- original_grade_raw: 指定のグレード。書かれたまま
- original_maker_raw: そのメーカー。書かれたまま。無ければ空
- required: 客先が書いた必須の条件。【条件の区分】から選び、書かれた文も写す
- preferred: 客先が書いた「できれば」の条件。書かれた文のまま
- use_raw: 用途。書かれたまま。無ければ空
- missing: 書かれていないが確かめたい項目(用途・難燃性の厚み・色・数量)
【厳守事項】
- 書かれていない条件を足さないでください。難燃グレードの相談でも、
難燃性の等級が書かれていなければ required に入れないでください。
- グレード名の文字を直さないでください。
- 物性の値を推し量らないでください。
- 客先の担当者の名前・連絡先は写さないでください。
【条件の区分】{condition_types}
【相談】{inquiry_text}
3回目(候補の表)の指示です。
あなたは樹脂の商社で、営業に代替のグレードの候補を示す立場です。
【候補】は OpenSearch が返したグレードです。【違う項目】【過去の提案】はシステムが作ったものです。
【書き方】
- 候補ごとに、メーカー・グレード・物性表の版・樹脂の種類・フィラー・難燃性の等級と厚みを
記録の値のまま書いてください。
- 【違う項目】は、文言を変えずにそのまま書いてください。
- 【過去の提案】の件数と理由の文は、そのまま書いてください。
- 最後に、営業が客先に確かめる点をまとめてください。
【厳守事項】
- 「同等品」「代替可能」「おすすめ」「問題ありません」と書かないでください。
- 物性の差・比率・平均を計算しないでください。
- 候補の順位を変えないでください。
- 記録に無いこと(成形のしやすさ、長く使ったときの性質など)を書かないでください。
【相談の条件】{conditions}
【候補】{hits}
【違う項目】{differences}
【過去の提案】{past}
「等級が書かれていなければ入れない」を書くのは、AIが気を利かせるためです。 指定のグレードが難燃だと、書かれていなくても V-0 を必須に足し、客先が求めていない条件で候補が減ります。 書かれていない条件は missing に出します。
出力形式を固定する
Bedrock の Converse API の outputConfig.textFormat に JSON スキーマを渡し、3回目は次の形で受け取ります。
{
"original": { "grade_id": "", "sheet_version": "" },
"candidates": [
{ "grade_id": "", "maker": "", "grade": "", "sheet_version": "",
"flame": { "rating": "", "min_thickness_mm": 0 },
"differences": [""], "not_compared": [""],
"past": { "adopted": 0, "rejected": 0, "pending": 0, "reasons": [""] },
"food_contact_doc": "on_file | not_on_file | not_required" } ],
"to_confirm": [""]
}
AWS の公式ページでは、Converse API の outputConfig.textFormat に JSON スキーマを渡すと応答がスキーマに沿い、enum が使えるとされています。すべての object に additionalProperties: false が要り、数値の minimum・maximum は使えず、任意の項目は全体で12個までです。 用途の書類の区分は enum で縛ります。
1つ目の理由は、AIが返したグレードと件数を索引と照合できることです。 grade_id が検索の結果に無いとき、past の件数が集計の値と違うときは、表を出さずに作り直します。
2つ目は、differences と not_compared を Lambda が作った文と照合できることです。 違う項目は次の規則で作ります。
| 比べる物性 | 出す文 |
|---|---|
| 同じ項目で、近さの幅の外 | 〜が幅の外です(元:〜/候補:〜) |
| 同じ項目で、近さの幅の中 | 出さない |
| 元のグレードにあって候補に無い | 〜は候補の物性表に値がありません |
| 規格不明の値 | 〜は規格が書かれていないため比べていません |
not_compared を別の欄にしないと、比べなかった物性が「違いが無い」ように見えます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 物性表のフォルダ | S3 への写し(読み取りのみ) | メーカーの物性表 |
| 案件の管理の仕組み | 毎晩の書き出し(読み取りのみ) | 提案の記録と結果 |
| 用途の書類の台帳 | 書き出し(読み取りのみ) | 書類を受け取ったグレード |
| Amazon OpenSearch Service | Lambda からの登録・検索・集計 | グレードの索引と提案の索引 |
| Amazon Bedrock | Converse API(Claude) | 起こし、読み替え、候補の表 |
| 営業の画面 | 社内の画面 | 相談の貼り付け、候補と違い、決めた提案の記録 |
決めた提案は、画面で「見た候補」と一緒に S3 に残します。 案件の管理の仕組みへの記録と、メーカーへのサンプルの依頼は、営業と購買の担当がいつもの手順で行います。
人が確認する
- 読み替えを見る … 指定のグレードと必須の条件が、相談の文のとおりかを確かめます
- 比べていない物性を見る … 規格不明と値なしの物性を、物性表で確かめます
- 難燃性の厚みを見る … 客先の部品の厚みで、その等級が書かれているかを確かめます
- 過去の不採用の理由を読む … 今回の客先にも当てはまるかを考えます
- 用途の書類を確かめる … 食品に触れる用途では、書類の有無と日付を確かめます
- 決めて残す … サンプルを出す候補と、決めた理由を残します
1番目を省かないでください。 グレード名を1文字違えると、別のグレードを元にして候補が並びます。 元にした物性表の版を必ず画面に出します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 指定のグレードが索引に無い | そろえ方を確かめ、無ければ物性表を依頼する。樹脂の種類と必須の条件だけで引く |
| 指定のグレードの物性表が古い版だけ | 古い版で引き、「物性表が古い版」と出す |
| 物性の値が足りない候補 | 件数と名前だけを別に出す |
| 必須の条件で候補が0件 | どの条件で0件になったかを出し、条件を1つずつ外した件数を示す |
| 過去の提案が無い | 「過去の提案なし」と出す |
| AIの件数が集計と合わない | 表を出さずに作り直す。2回続けば集計の値だけを出す |
| 構造化出力が返らない | 候補の一覧と違う項目だけを出す |
4行目が、相談を進めるための行です。 「難燃性の厚みで0件、外せば8件」と分かれば、客先に厚みの条件を確かめる話ができます。
記録を残す
- 取り込んだ物性表ごとの、元のファイル、起こした表、項目名への変換、換算の記録、担当が直した箇所
- 提案の記録ごとの、文と取り出した元のグレード・提案したグレード・結果・理由
- 相談ごとの、相談の文(客先の担当者の名前を伏せたもの)、読み替えの JSON、営業が直した箇所
- 検索の条件、候補、違う項目、集計の値と照合の結果
- 営業が決めた提案と、見た候補と、決めた理由
- 近さの幅の表と必須の条件の表を見直した日と担当
5つ目は、不採用になったときに、何を見て何を見落としたかを見直す材料になります。
04実装レベルの3段階
半自動化で、1件25分が15分程度になります。 近いグレードを探す時間はほぼなくなりますが、過去の提案を探す作業と違いの整理が残ります。本格構成で10分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月使うと、どのメーカーの物性表に規格不明の行が多いかが分かります。近さの幅の表もこの間に直します。
05工数削減シミュレーション
導入後 240件 × 10分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の樹脂メーカーのグレードを扱い、成形メーカー・部品メーカーから代替のグレードの相談が毎月数百件ある樹脂の商社。メーカーの物性表は PDF や表計算で手元にあるのに、試験の規格や条件が揃っておらず、近いグレードを探すのが技術に詳しい営業の記憶に頼っている場合。過去に提案した置き換えの結果(採用・不採用)が案件の記録に残っているのに、次の提案に使えていない場合。AWS を使える担当か委託先がいる場合。
- 扱うメーカーとグレードが少なく、担当が全部の物性を覚えている場合。物性表が手元に無く、毎回メーカーに問い合わせている場合(先に物性表を集めます)。客先が求める評価(成形の試し・部品の信頼性の試験)を商社の側で代わりに行う前提の場合。なお、代替のグレードが客先の部品に使えるか、成形の条件や金型に合うか、法令・規格・客先の認定に合うかの判断は、この構成では代替できません。物性の表と過去の実績から候補を探し、違いを記録のまま並べるまでです。
07最小構成で試す方法
- 先月の代替の相談から20件を選ぶ(難燃グレード、ガラス繊維入り、食品に触れる用途を混ぜる)
- それぞれについて、詳しい営業が出した候補と、その後の採用・不採用を書き出す
- 20件の指定のグレードと、扱っているメーカーの同じ樹脂の種類の物性表を集め、手元のAIサービスに渡して「物性の行を、値・単位・試験の規格・条件まで書かれたまま表にしてください。書かれていなければ空にしてください」と指示する
- 起こした表を表計算に並べ、規格と条件が書かれていない行の割合を数える
- 規格と条件のそろった物性だけで並べ替え、詳しい営業が出した候補が上位に来るかを見る
4番目で規格不明の行が多ければ、メーカーに新しい物性表を依頼するのが先です。
| 出てきた内容 | 判断 |
|---|---|
| 詳しい営業の候補が上位に来た | OpenSearch の索引に進む |
| 規格や条件を推し量った・換算した | 指示の書き方で直る。構成は有効 |
| 規格不明の行が多く比べられない | 物性表の集め直しが先 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 条件の違う物性どうしで近いと出る | 規格と条件ごとに別の項目にする。規格不明は比べない |
| 値の無いグレードが上位に来る | 減衰関数は項目の無い文書に1点を返す。exists で絞り、足りない候補は別に出す |
| 過去の提案の件数がずれる | terms 集計は近似になりうる。シャードを1つにするか shard_size を上げる |
| 単位の換算で桁がずれる | 換算は Lambda の式で行い、換算した記録を残す |
| AIが書かれていない条件を足す | 書かれていない条件は missing に出させる |
| AIが「同等品」と書く | 書かせない。照合で止める |
| 古い版の物性表の値で提案する | 新しい表を「現行」にし、版を画面に出す |
上の3行は、検索がきれいに動いているように見えて起きる失敗です。 第8章の20件で、詳しい営業が出した候補が上位に来るかを必ず見てください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: メーカーの物性表(公開されていない値を含むことがある)、客先からの相談(客先の部品や用途が分かる文)、過去の提案と結果です。
- 客先の情報を外す … 相談の文から取り出すのは、グレードと条件と用途だけです。客先の担当者の名前と連絡先は、索引にも生成AIにも入れません
- 客先をまたいで見せない … 過去の提案の理由の文には、別の客先の部品の話が書かれていることがあります。画面に出すのは客先の業種までにし、客先名は出しません
- メーカーの資料の扱いを守る … 公開されていない物性表は、メーカーとの取り決めの範囲で使います
- 同等の判断をさせない … 画面に出すのは物性の違いと過去の結果までです
- 用途の適合を判断しない … 食品に触れる用途の適合は、メーカーの書類と客先の確認で決まります。この構成は書類の有無を出すだけです
- 索引への接続を限る … OpenSearch には、Lambda と営業の画面だけが接続できるようにします
誤りが起きた場合のリスクは、条件の違う物性で近いと判断して提案すること、AIの「同等品」が客先に伝わること、別の客先の情報が画面に出ることの3つです。 項目の分け方、照合、画面に出す項目の限定で防ぎます。
10まず何から始めるか
1週目:物性表を見る
扱いの多い樹脂の種類の物性表を集め、規格と条件が書かれていない行の割合を数えます。同じ物性がメーカーごとにどの規格で書かれているかを一覧にします。
2週目:20件で試す
第8章のとおり、先月の20件で詳しい営業の候補が上位に来るかを見ます。規格や条件を推し量っていないか、「同等品」と書いていないかを最優先で見ます。
3週目:項目名の決め方と近さの幅の表を作る
物性の名前・規格・条件の組から項目名を決め、物性ごとの近さの幅を技術の支援の担当と決めます。必須の条件の表も作ります。
4週目:グレードの索引を作る
OpenSearch にグレードの索引を作り、必須の条件で絞って物性の近さで並べられるようにします。この時点では、提案の索引と候補の表は使いません。
2か月目: 提案の索引と集計、物性の違いの作成、候補の表と照合を足します。3か月目以降: 規格不明の行の数、候補が0件だった相談の数、相談から候補を返すまでの時間を毎月数えます。新しい営業が、詳しい営業と同じ候補と過去の結果を見て、サンプルを出す候補を決めて根拠を残せた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
減衰関数(gauss など)が数値・日付・位置の項目に使え、origin から offset までの文書に1点、scale と offset を足した距離の文書に decay(既定0.5)の点を付けること。項目の無い文書に1点を返すこと | OpenSearch: Function score query | 2026-10-29 |
range で gte・lte などを使って数値の範囲で引けること | OpenSearch: Range query | 2026-10-29 |
terms 集計の size の既定が10、shard_size の既定が size * 1.5 + 10 で、各シャードの上位の語を合わせるため件数が近似になりうること。doc_count_error_upper_bound で誤差の上限が分かること | OpenSearch: Terms aggregation | 2026-10-29 |
Converse API の outputConfig.textFormat で JSON スキーマに沿った出力が得られ、enum が使えること。additionalProperties: false が要ること。数値の minimum・maximum に対応しないこと。任意の項目が12個までであること | AWS: Structured outputs(Amazon Bedrock) | 2026-10-29 |
| 食品用器具・容器包装のポジティブリスト制度が、政令で定める材質を使う場合にポジティブリストに個別に規格が定められた物質のみ使用を認める制度であること。政令で定める材質が合成樹脂であること(2025年6月1日時点)。2020年6月1日に施行され、2025年5月31日に経過措置が満了したこと | 消費者庁: 食品用器具・容器包装のポジティブリスト制度について(2025年6月1日以降) | 2026-10-29 |
代替のグレードが客先の部品に使えるか、成形や金型に合うか、法令・規格・客先の認定に合うかは、客先の評価、メーカーの資料、自社の技術の担当の確認に沿って判断してください。 本記事は上記の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2251)についてのご相談はこちらから。
