中古厨房機器の買取店が、過去の買取と販売の記録から型式・年式・状態の近い機器を OpenSearch で探し、買取の見積の根拠を並べる
飲食店から届く中古の厨房機器の買取の相談を、型式・製造年・ガスの種類・電源・状態に読み替え、過去の買取と販売の記録から近い機器を探します。近い機器の買取額・販売額・売れるまでの日数を、記録の番号付きで並べます。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- EC/小売/飲食
- 対象部門
- 営業/購買
- 対象業務
- 情報検索/比較検討
- 主な課題
- 人手が足りない/判断に時間がかかる/属人化している
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/対応スピード向上/属人化解消
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 受付の担当が相談のフォームと銘板の写真を見て、メーカー・型式・製造年・状態を書き出す
- 買取の担当が、販売の管理の仕組みを品名とメーカーで絞る
- 型式の似た行を目で選び、書き方の違う型式は思い当たる書き方で引き直す
- 選んだ行の買取額・販売額・売れた日を見て、年式と状態の違いを見比べる
- ガスの種類・電源・扉の数などが同じかを、記録のメモで確かめる
- 買取の額を決め、相談の機器ごとに見積を作って返す
- 人受付の担当が銘板の写真から型式と製造年を読み、相談の文と一緒に画面に貼る
- 自動生成AIが相談から、機器ごとに品目・メーカー・型式・製造年・ガスの種類・電源・状態を書かれたまま取り出す
- 自動Lambda が型式を索引と同じ形にそろえ、系統の部分を切り出す
- 自動OpenSearch が品目とメーカーで絞り、系統の先頭一致で引き、型式の完全一致・製造年・販売の時期の近さで並べる
- 自動Lambda が候補ごとに、相談の機器と違う項目(型式の末尾・ガスの種類・電源・状態)を記録から並べる
- 自動生成AIが候補と違う点を記録のまま並べた表と、確かめる点のメモを作る
- 人買取の担当が候補と違う点を見て、状態の写真を確かめ、買取の額を決めて見積を返す
各工程の詳しい説明を読む
- 受付の担当が相談のフォームと銘板の写真を見て、メーカー・型式・製造年・状態を書き出す
- 買取の担当が、販売の管理の仕組みを品名とメーカーで絞る
- 型式の似た行を目で選び、書き方の違う型式は思い当たる書き方で引き直す
- 選んだ行の買取額・販売額・売れた日を見て、年式と状態の違いを見比べる
- ガスの種類・電源・扉の数などが同じかを、記録のメモで確かめる
- 買取の額を決め、相談の機器ごとに見積を作って返す
(a)型式の書き方で漏れる。 3番目で、ハイフンの有無や全角の型式を引き直さないと、同じ機器の記録が出てきません。引き直すかどうかは担当の気づき次第です。
(b)系統で見る判断が記憶頼み。 「HR-120A」と「HR-120AT」は同じ系統で値が近い、と知っているのは経験の長い担当です。新しい担当は完全に同じ型式だけを探し、見つからないと相場の分からないまま額を決めます。
(c)ガスの種類と電源の取り違え。 5番目は、記録のメモに書いてあれば分かりますが、急ぐと省かれます。プロパンガス用の機器を都市ガス用の販売額で見積もると、売れるまでの日数が読めません。
(d)売れるまでの日数が見えない。 販売額だけを見て買い取ると、売れるまで倉庫を何か月も占める機器を、高い額で抱えることになります。
- 【人】 受付の担当が銘板の写真から型式と製造年を読み、相談の文と一緒に画面に貼る
- 【自動】 生成AIが相談から、機器ごとに品目・メーカー・型式・製造年・ガスの種類・電源・状態を書かれたまま取り出す
- 【自動】 Lambda が型式を索引と同じ形にそろえ、系統の部分を切り出す
- 【自動】 OpenSearch が品目とメーカーで絞り、系統の先頭一致で引き、型式の完全一致・製造年・販売の時期の近さで並べる
- 【自動】 Lambda が候補ごとに、相談の機器と違う項目(型式の末尾・ガスの種類・電源・状態)を記録から並べる
- 【自動】 生成AIが候補と違う点を記録のまま並べた表と、確かめる点のメモを作る
- 【人】 買取の担当が候補と違う点を見て、状態の写真を確かめ、買取の額を決めて見積を返す
5番目の違う点を Lambda で作るのは、項目の比べ方を決めておくためです。 ガスの種類が「13A」と「都市ガス」で書かれていても、区分の値にそろえてから比べます。AIに比べさせると、書き方の違いを同じとみなしたり、別とみなしたりが揺れます。
7番目で額を決めるのは担当です。 画面に出るのは記録の買取額・販売額・売れるまでの日数だけで、「この機器は〜円で買い取れます」という提案は出しません。 状態の傷み、需要の季節、倉庫の空きを見て決めるのは、買取の担当です。
02今回想定するシステム構成
販売の管理の仕組み(買取と販売の記録:品目・メーカー・型式・製造年・状態・買取額・販売額・日付) ▼【トリガー】毎晩の書き出し(新しい買取・販売) AWS Lambda ── 型式の系統を切り出し、ガスの種類・電源を区分にし、売れるまでの日数を計算 ▼ Amazon OpenSearch Service │ 記録の索引:品目・メーカー・型式(normalizer でそろえた keyword)・系統 │ 製造年・ガスの種類・電源・状態・買取額・販売額・売れるまでの日数 ▼【人】受付の担当が相談を貼る AWS Lambda ├──▶ Claude(Amazon Bedrock)── 相談を機器ごとの条件に読み替える ├──▶ 型式をそろえる ──▶ OpenSearch ── 系統の先頭一致と、年式・時期の近さで並べる ├──▶ 違う項目を並べる ├──▶ Claude(Amazon Bedrock)── 候補と違う点を記録のまま並べた表 ▼ 買取の担当の画面 ──【人】状態を確かめ、額を決めて見積を返す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(normalizer、prefix、function_score の gauss) | 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(取り込みの写し、相談と候補と決めた額の記録) | 社内のファイルサーバー |
販売の管理の仕組みと古物の帳簿には、この構成から書き込みません。 買取が決まった後の帳簿への記載は、いつもの手順で行います。
買取の記録には、売り手の情報が付いています。 古物営業法の第16条は、古物商が古物を受け取り、又は引き渡したときに、取引の年月日、古物の品目及び数量、古物の特徴、相手方の住所・氏名・職業・年齢などを帳簿等に記載し、又は電磁的方法により記録しておかなければならないとしています。この構成の索引に入れるのは、品目・特徴・金額・日付だけです。 相手方の情報は、帳簿の側にだけ置きます。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。毎晩の買取と販売の記録の取り込みと、受付の担当の検索のボタンです。
取り込みは、前の日までの買取と販売の記録を書き出し、索引に加えます。同じ機器の買取の記録と販売の記録は、管理番号でつないで1つの文書にします。 買取の時点では販売額と売れるまでの日数が空で、売れた日に同じ文書を上書きします。
検索のボタンは、受付の担当が相談と銘板の型式を貼った後に押します。閉店の相談で1店から何点も来るときは、まとめて貼ると機器ごとに分けて引きます。 品目の区分の表とガスの種類・電源の言い換えの表は、買取の担当が月に1回見直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 買取の相談 | フォームの本文、受付の担当が銘板から読んだ型式と製造年、状態のメモ | 受付の担当が貼る |
| 買取の記録 | 管理番号、品目、メーカー、型式、製造年、状態のランク、買取額、買取の日 | 販売の管理の仕組み |
| 販売の記録 | 販売額、販売の日、販売の経路(店頭・通販)、保証の修理の有無 | 販売の管理の仕組み |
| 機器の区分 | ガスの種類(都市ガス・プロパンガス)、電源(単相100V・単相200V・三相200V)、扉の数・容量などのメモ | 買取の記録のメモ |
| 言い換えの表 | 「13A」→都市ガス、「LP」→プロパンガス、「3相」→三相200V などの表 | 買取の担当で作る表 |
質を決めるのは、ガスの種類と電源の区分です。 記録のメモに「LP」「プロパン」「LPG」と書かれていれば、言い換えの表でそろえます。メモに無い機器は、区分を空のまま残します。 空を都市ガスと見なすと、第3章の(c)がそのまま起きます。
売り手の名前と住所は、索引にも生成AIにも渡しません。 相談のフォームに店の名前や担当者の名前が書かれていれば、貼る前の画面で伏せます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 品目とメーカーが同じ記録 | 記録の索引 | filter の term(category・maker) |
| 系統が同じ記録 | 記録の索引 | filter の prefix(model_norm) |
| 型式が完全に同じ記録 | 記録の索引 | should の term(model_norm。点数を上げる) |
| 年式と販売の時期の近さ | 記録の索引 | function_score の gauss(made_year・sold_on) |
| 違う項目の材料 | 記録の索引 | _source の model_norm・gas・power・grade |
型式は normalizer を付けた keyword で持ちます。 OpenSearch の公式のドキュメントでは、normalizer は analyzer に似ていますが1つのトークンだけを出し、文字単位の操作をする文字フィルターとトークンフィルターだけを持てるとされています。使えるものとして、文字フィルターの pattern_replace・mapping、トークンフィルターの cjk_width・uppercase・trim などが挙げられています。cjk_width で全角を半角に、pattern_replace でハイフンと空白を消し、uppercase で大文字にそろえます。
系統の検索は prefix で行います。 公式のドキュメントでは、prefix は項目の語が指定した先頭の文字列で始まる文書を探すとされています。同時に、search.allow_expensive_queries が false だと prefix は実行されず、index_prefixes を有効にしていればその設定にかかわらず最適化した検索が組まれるとされています。ドメインの設定を確かめ、必要なら系統を別の keyword の項目(family)として取り込み時に切り出して持ち、term で引きます。 本記事はこちらを既定にし、prefix は系統の表に無い型式のときの補助にします。
検索の値も、Lambda で索引と同じ形にそろえてから渡します。 prefix に渡した文字列にどこまで normalizer がかかるかに頼らず、索引の値と検索の値を同じ関数で作ります。
GET /kitchen_records/_search
{
"size": 10,
"_source": ["record_no", "model_norm", "made_year", "gas", "power", "grade",
"buy_price", "sell_price", "days_to_sell", "sold_on"],
"query": { "function_score": {
"query": { "bool": {
"filter": [
{ "term": { "category": "refrigerator" } },
{ "term": { "maker": "MAKER_A" } },
{ "term": { "family": "HR120" } },
{ "exists": { "field": "made_year" } } ],
"should": [
{ "term": { "model_norm": { "value": "HR120AT", "boost": 3 } } },
{ "term": { "power": "single_100v" } } ] } },
"functions": [
{ "gauss": { "made_year": { "origin": 2019, "offset": 1, "scale": 3 } } },
{ "gauss": { "sold_on": { "origin": "now", "offset": "90d", "scale": "540d" } } } ],
"score_mode": "multiply" } }
}
made_year を exists で絞るのは、減衰関数の決まりのためです。 公式のドキュメントでは、減衰関数は項目の無い文書に1点を返すとされています。製造年の分からない記録は、何もしないと年式が完全に一致した記録と同じ点数になります。製造年が空の記録は、別の検索で件数だけを数えて「年式不明」として出します。 販売の日が空の記録(売れていない機器)も同じ理由で、並べ替えの点数を当てにせず、「売れていない」と画面に出します。
AIへ渡す前に整形する
- 型式をそろえる … 全角を半角に、ハイフン・空白・スラッシュを消し、大文字にします(索引の normalizer と同じ規則を Lambda にも持たせます)
- 系統を切り出す … メーカーごとの系統の規則(型式の先頭の英字と容量の数字まで、など)で
familyを作ります。規則に当たらない型式は空のまま残します - ガスの種類と電源を区分にする … 言い換えの表で
city_gas・lp_gas、single_100v・single_200v・three_200vにします。書かれていなければunknownにします - 製造年を整数にする … 「2019年製」「19年」「令和元年」を 2019 にします
- 売れるまでの日数を計算する … 買取の日から販売の日までの日数を
days_to_sellに持ちます - 状態のランクをそろえる … 担当ごとの書き方(「A」「美品」「上」)を、買取の担当で決めた4段階にそろえます
2番目の系統の規則は、メーカーごとに買取の担当と作ります。 型式の末尾の英字が年式の違いを表すメーカーもあれば、電源やガスの種類を表すメーカーもあります。末尾が電源やガスの種類を表すメーカーでは、末尾を系統に含めずに、必ず違う項目として出します。
6番目の状態のランクは、そろえないと年式が近くても値が比べられません。 状態は買取の担当が機器を見て付けるもので、相談の時点の状態は写真と受付のメモだけです。 相談の側の状態は、ランクではなく書かれたままの言葉で画面に出します。
AIに処理させる
AIの仕事は2つです。 相談を機器ごとの条件に読み替えることと、候補と違う点を記録のまま並べた表を作ることです。
| させること | させないこと |
|---|---|
| 機器ごとに、品目・メーカー・型式・製造年・ガスの種類・電源・状態を書かれたまま取り出す | 書かれていない製造年やガスの種類を、型式や品名から推し量ること |
| 品目を、決められた区分から選ぶ | 金額を計算すること、平均や値幅を出すこと |
| 候補ごとに、記録の値と違う項目を表にする | 買取の額を提案すること |
| 確かめる点(銘板の読み直し・ガスの種類の確認など)をまとめる | 機器が安全に使えるか、設置できるかを書くこと |
買取の額を提案させないのが、この構成でいちばん大事な線です。 生成AIに過去の買取額と販売額を渡せば、それらしい額を返します。その額には、機器の傷みも、季節の需要も、倉庫の空きも入っていません。 画面に額が出れば、閉店の相談が重なった日ほど、その額が見積に写ります。
ガスの種類を推し量らせないのも同じ理由です。 型式の末尾の英字がガスの種類を表すかはメーカーごとに違い、AIが推した区分が外れると、別の機器の値で見積もることになります。
指示内容を固定する
1回目(相談の読み替え)の指示です。
あなたは中古の厨房機器の買取店で、飲食店からの買取の相談を整理する立場です。
【相談】から、機器ごとに過去の記録を探すための条件を取り出してください。
【取り出すもの(機器ごと)】
- category: 品目。【品目の区分】から1つ選ぶ。選べなければ空
- maker_raw: メーカー。書かれたまま
- model_raw: 型式。書かれたまま(「HR-120AT」など)
- year_raw: 製造年。書かれたまま。無ければ空
- gas_raw: ガスの種類。書かれたまま(「13A」「LP」など)。無ければ空
- power_raw: 電源。書かれたまま(「単相200V」など)。無ければ空
- condition_raw: 状態。書かれたまま
- missing: 書かれていない項目の名前
【厳守事項】
- 製造年・ガスの種類・電源が書かれていなければ空にしてください。
型式や品名から推し量らないでください。
- 型式の文字を直さないでください。ハイフンや全角も書かれたまま写してください。
- 買取の額について、何も書かないでください。
- 店の名前・担当者の名前・住所は写さないでください。
【品目の区分】{categories}
【相談】{inquiry_text}
2回目(候補の表)の指示です。
あなたは中古の厨房機器の買取店で、買取の担当に過去の記録を示す立場です。
【候補】は過去の買取と販売の記録です。【違う項目】はシステムが作ったものです。
【書き方】
- 候補ごとに、記録の番号・型式・製造年・ガスの種類・電源・状態のランク・
買取額・販売額・売れるまでの日数を、記録の値のまま書いてください。
- 【違う項目】は、文言を変えずにそのまま書いてください。
- 売れていない候補は、販売額と日数を「未販売」と書いてください。
- 最後に、受付で確かめる点(銘板の読み直し、ガスの種類の確認など)をまとめてください。
【厳守事項】
- 金額を計算しないでください。平均・値幅・差を書かないでください。
- 今回の買取の額を提案しないでください。
- 「よく売れる」「人気」など、記録に無いことを書かないでください。
- 機器が安全に使えるか、設置できるかを書かないでください。
【相談の条件】{conditions}
【候補】{hits}
【違う項目】{differences}
「違う項目を文言を変えずに書く」が、2回目の指示の中心です。 AIは「ガスの種類が違います(LP)」を「ガスの種類は問題ありません」のように読みやすく言い換えることがあります。意味が逆になる言い換えを防ぐため、写させて後で照合します。
出力形式を固定する
Bedrock の Converse API の outputConfig.textFormat に JSON スキーマを渡し、2回目は次の形で受け取ります。
{
"inquiry_no": "",
"item": { "category": "", "model_norm": "", "family": "", "made_year": 0,
"gas": "city_gas | lp_gas | none | unknown",
"power": "single_100v | single_200v | three_200v | unknown" },
"candidates": [
{ "record_no": "", "model_norm": "", "made_year": 0, "grade": "",
"buy_price": 0, "sell_price": 0, "days_to_sell": 0, "sold": true,
"differences": [""] } ],
"to_confirm": [""]
}
AWS の公式ページでは、Converse API の outputConfig.textFormat に JSON スキーマを渡すと応答がスキーマに沿い、enum が使えるとされています。すべての object に additionalProperties: false が要り、数値の minimum・maximum は使えません。 ガスの種類と電源は enum で縛り、区分の外の値が返らないようにします。
1つ目の理由は、AIが返した金額と日数を索引の値と照合できることです。 record_no ごとに、buy_price・sell_price・days_to_sell が _source と一致するかを Lambda が確かめます。違えば索引の値で置き換え、置き換えたことを記録します。
2つ目は、differences を Lambda が作った文と照合できることです。 1字でも違えば表を出さずに作り直します。違う項目は次の規則で作ります。
| 比べる項目 | 違うときの文 |
|---|---|
model_norm | 型式の末尾が違います(相談:〜/記録:〜) |
gas | ガスの種類が違います(相談:〜/記録:〜) |
power | 電源が違います(相談:〜/記録:〜) |
どちらかが unknown | 〜が分かりません。確かめてから比べてください |
4行目が大事です。 相談の側か記録の側のどちらかが unknown なら、「同じ」とも「違う」とも出さず、確かめる点として出します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 販売の管理の仕組み | 毎晩の書き出し(読み取りのみ) | 買取と販売の記録 |
| Amazon OpenSearch Service | Lambda からの登録・検索 | 記録の索引、系統と年式と時期の近さ |
| Amazon Bedrock | Converse API(Claude) | 読み替えと候補の表 |
| 買取の担当の画面 | 社内の画面 | 相談の貼り付け、候補と違う点、決めた額の記録 |
決めた買取の額は、画面で「見た記録の番号」と一緒に S3 に残します。 見積の送付と帳簿への記載は、担当がいつもの手順で行います。
人が確認する
- 読み替えを見る … 型式・製造年・ガスの種類・電源が、銘板の写真のとおりに取り出されているかを確かめます
- 違う点を見る … ガスの種類と電源が違う候補は、値の参考にとどめます
- 状態を見る … 相談の写真で、傷み・さび・扉のパッキンなどを確かめます
- 売れるまでの日数を見る … 近い機器が長く売れていなければ、倉庫の空きと合わせて額を考えます
- 額を決めて残す … 見た記録の番号と、額を決めた理由を残します
1番目を省かないでください。 銘板の写真の読み違いは、型式の1文字の違いで別の系統の記録を引きます。型式が系統の表に当たらなかったときは、まず銘板を読み直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 型式が系統の規則に当たらない | family を空にし、prefix で先頭の数文字から引く。系統の表に足す候補として記録する |
| 同じ系統の記録が0件 | 品目とメーカーだけで引いた件数と、製造年の近い記録を示す |
| 製造年が分からない | 年式の近さを使わずに引き、「年式不明」として出す。銘板の読み直しを確かめる点に入れる |
| ガスの種類・電源が分からない | unknown として確かめる点に入れ、違う項目は出さない |
| 近い記録がすべて未販売 | 未販売の台数と、買取からの日数を示す |
| AIの金額が索引と合わない | 索引の値で置き換え、置き換えたことを記録する |
| 構造化出力が返らない | 候補の一覧と違う項目だけを出し、表は担当が見る |
5行目は相場の兆しの行です。 近い機器が倉庫で売れ残っていれば、過去の販売額より今の需要は弱い可能性があります。
記録を残す
- 相談ごとの、相談の文(店の名前を伏せたもの)、1回目の JSON、担当が直した箇所
- 検索の条件、候補、違う項目と照合の結果
- AIの数字を索引の値で置き換えた記録
- 担当が決めた買取の額と、見た記録の番号、額を決めた理由
- 系統の規則と言い換えの表を見直した日と担当
4つ目は、買い取った機器が売れたときに見直す材料になります。 決めたときに見た記録と、実際の販売額と日数を並べられます。
04実装レベルの3段階
半自動化で、1点12分が7分程度になります。 近い機器の選び出しはほぼなくなりますが、ガスの種類と電源の見比べと見積の作成が残ります。本格構成で4分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月使うと、どのメーカーの型式が系統の規則に当たらないかが残ります。規則を整えてから本格構成に進むほうが、候補が確かになります。
05工数削減シミュレーション
導入後 450件 × 4分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 冷蔵庫・製氷機・食器洗浄機・フライヤー・ガスレンジなどの中古の厨房機器を買い取って販売し、買取の相談が毎月数百点ある買取店。過去の買取と販売の記録は販売の管理の仕組みに残っているのに、型式の書き方がばらばらで、近い機器の値を探すのがベテランの記憶に頼っている場合。閉店の相談が重なり、見積を返すまでの日数が長くなっている場合。AWS を使える担当か委託先がいる場合。
- 扱う機器が数十の型式に限られ、担当が全部の相場を覚えている場合。過去の記録に型式や製造年が入っておらず、品名と金額しか無い場合(先に記録を整えます)。新品の販売が中心で、買取がほとんど無い場合。なお、買取の額を決めること、機器が安全に使えるかの判断、ガス機器の設置や接続の可否の判断は、この構成では代替できません。過去の記録から近い機器を探し、記録のまま並べるまでです。
07最小構成で試す方法
- 先月の買取の相談から30点を選ぶ(冷蔵庫・製氷機・食器洗浄機・ガス機器を混ぜる)
- それぞれについて、担当が当時思い浮かべた近い機器と、決めた買取の額を書き出す
- 過去の記録を表計算に書き出し、型式をそろえた列と系統の列を関数で作る
- 30点の相談を手元のAIサービスに貼り、「型式・製造年・ガスの種類・電源を書かれたまま取り出してください。推し量らず、買取の額を書かないでください」と指示する(店の名前は伏せてから貼ります)
- 取り出した型式をそろえて表計算の系統の列を引き、当時の担当が思い浮かべた機器が出てくるかを見る
- ガスの種類と電源の列が空の記録がどれだけあるかを数える
6番目で空が多ければ、記録のメモの整え方が先です。
| 出てきた内容 | 判断 |
|---|---|
| 当時の機器が見つかり、違う点も並べられた | OpenSearch の索引に進む |
| 製造年やガスの種類を推し量った・額を書いた | 指示の書き方で直る。構成は有効 |
| 型式や製造年が記録に無いものが多い | 販売の管理の記録の整備が先 |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 同じ型式が書き方の違いで漏れる | normalizer でそろえ、検索の値も同じ関数でそろえる |
prefix が実行されない | search.allow_expensive_queries を確かめ、系統を取り込み時に切り出して term で引く |
| 製造年の分からない記録が上位に来る | 減衰関数は項目の無い文書に1点を返す。exists で絞り、年式不明は別に数える |
| ガスの種類が違う機器が同じ候補に並ぶ | 違う項目として必ず出す。末尾が区分を表すメーカーは系統に含めない |
unknown を同じとみなして比べる | unknown は確かめる点に回し、違う項目を出さない |
| AIが買取の額を書く | 額を書かせない。照合で止める |
上の3行は、検索がきれいに動いているように見えて起きる失敗です。 どれも候補が出ないか、合わない候補が上に来る形で起きます。第8章の30点で、当時の担当が思い浮かべた機器が出てくるかを必ず見てください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 飲食店からの買取の相談、過去の買取と販売の記録(品目・型式・金額・日付)です。買取の記録の元には、古物の帳簿として売り手の住所・氏名・職業・年齢が付いています。
- 売り手の情報を外す … 古物の帳簿の相手方の情報は、索引にも Claude にも入れません。索引に入れるのは品目・特徴・金額・日付だけにします
- 帳簿は帳簿として残す … 古物営業法の第16条の帳簿等への記載は、この構成の索引で代えません。いつもの帳簿の手順で記載し、記録します
- 買取の額を決めさせない … 画面に出すのは記録の値と違う項目までです
- 安全と設置の判断をしない … ガス機器が使えるか、設置先のガスの種類や電源に合うかは、資格のある業者と買取の担当が確かめます。AIの文に書かせません
- 索引への接続を限る … OpenSearch のドメインには、Lambda と買取の担当の画面だけが接続できるようにします
- 決めた根拠を残す … 見た記録の番号と額を決めた理由を残します
誤りが起きた場合のリスクは、ガスの種類や電源の違う機器の値で見積もること、AIの文の金額を根拠にすること、売り手の情報が索引に入ることの3つです。 違う項目の規則と unknown の扱い、索引の値との照合、取り込みの項目の限定で防ぎます。
10まず何から始めるか
1週目:記録を見る
過去の記録を書き出し、型式・製造年・ガスの種類・電源が空の記録を数えます。買取の多い上位10社について、型式の末尾が何を表すかを買取の担当で書き出します。
2週目:30点で試す
第8章のとおり、先月の相談30点で、当時の担当が思い浮かべた機器が出てくるかを見ます。製造年やガスの種類を推し量っていないか、額を書いていないかを最優先で見ます。
3週目:系統の規則と言い換えの表を作る
上位10社の系統の規則と、ガスの種類・電源の言い換えの表を作ります。末尾が電源やガスの種類を表すメーカーを一覧にし、系統に含めない部分を決めます。
4週目:索引を作る
OpenSearch に記録の索引を作り、系統と年式と時期の近さで引けるようにします。この時点では、違う項目と候補の表は使いません。
2か月目: 違う項目の規則、候補の表と照合、決めた額の記録を足します。3か月目以降: 系統の規則に当たらなかった型式の数、年式不明で出た件数、閉店の相談に見積を返すまでの日数を毎月数えます。新しい担当が、ベテランと同じ記録を見て違う点を確かめ、額を決めて根拠を残せた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 古物営業法の第16条で、古物商が古物を受け取り又は引き渡したときに、取引の年月日、古物の品目及び数量、古物の特徴、相手方の住所・氏名・職業・年齢などを帳簿等に記載し、又は電磁的方法により記録しておかなければならないこと | e-Gov 法令API: 古物営業法 | 2026-10-28 |
normalizer が1つのトークンだけを出し、文字単位の操作をするフィルターだけを持てること。文字フィルターの pattern_replace・mapping、トークンフィルターの cjk_width・uppercase・trim などが使えること | OpenSearch: Normalizers | 2026-10-28 |
prefix が項目の語が指定した先頭の文字列で始まる文書を探すこと。search.allow_expensive_queries が false だと実行されず、index_prefixes を有効にしていれば最適化した検索になること | OpenSearch: Prefix query | 2026-10-28 |
減衰関数(gauss など)が数値・日付の項目に使え、origin・offset・scale・decay で点数を決めること。項目の無い文書に1点を返すこと | OpenSearch: Function score query | 2026-10-28 |
bool の filter の句が一致するかだけを決めて点数に加わらず、should の句が一致すると点数が加わること | OpenSearch: Boolean query | 2026-10-28 |
Converse API の outputConfig.textFormat で JSON スキーマに沿った出力が得られ、enum が使えること。additionalProperties: false が要ること。数値の minimum・maximum に対応しないこと | AWS: Structured outputs(Amazon Bedrock) | 2026-10-28 |
買取の額、機器の安全と設置の可否、古物の帳簿の扱いは、買取の担当・資格のある業者・自社の決まりに沿って判断してください。 本記事は上記の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2171)についてのご相談はこちらから。
