タイヤ・ホイールの通販会社が、車種・年式・型式の問い合わせから適合の記録を OpenSearch で引き、候補と取付けの注意点を返す
お客様の「この車にこのタイヤ・ホイールは付きますか」という問い合わせを、車名・年式・型式・グレード・希望のサイズに読み替え、自社の適合の記録から候補を探します。取付けの注意点を、記録のまま添えて担当者に返します。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- EC/商社/小売
- 対象部門
- カスタマーサポート/営業
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/確認ミスが多い
- AIで行う処理
- 検索(RAG)
- 主な効果
- 入力漏れ削減/対応スピード向上/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が問い合わせを開き、車名・年式・型式・グレード・希望のサイズや商品をメモする
- 適合の表を車名で絞り、型式と年式の範囲で該当する行を探す
- グレードで純正サイズが違えば、どのグレードかを推定するか、お客様に聞き返す
- 希望の商品のサイズ・寸法を商品の管理の仕組みで調べ、適合の表の行と見比べる
- 前後で違うサイズの車なら、前と後ろを別々に見比べる
- ナットの座面の形、ハブ径の違い(ハブリングの要否)、荷重指数などの注意点を書き添えて回答する
- 自動問い合わせの管理の仕組みに適合の問い合わせが入ると、検索が動く
- 自動生成AIが問い合わせから、車名・年式・型式・グレード・希望のサイズや商品を書かれたまま取り出す
- 自動OpenSearch が車両の索引を、型式の書き方をそろえて引き、該当する車両の行と、その中の純正サイズの組(前後・グレードごと)を返す
- 自動希望の商品のサイズ・寸法を、純正サイズの組と確かめた記録の組に規則で照らし、「純正と同じ」「確かめた記録あり」「記録なし」を付ける
- 自動注意点の表(ナットの座面、ハブ径の差、荷重指数、前後の組)から、当てはまるものを規則で拾う
- 自動生成AIが、候補と注意点を記録のまま並べ、聞き返すべき項目を書いた回答の下書きを作る
- 人担当者が候補・注意点・聞き返しを確かめ、直して回答する
各工程の詳しい説明を読む
- 担当者が問い合わせを開き、車名・年式・型式・グレード・希望のサイズや商品をメモする
- 適合の表を車名で絞り、型式と年式の範囲で該当する行を探す
- グレードで純正サイズが違えば、どのグレードかを推定するか、お客様に聞き返す
- 希望の商品のサイズ・寸法を商品の管理の仕組みで調べ、適合の表の行と見比べる
- 前後で違うサイズの車なら、前と後ろを別々に見比べる
- ナットの座面の形、ハブ径の違い(ハブリングの要否)、荷重指数などの注意点を書き添えて回答する
(a)同じ車名の中の違いを見落とす。 3番目で、グレードで純正サイズが違う車を「たぶん上のグレード」と決めて答え、届いてから外径が違うと分かります。年の途中の変更でハブ径が変わった車も、年式の範囲を1年ずれて見ると取り違えます。
(b)前後の組を崩す。 5番目で、前輪のサイズを見て後輪のインセットを見るような見間違いが起きます。前後で違う車は少ないぶん、慣れていない担当者ほど同じ見方で見てしまいます。
(c)注意点の書き漏れ。 6番目の注意点は、担当者が覚えているものだけが書かれます。ナットの座面の形が純正と違う、ハブ径が違ってハブリングが要る、という一文が抜けると、取付け店で作業が止まります。
(d)答えが担当者で違う。 同じ問い合わせに、ベテランは「付きます。ただし〜」、新しい担当者は「メーカーにご確認ください」と答えます。どこまで答えてよいかの線が、担当者の頭の中にあります。
- 【自動】 問い合わせの管理の仕組みに適合の問い合わせが入ると、検索が動く
- 【自動】 生成AIが問い合わせから、車名・年式・型式・グレード・希望のサイズや商品を書かれたまま取り出す
- 【自動】 OpenSearch が車両の索引を、型式の書き方をそろえて引き、該当する車両の行と、その中の純正サイズの組(前後・グレードごと)を返す
- 【自動】 希望の商品のサイズ・寸法を、純正サイズの組と確かめた記録の組に規則で照らし、「純正と同じ」「確かめた記録あり」「記録なし」を付ける
- 【自動】 注意点の表(ナットの座面、ハブ径の差、荷重指数、前後の組)から、当てはまるものを規則で拾う
- 【自動】 生成AIが、候補と注意点を記録のまま並べ、聞き返すべき項目を書いた回答の下書きを作る
- 【人】 担当者が候補・注意点・聞き返しを確かめ、直して回答する
4番目と5番目を規則で行うのは、「付くかどうか」の答え方の線を誰が見ても同じにするためです。 純正と同じサイズなら「純正と同じ」、取付け店からの報告で確かめたサイズなら「確かめた記録あり」、それ以外は「記録なし」。AIが外径の差を計算して「入ると思われます」と書く余地を、最初から作りません。
6番目の「聞き返すべき項目」が、メールの往復を減らします。 グレードで純正サイズが違う車なのにグレードが書かれていなければ、「車検証の型式とグレード(または現在のタイヤの側面の表示)をお知らせください」と下書きに書きます。
02今回想定するシステム構成
車両の適合の表(車名・型式・年式・グレード・純正サイズの組・取付け寸法) 商品の管理の仕組み(タイヤ・ホイールのサイズと寸法・在庫・価格) ▼【トリガー】毎日の取り込み(表の更新・商品の追加の反映) AWS Lambda ── 型式・タイヤサイズの書き方をそろえる ▼ Amazon OpenSearch Service │ 車両の索引:車名(kuromoji)・型式(normalizer)・年式の範囲 │ 純正サイズの組(nested:前後・グレード・タイヤ・ホイール寸法) │ 確かめた記録の組(nested)・注意点 │ 商品の索引:タイヤサイズ(normalizer)・荷重指数・ホイール寸法・在庫 ▼【トリガー】問い合わせの到着 AWS Lambda ├──▶ Claude(Amazon Bedrock)── 問い合わせを条件に読み替える ├──▶ OpenSearch ── 車両と商品を引く → 規則で照らし、注意点を拾う ├──▶ Claude(Amazon Bedrock)── 記録のまま回答の下書き ▼ 問い合わせの管理の仕組み ──【人】確かめて回答
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(kuromoji、normalizer、nested、bool) | 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(取り込みの写し、問い合わせと候補と下書きの記録) | 社内のファイルサーバー |
適合の表と商品の管理の仕組みには、この構成から書き込みません。 確かめた記録を足すのは、取付け店からの報告を受けた商品部の仕事のままにします。
日本語の車名とグレード名を引くには、形態素解析と文字の正規化が要ります。 AWS の公式ページでは、OpenSearch Service のドメインには Japanese(kuromoji)と ICU の解析のプラグインが全ドメインに含まれるとされています。車名とグレード名は kuromoji で区切り、全角と半角の混ざった型式は ICU でそろえます。
組を崩さないために、純正サイズと確かめた記録は nested の型にします。 OpenSearch の公式のドキュメントでは、nested の問い合わせは各ネストのオブジェクトを別の文書のように照らし、一致すれば親の文書を返すとされ、問い合わせの前に索引に nested の項目が要るとされています。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。毎日の適合の表と商品の取り込みと、問い合わせの到着です。
取り込みは、適合の表と商品の管理の仕組みから前日に変わった行を書き出して索引を更新します。確かめた記録が増えたら、翌日には候補に出るようにします。 在庫と価格は変わりやすいので、下書きの直前に照会し、索引の値は使いません。
問い合わせは、「適合の確認」の分類で入ったものを起点に、1件ごとに動かします。モールの「適合を確認する」から来たものは、付いてくる商品の番号をそのまま使います。 分類の無い自由記述は、担当者が分類を付けてから動かします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 問い合わせ | お客様の言葉のままの本文、モールの商品の番号(あれば) | 問い合わせの管理の仕組み |
| 車両の適合の表 | 車名、型式、年式の範囲、グレード、純正サイズの組(前・後ろ・前後同じ)、リム幅、インセット、PCD、穴数、ハブ径、ナットかボルトか、座面の形 | 適合の表(スプレッドシート) |
| 確かめた記録 | 取付け店から「付いた」と報告のあったタイヤサイズとホイール寸法の組、報告日、取付け店、条件のメモ | 適合の表の別の列 |
| 商品 | タイヤのサイズ・荷重指数・速度記号、ホイールのリム径・リム幅・インセット・PCD・穴数・ハブ径、在庫、価格 | 商品の管理の仕組み |
| 注意点の表 | 「ハブ径が純正より大きい → ハブリングの案内」「座面の形が純正と違う → 専用ナットの案内」「荷重指数が純正より小さい → 候補から外す」などの規則 | 商品部で作る表 |
質を決めるのは、確かめた記録の列です。 純正と違うサイズを候補に出せるかは、取付け店の報告がどれだけ入っているかで決まります。
注意点の表は、ベテランが回答に書き添えてきた一文を集めたものです。ここが、答えが担当者で違うことの直し方です。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 車名で合う車両 | 車両の索引 | match(car_name。kuromoji で区切る) |
| 型式で合う車両 | 車両の索引 | term(model_code。normalizer で記号と全角をそろえた値どうし) |
| 年式の範囲に入る車両 | 車両の索引 | filter の range(year_from ≦ 年式 ≦ year_to) |
| 純正サイズの組 | 車両の索引の oem_sets(nested) | nested の問い合わせと inner_hits で、一致した組だけを返す |
| 確かめた記録の組 | 車両の索引の verified_sets(nested) | 同上 |
型式とタイヤサイズの書き方のゆれは、normalizer でそろえます。 OpenSearch の公式のドキュメントでは、normalizer は1つのトークンだけを出すもので、keyword の一致の検索に使え、pattern_replace・icu_normalizer・uppercase などを使えますが、同義語の置き換えはできないとされています。型式は先頭の排出ガスの記号を外し、タイヤサイズは「225/45ZR17」「225/45R17」を「225/45R17」と同じ形にします。
純正サイズの組を nested にするのが、この構成でいちばん大事なところです。 ふつうのオブジェクトの配列だと、「前:225/45R17」「後ろ:255/40R17」の値が配列ごとにまとめて入り、「後ろで225/45R17」という存在しない組にも一致します。
PUT /vehicles
{
"settings": { "analysis": {
"char_filter": {
"strip_prefix": { "type": "pattern_replace",
"pattern": "^[A-Za-z0-9]{2,4}-", "replacement": "" },
"tire_norm": { "type": "pattern_replace",
"pattern": "[\\s ]|Z(?=R)", "replacement": "" } },
"normalizer": {
"model_norm": { "type": "custom", "char_filter": ["icu_normalizer", "strip_prefix"],
"filter": ["uppercase"] },
"size_norm": { "type": "custom", "char_filter": ["icu_normalizer", "tire_norm"],
"filter": ["uppercase"] } },
"analyzer": {
"ja": { "type": "custom", "char_filter": ["icu_normalizer"],
"tokenizer": "kuromoji_tokenizer" } } } },
"mappings": { "properties": {
"car_name": { "type": "text", "analyzer": "ja" },
"model_code": { "type": "keyword", "normalizer": "model_norm" },
"year_from": { "type": "integer" },
"year_to": { "type": "integer" },
"oem_sets": { "type": "nested", "properties": {
"grade": { "type": "keyword" }, "position": { "type": "keyword" },
"tire_size": { "type": "keyword", "normalizer": "size_norm" },
"load_index": { "type": "integer" }, "inset": { "type": "integer" },
"pcd": { "type": "float" }, "holes": { "type": "integer" },
"hub_bore": { "type": "float" }, "seat": { "type": "keyword" } } },
"verified_sets": { "type": "nested", "properties": {
"position": { "type": "keyword" },
"tire_size": { "type": "keyword", "normalizer": "size_norm" },
"inset": { "type": "integer" }, "note": { "type": "text", "analyzer": "ja" } } } } }
}
検索は bool で組み立てます。 OpenSearch の公式のドキュメントでは、filter は点数に関わらない絞り込みで、should は一致するほど点数を上げ、must か filter があるときの minimum_should_match の既定は0とされています。年式は filter で絞り、型式とグレードは should で上に並べるので、型式の無い問い合わせでも候補が残ります。 nested には inner_hits を付け、一致した組だけを規則に渡します。
AIへ渡す前に整形する
- 年式を西暦にする … 「H30.1〜R3.5」を2018〜2021にし、月は別の項目に残します
- 前後の書き方をそろえる … 「F」「フロント」を
front、「R」「リア」をrear、前後同じはbothにします - タイヤサイズを分ける … 「225/45R17 94W XL」を、サイズ・荷重指数・速度記号・XL などの規格の表示に分けて持ちます
- 空の値を空のまま持つ … ハブ径や座面の形が表に無い行は、値を入れずに残します
- 問い合わせから個人の情報を外す … 名前、住所、電話番号、車のナンバーは、Claude に渡す前に伏せます
4番目で、空のハブ径に一般的な値を入れないでください。 空なら規則が「記録なし」と出して担当者に回します。埋めると、ハブリングの案内が抜けた回答が「確かめた」顔で出ていきます。 3番目で荷重指数を分けるのは、「純正より小さいものは外す」という自社の決まりを数値で当てるためです。
AIに処理させる
AIの仕事は2つです。 問い合わせを探す条件に読み替えることと、規則で照らした候補と注意点を記録のまま並べて回答の下書きを書くことです。
| させること | させないこと |
|---|---|
| 車名・年式・型式・グレード・希望のサイズ・商品の番号を書かれたまま取り出す | 書かれていない型式やグレードを車名や呼び方から補うこと |
| 候補を記録のまま並べ、「純正と同じ」「確かめた記録あり」を写す | 外径やインセットの差から「入ると思われます」と書くこと |
| 規則が拾った注意点を、お客様に分かる言葉で書く | 規則が拾っていない注意点を足すこと |
| 聞き返すべき項目をまとめる | 車検や保安基準への適合を述べること、値引きや納期を約束すること |
「計算で入ると言わない」が、この構成でいちばん大事な線です。 外径やインセットの差は数字で出せても、フェンダーやブレーキのキャリパーとの当たりは車ごとに違います。 呼び方を型式に読み替えさせないのも同じで、「80系」には複数の型式があり、読み替えると聞き返すきっかけが消えます。
指示内容を固定する
1回目(問い合わせの読み替え)の指示です。
あなたはタイヤ・ホイールの通信販売の会社で、お客様からの適合の問い合わせを整理する立場です。
【問い合わせ】から、車両の適合の表と商品を探すための条件を取り出してください。
【取り出すもの】
- car_name / maker: 車名・メーカー。書かれたまま
- model_code: 型式。車検証の型式のように書かれている場合だけ。書かれたまま
- nickname: 「30系」「80系」のような呼び方。書かれたまま
- year_raw: 年式。書かれたまま(「H30」「2018年式」など)
- grade: グレード。書かれたまま
- wanted: 希望のタイヤサイズ・ホイールの寸法・インチ数・商品の番号。書かれたまま
- current: いま付いているタイヤ・ホイールの表示が書かれていれば、書かれたまま
- missing: 書かれていない項目の名前
【厳守事項】
- 書かれていない型式・グレードを、車名や呼び方から補わないでください。
- 呼び方(〇〇系)を型式に置き換えないでください。
- タイヤサイズの数字を直したり、別のサイズに言い換えたりしないでください。
- 「付くか」の判断をしないでください。条件を取り出すだけです。
- お客様の名前・住所・電話番号・車のナンバーは写さないでください。
【問い合わせ】{inquiry_text}
2回目(回答の下書き)の指示です。
あなたはタイヤ・ホイールの通信販売の会社で、適合の問い合わせへの回答の下書きを作る立場です。
【候補】は車両の適合の表と商品の記録、規則で照らした結果(fit_basis)と、規則が拾った注意点です。
【書き方】
- 候補ごとに、商品名・サイズ・寸法を記録のまま書いてください。
- fit_basis が same_as_oem なら「純正と同じサイズです」、verified なら
「取付けを確認した記録があるサイズです」と書いてください。
- fit_basis が not_recorded の候補は、下書きに書かず、担当者への申し送りに入れてください。
- 注意点は【注意点】にあるものだけを、お客様に分かる言葉で書いてください。
- 聞き返す項目があれば、最後にまとめて書いてください。
【厳守事項】
- 「付きます」「問題ありません」「車検に通ります」と書かないでください。
- 外径やインセットの差から、入るかどうかを推し量って書かないでください。
- 記録に無い寸法・注意点を書かないでください。
- 値引き・在庫の確約・納期の約束を書かないでください。
【問い合わせの条件】{conditions}
【候補】{candidates}
【注意点】{cautions}
「not_recorded は下書きに書かない」を明記しないと、AIは候補をすべて並べ、お客様はそれを「付くもの」と読みます。 また「付きます」を禁じても「お取付けいただけます」と言い換えるので、禁じた言い回しを Lambda で調べ、見つかれば作り直します。
出力形式を固定する
Bedrock の Converse API の outputConfig.textFormat に JSON スキーマを渡し、2回目は次の形で受け取ります。
{
"inquiry_no": "",
"vehicle": { "car_name": "", "model_code": "", "year": "", "grade": "",
"grade_status": "given | ask_back" },
"candidates": [
{ "item_no": "",
"fit_basis": "same_as_oem | verified | not_recorded",
"position": "front | rear | both",
"listed": { "tire_size": "", "load_index": "", "rim": "", "inset": "", "pcd_holes": "" },
"cautions": [""] }
],
"ask_back": [""],
"handover": [""],
"draft": ""
}
AWS の公式ページでは、enum が使え、すべての object に additionalProperties: false が要り、数値の minimum・maximum には対応していません。 新しいスキーマは初回の組み立てに最大で約90秒かかり、24時間キャッシュされるので、朝に1回呼んでおきます。 fit_basis と position は規則の結果を写させ、AIには決めさせません。
| fit_basis | 規則 |
|---|---|
| same_as_oem | 型式・年式・グレードが合う車両の純正サイズの組と、タイヤサイズ・リム径・PCD・穴数が一致する |
| verified | 確かめた記録の組と、タイヤサイズ・リム幅・インセットが一致する |
| not_recorded | どちらにも一致しない。PCD・穴数が合わないものは候補から外す |
| 外す | PCD・穴数が違う、荷重指数が純正より小さい |
構造化出力にする理由は、listed を商品の記録と Lambda で照合でき、違えば作り直せることです。 grade_status が ask_back なら、回答は聞き返しを先にします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 適合の表(スプレッドシート) | 毎日の書き出し(読み取りのみ) | 車両の索引の元 |
| 商品の管理の仕組み | 毎日の書き出し、下書きの直前の在庫と価格の照会(読み取りのみ) | 商品の索引の元、在庫の確かめ |
| Amazon OpenSearch Service | Lambda からの登録・検索 | 車両の索引、商品の索引 |
| Amazon Bedrock | Converse API(Claude) | 読み替えと下書き |
| 問い合わせの管理の仕組み | 社内の連携の仕組み | 問い合わせの受け取り、下書きと申し送りを内部のメモとして返す |
下書きは内部のメモに返し、お客様には送りません。
人が確認する
- 車両の特定を見る … 型式・年式・グレードが問い合わせのとおりに取り出され、正しい車両の行が引かれているかを確かめます
- 前後の組を見る … 前後で違うサイズの車では、候補の
positionが前と後ろで正しく分かれているかを確かめます - 申し送りの候補を判断する …
not_recordedの候補を回答に入れるかは、担当者が商品部と相談して決めます - 注意点を確かめ、下書きを直して回答する … 在庫と価格の案内は担当者が書き足します
3番目を担当者だけで決めないでください。 一度「付く」と答えたサイズは、次から確かめた記録のように扱われがちです。記録に足すのは、取付け店の報告を受けた商品部です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 車両が特定できない(車名だけ) | 年式の範囲で複数の車両を並べ、型式を聞き返す項目を下書きに入れる |
| グレードで純正サイズが違い、グレードが無い | 候補は出すが、回答はグレードの聞き返しを先にする |
| 適合の表に無い車種 | 「適合の記録なし」と申し送り、商品部に表の追加を依頼する |
| 希望の商品の PCD・穴数が合わない | 候補から外し、合う寸法の商品を候補に出す |
| 希望が純正より大きいインチ数で、確かめた記録が無い | not_recorded として申し送る。下書きには書かない |
| 禁じた言い回しが続く・構造化出力が返らない | 候補の一覧と規則の結果だけを出し、文は担当者が書く |
記録を残す
- 問い合わせごとの、問い合わせの文(個人の情報を伏せたもの)、1回目の JSON、担当者が直した箇所
- 引いた車両の行と組、規則の照らし合わせの結果、拾った注意点
- 2回目の JSON、禁じた言い回しの検査の結果、担当者が直した箇所
- 回答した商品と、その後の返品の有無と理由、取付け店からの報告
same_as_oem なのに返品になった組が続くなら、年の途中の変更が表に入っていません。 商品部に行を分けてもらいます。
04実装レベルの3段階
半自動化で、1件8分が5分程度になります。 該当行を探す時間はほぼなくなりますが、商品の寸法との見比べと、注意点を書く作業が残ります。本格構成で3分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月使うと、どの車種で表の行が足りないか、どの問い合わせで型式が書かれていないかが残ります。表と注意点の表をそこで直してから本格構成に進むほうが、not_recorded に回る件数が減ります。
05工数削減シミュレーション
導入後 900件 × 3分 ÷ 60 = 45 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- タイヤとホイールを自社のサイトやモールで通信販売し、「自分の車に付くか」の問い合わせが毎月数百件届く会社。車両ごとの純正サイズとホイールの取付け寸法、自社で取付けを確かめた記録を表で持っているのに、担当者が型式やグレードを見比べて答えていて、答えが担当者によって違う場合。前後で違うサイズの車やグレードで純正サイズが違う車の取り違えで、返品が出ている場合。AWS を使える担当か委託先がいる場合。
- 取り扱う車種が少なく、担当者が適合の表を覚えている場合。車両ごとの純正サイズや取付け寸法の表を持っておらず、メーカーの適合表を担当者が都度見ている場合(先に適合の表を作ります)。店頭での取付けが中心で、現車を見て決められる場合。なお、その車に付くかの最終的な確認、車検や保安基準への適合の判断、走行の安全に関わる判断は、この構成では代替できません。自社の適合の記録から候補を探し、記録のまま並べるまでです。
07最小構成で試す方法
- 先月の適合の問い合わせから30件を選ぶ(すぐ答えられたもの、聞き返したもの、返品になったものを混ぜる)
- それぞれについて、実際に回答した商品と、返品の有無を書き出す
- 適合の表のうち、30件に出てくる車種の行を表計算に写し、前後とグレードの組を1行ずつに分ける
- 30件の問い合わせを手元のAIサービスに貼り、「車名・年式・型式・グレード・希望のサイズを書かれたまま取り出してください。呼び方を型式に置き換えないでください」と指示する
- 取り出した条件で表計算を引き、実際に回答した商品の寸法と見比べる
- 返品になった問い合わせについて、表のどの組を見ていれば止められたかを見る
3番目で組を1行ずつに分けるのが、nested の練習になります。 前後が1行に並んでいる表のままだと、手で見比べても前と後ろを取り違えます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の回答と同じ候補が、組を崩さずに出た | OpenSearch の索引に進む |
| 呼び方を型式に置き換えた・グレードを補った | 指示の書き方で直る。構成は有効 |
| 適合の表にハブ径や座面の形が無い行が多い | 表の整備が先 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 前輪のサイズと後輪の寸法がまぜて一致する | 純正サイズの組を nested にし、inner_hits で一致した組だけを使う |
| 「225/45ZR17」と「225/45R17」が別のサイズになる | normalizer で書き方をそろえ、速度記号と荷重指数は別の項目に分ける |
| 型式の記号の有無で車両が引けない | normalizer で先頭の記号を外し、索引と問い合わせの両方にかける |
| 空のハブ径を一般的な値で埋める | 空のまま持ち、規則で「記録なし」を出す |
| 呼び方から型式を決める | 指示で禁じ、呼び方は別の項目に写す |
| AIが外径の差から「入ります」と書く | 指示で禁じ、禁じた言い回しを Lambda で検査する |
| 年の途中の変更を取り違える | 適合の表の年式の範囲を月まで持ち、境目の年はグレードと一緒に聞き返す |
上の3行は、検索の側の失敗のほとんどです。 4行目から6行目は、書かれていないことを、それらしい値や推し量りで埋めてしまう失敗で、返品と取付け店での作業の止まりに直結します。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客様からの問い合わせ(名前、連絡先、車の情報、ときに車検証の写し)、適合の表、商品の記録です。問い合わせには、車のナンバーや住所が書かれていることがあります。
- 問い合わせから個人の情報を外す … 名前、住所、電話番号、車のナンバーは、Claude に渡す前に伏せます。車検証の写しの画像は生成AIに渡さず、担当者が型式を読んで打ち込みます
- 適合を言い切らない … 回答は「純正と同じ」「確かめた記録あり」の根拠で、「付きます」「車検に通ります」とは書きません
- 車検や保安基準への適合は扱わない … 判断は取付け店と検査の側の仕事です。この構成が出すのは、自社の適合の記録との一致だけです
- 確かめた記録を足す担当を決める … 誤った記録が入ると、付かない組が
verifiedとして出ます。取付け店からの報告を商品部が確かめてから足します - 索引への接続を限る … OpenSearch のドメインには、Lambda とお客様窓口の担当だけが接続できるようにします
- 下書きを自動で送らない … 送信は担当者が行います
誤りが起きた場合のリスクは、付かない組を付くものとして案内して返品と取付けの中断になること、記録の無いサイズを推し量りで勧めること、お客様の情報が外へ出ることの3つです。 組を崩さない索引、根拠の規則、個人の情報を伏せることの3つで防ぎます。
10まず何から始めるか
1週目:適合の表を見る
適合の表を書き出し、前後とグレードの組が1行に並んでいる車種、ハブ径や座面の形が空の行、確かめた記録の件数を数えます。問い合わせの多い車種から、組ごとの行に直します。
2週目:30件で試す
第8章のとおり、先月の問い合わせ30件で、当時の回答と同じ候補が組を崩さずに出るかを見ます。呼び方を型式に置き換えていないか、グレードを補っていないかを最優先で見ます。
3週目:注意点の表を作る
過去の回答から、繰り返し書き添えてきた注意を拾い、規則の表にします。fit_basis の決め方を、商品部とベテランの担当と決めます。
4週目:索引を作る
OpenSearch に車両と商品の索引を作り、担当者が型式とタイヤサイズの書き方を気にせず引けるようにします。この時点では、問い合わせの読み替えと下書きは使いません。
2か月目: 読み替えと、規則の照らし合わせ、注意点、下書きを足します。3か月目以降: fit_basis ごとの件数、聞き返しの件数、返品の件数と理由を毎月数えます。新しい担当者の回答が、ベテランと同じ注意点を書き添えるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| OpenSearch Service のドメインに Japanese(kuromoji)と ICU の解析のプラグインが全ドメインに含まれること | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-27 |
normalizer が1つのトークンだけを出し、keyword の一致の検索に使えること。pattern_replace・mapping・icu_normalizer・lowercase・uppercase などが使え、同義語の置き換えはできないこと | OpenSearch: Normalizers | 2026-10-27 |
nested の問い合わせが各ネストのオブジェクトを別の文書のように照らして親を返すこと。索引に nested の項目が要ること。inner_hits で一致したオブジェクトが返ること。score_mode の既定が avg であること | OpenSearch: Nested query | 2026-10-27 |
bool の filter が点数に関わらない絞り込みで、should が点数を上げること。must か filter があるとき minimum_should_match の既定が0であること | OpenSearch: Boolean query | 2026-10-27 |
Converse API の outputConfig.textFormat で JSON スキーマに沿った出力が得られ、enum が使えること。additionalProperties: false が要ること。数値の minimum・maximum、文字列の長さの制約に対応しないこと。初回の組み立てに最大で約90秒かかり24時間キャッシュされること | AWS: Structured outputs(Amazon Bedrock) | 2026-10-27 |
その車に付くかの最終的な確認、車検や保安基準への適合、走行の安全に関わる判断は、担当者と取付け店が行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1930)についてのご相談はこちらから。
