中古車買取店が、過去の査定と業者オークションでの落札の記録から車種・年式・走行距離・状態の近い車を探し、査定額の根拠を示して担当者による差を減らす
査定する車の車種・年式・走行距離・状態から、自社の過去の査定と業者オークションでの落札の記録を探し、近い車を並べます。近い車の落札額の分布と、状態の違いを根拠の記録番号付きで返します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- その他/小売
- 対象部門
- 営業
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/品質標準化/属人化解消
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 車検証で車種・型式・年式・グレードを確かめ、走行距離を見る
- 外装・内装・機関を見て、評価点と減点の項目を査定の表に付ける
- 相場の検索の端末や自社の査定の記録で、同じ車種・近い年式の落札の結果を探す
- 見つかった記録の年式・走行距離・評価点・色を、査定する車と見比べる
- 違いを頭の中で足し引きして、提示額の幅を決める
- 店長に提示額と根拠を説明し、了承を得てお客様に提示する
- 人査定士が、車種・型式・年式・グレード・走行距離・評価点・減点の項目を査定の表に入れる
- 自動査定の表の保存をきっかけに、近い車の検索が動く
- 自動Amazon OpenSearch Service が、型式と修復歴で絞ったうえで、年式・走行距離・評価点・落札日の近さで落札の記録を並べる
- 自動値の近い上位の記録を、同じ車は1台として標本にし、落札額の四分位を出す
- 自動上位の記録について、査定する車との違いをプログラムが項目ごとに出す
- 自動Claude API が、近い車ごとに違いを読める文にし、記録番号を付けた根拠のメモにする
- 人査定士が根拠のメモを見て、提示額を決める
- 人店長が、根拠のメモと提示額を見て了承する
各工程の詳しい説明を読む
- 車検証で車種・型式・年式・グレードを確かめ、走行距離を見る
- 外装・内装・機関を見て、評価点と減点の項目を査定の表に付ける
- 相場の検索の端末や自社の査定の記録で、同じ車種・近い年式の落札の結果を探す
- 見つかった記録の年式・走行距離・評価点・色を、査定する車と見比べる
- 違いを頭の中で足し引きして、提示額の幅を決める
- 店長に提示額と根拠を説明し、了承を得てお客様に提示する
(a)近い車を探すのに時間がかかる。 車種と年式で絞っても、走行距離や評価点が違う記録が何十件も出ます。1件ずつ見比べて近いものを選ぶのは、慣れた査定士でも数分かかります。
(b)見比べ方が人によって違う。 走行距離の差を重く見る人、評価点の差を重く見る人、色を気にする人。同じ記録を見ても、どれを「近い」とするかが違います。
(c)古い落札の記録を使ってしまう。 中古車の相場は季節や新型車の発売で動きます。半年前の落札額を根拠にすると、いまの相場とずれます。
(d)同じ車を何度も数える。 流札して出品し直した車は、記録に何度も出てきます。1台の車の複数の記録を、別々の近い車として数えてしまいます。
(e)店長への説明がそろわない。 根拠の示し方が査定士ごとに違うので、店長はそのたびに自分で記録を開き直して確かめています。
- 【人】 査定士が、車種・型式・年式・グレード・走行距離・評価点・減点の項目を査定の表に入れる
- 【自動】 査定の表の保存をきっかけに、近い車の検索が動く
- 【自動】 Amazon OpenSearch Service が、型式と修復歴で絞ったうえで、年式・走行距離・評価点・落札日の近さで落札の記録を並べる
- 【自動】 値の近い上位の記録を、同じ車は1台として標本にし、落札額の四分位を出す
- 【自動】 上位の記録について、査定する車との違いをプログラムが項目ごとに出す
- 【自動】 Claude API が、近い車ごとに違いを読める文にし、記録番号を付けた根拠のメモにする
- 【人】 査定士が根拠のメモを見て、提示額を決める
- 【人】 店長が、根拠のメモと提示額を見て了承する
3番目で絞るのは、型式と修復歴だけです。 型式が違えば別の車で、修復歴の有無で落札額の付き方が大きく変わります。それ以外の年式・走行距離・評価点は、絞らずに近さの点数で並べます。 絞りすぎると、近い車が1台も出てこなくなるからです。
7番目のAIの出力に、金額の提案は入れません。 出すのは近い車の記録と分布と違いまでです。提示額を決めるのは査定士で、その金額の責任も査定士と店長が持ちます。
02今回想定するシステム構成
査定の管理システム オークションの出品と落札の記録 │ 毎晩、出品番号と査定番号でつないで書き出す ▼ AWS Lambda ── 車台番号のハッシュ化、年式の月数への換算(プログラム) ▼ Amazon OpenSearch Service ── 落札の記録の索引(数値・日付・区分の項目) ▲ │ 検索 査定の管理画面 ──【トリガー】査定の表の保存 ▼ OpenSearch ── function_score(gauss 減衰)+ filter │ + diversified_sampler + percentiles ▼ 違いの計算(プログラム)── 年式・走行距離・評価点・減点の項目・色 ▼ Claude API ── 近い車ごとの説明と記録番号 ▼ 査定の管理画面 ──【人】査定士が提示額を決め、店長が了承する
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(function_score の減衰関数、diversified_sampler、percentiles) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude API(近い車ごとの違いの説明と根拠のメモ) | Azure OpenAI(Microsoft Foundry)、Gemini API |
| 連携 | AWS Lambda(記録の書き出しとつなぎ、査定の管理画面とのつなぎ、違いの計算) | AWS Step Functions |
査定の管理システムとオークションの記録には、この構成から書き込みません。 根拠のメモは査定の管理画面に表示し、提示額は査定士がこれまでどおり入力します。
索引に入れるのは、自社が出品した車の落札の記録です。 業者オークションの相場の検索の端末で見られる、他社が出品した車の落札の結果は入れません。相場のデータを自社の仕組みに取り込んでよいかは、オークションの会場との契約によるからです。 使うなら、契約を確かめてからにします。
並べ方の中心は function_score の減衰関数です。 数値・日付・位置の項目に使え、origin(目標の値)からの距離で点数を下げます。offset の内側は満点の1で、offset と scale を足した距離で decay(既定0.5)の点数になります。日付の項目では origin を省くと現在の日時になり、scale は「30d」のように単位を付けて書きます。
ここで注意が1つあります。減衰関数は、項目が無い文書に1を返します。 走行距離が記録されていない落札の記録が、満点で上位に並ぶことになります。目標の値を持つ項目は、exists で値を持つ記録だけに絞ります。
落札額の分布は、sampler 系の集計と percentiles で出します。 sampler の集計は、シャードごとに点数の高い文書だけを下の集計に回します。値の近い上位の車だけで四分位を出せるので、遠い車の落札額で分布がぼやけません。 diversified_sampler は、同じ値を持つ文書が標本を占めないよう、値ごとの件数に上限を付けます。車台番号のハッシュの項目にかけると、同じ車の記録は1件だけが標本に入ります。
03どうやって実装するのか
処理の起点を決める
査定士が査定の表を保存したときに動かします。 評価点と減点の項目が入った時点で保存するので、車を見終わってお客様に提示するまでのあいだに、根拠のメモができています。
評価点や走行距離を直して保存し直したら、検索もやり直します。 前の検索の結果は、査定番号ごとに版を付けて残します。どの入力で出した根拠かが、後から分かるようにします。
もう1つの起点は、落札の結果の確定です。 業者オークションで落札が確定し、結果が出品の記録に入ったら、毎晩その日の分を索引に足します。流札の記録も入れます。 流札は「その価格では売れなかった」という情報で、分布の外に別の段で示します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 査定する車 | 型式・グレード・初度登録年月・走行距離・評価点・修復歴・色・減点の項目・装備 | 査定の表 |
| 落札の記録 | 記録番号・型式・グレード・初度登録年月・走行距離・評価点・修復歴・色・減点の項目・出品日・落札日・落札額・流札かどうか | 落札の記録の索引(OpenSearch) |
| 車のつなぎ | 車台番号のハッシュ(同じ車の記録をまとめるため) | 書き出しの処理で作る |
| 査定のときの記録 | その車を買い取ったときの評価点と提示額 | 査定の管理システム |
質を決めるのは、2行目の減点の項目です。 年式と走行距離だけなら、相場の検索の端末と大差がありません。「右フロントドアに凹み」「内装にタバコの臭い」のような減点の項目が残っているから、近い車との状態の違いを示せます。
4行目の査定のときの記録は、査定士だけが見るものです。 自社がその車をいくらで買い取ったかは、仕入の値段です。店舗のほかのスタッフには見せない項目にします。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 値の近い落札の記録 | 落札の記録の索引 | 型式と修復歴で絞り、年式・走行距離・評価点・落札日を gauss で並べる |
| 落札額の分布 | 同じ問い合わせ | diversified_sampler で同じ車を1件にし、percentiles で四分位を出す |
| 流札の記録 | 落札の記録の索引 | 同じ絞り込みで sold を false に替えた別の問い合わせで、流札の台数を数える |
| 査定のときの記録 | 査定の管理システム | 上位の記録の査定番号から引く |
検索の形は、次のようになります。
POST /auction-results/_search
{
"size": 10,
"query": {
"function_score": {
"query": {
"bool": {
"filter": [
{ "term": { "model_code": "6AA-XXXX" } },
{ "term": { "repair_history": false } },
{ "term": { "sold": true } },
{ "exists": { "field": "mileage_km" } },
{ "exists": { "field": "grade_score" } }
],
"should": [
{ "term": { "trim": "G" } },
{ "term": { "color_group": "white_pearl" } }
]
}
},
"functions": [
{ "gauss": { "reg_months": { "origin": 600, "offset": 3, "scale": 12 } }, "weight": 2 },
{ "gauss": { "mileage_km": { "origin": 48000, "offset": 3000, "scale": 15000 } }, "weight": 2 },
{ "gauss": { "grade_score": { "origin": 4.0, "offset": 0, "scale": 0.5 } }, "weight": 1 },
{ "gauss": { "sold_on": { "offset": "30d", "scale": "90d" } }, "weight": 1 }
],
"score_mode": "avg",
"boost_mode": "sum"
}
},
"aggs": {
"near": {
"diversified_sampler": { "field": "vehicle_hash", "shard_size": 30, "max_docs_per_value": 1 },
"aggs": {
"price": { "percentiles": { "field": "hammer_price", "percents": [25, 50, 75] } }
}
}
}
}
reg_months は、初度登録年月を月数にした値です。 年と月を別の項目にすると、「2021年12月」と「2022年1月」が1年離れているように扱われます。月数にすれば、1か月の差として近さを測れます。
sold_on の減衰には origin を書いていません。 日付の項目では省くと現在の日時になり、落札から30日以内は満点、そこから90日で点数が半分になります。 古い落札の記録が上に来にくくなり、第3章の(c)を点数の側で防ぎます。
shard_size は、シャードごとに標本に入れる上位の件数です。 索引をいくつかのシャードに分けているなら、標本の大きさはシャードの数だけ増えます。標本の件数は応答の doc_count で確かめ、少なすぎる分布は表示しません。
落札の記録の索引の1件は、次のような形にします。
{
"record_id": "AU-2026-08-11873",
"appraisal_id": "AP-2026-07-30412",
"vehicle_hash": "車台番号のハッシュ",
"model_code": "6AA-XXXX",
"trim": "G",
"reg_months": 598,
"mileage_km": 51200,
"grade_score": 4.0,
"repair_history": false,
"color_group": "white_pearl",
"deductions": ["右フロントドア 凹み 小", "リアバンパー 擦り傷"],
"listed_on": "2026-08-04",
"sold_on": "2026-08-11",
"sold": true,
"hammer_price": 1830000,
"store": "S-07"
} AIへ渡す前に整形する
- 記録のつなぎ … 査定番号と出品番号で、査定の記録と落札の結果を1件にします
- 車台番号のハッシュ化 … 車台番号はそのまま入れず、ハッシュにして同じ車の記録をまとめるためだけに使います
- 年式の換算 … 初度登録年月を月数にします
- 区分のそろえ … 色の名前を色の系統に、グレードの書き方を型式ごとの区分にそろえます
- 減点の項目のそろえ … 査定の表の減点の項目を、部位・種類・程度の区分にそろえます
- 範囲の確認 … 走行距離・評価点・落札額が、ありうる範囲に入っているかを確かめます
換算と範囲の確認はプログラムで行います。 Claude API の構造化出力は、JSON スキーマの minimum・maximum のような数値の制約に対応しておらず、使うと 400 のエラーになります。 範囲はスキーマで縛れないので、取り込みの処理で止めます。
6番目で止まる記録の多くは、入力の誤りです。 走行距離の桁を1つ多く入れた記録が索引に入ると、その記録だけが遠い車として外れるのではなく、分布の端を引っぱります。
AIに処理させる
させるのは、近い車ごとに、プログラムが出した違いを査定士と店長が読める文にすることだけです。 探すのは OpenSearch、違いの計算はプログラム、金額を決めるのは査定士です。
| させること | 中身 |
|---|---|
| 近い車ごとの説明 | 年式・走行距離・評価点・グレード・色の違いを、値を添えて文にする |
| 減点の項目の比べ | 査定する車にだけある減点、近い車にだけある減点を並べる |
| 分布の説明 | 四分位と標本の台数を、そのまま文にする |
| 根拠の付与 | 説明ごとに記録番号と落札日 |
| させないこと | 理由 |
|---|---|
| 提示額・買取額の提案 | 査定士と店長が決める |
| 違いを金額に換算すること | 「走行距離が1万km多いので5万円安い」のような換算を書かせない |
| 相場の先行きの予想 | 根拠の無い予想を書かせない |
| 違いの計算 | プログラムが出した値を使う |
| 検索結果に無い車の紹介 | 結果に無い記録番号を示さない |
2行目がいちばん起きやすい失敗です。 走行距離の差と落札額の差が並んでいると、AIは親切に「1万kmあたり約5万円の差」と割り算を書きます。2台の差を走行距離だけのせいにした数字で、根拠がありません。 査定士がその数字を口にすると、お客様への説明が根拠の無い数字になります。
指示内容を固定する
あなたは中古車の買取店で、査定士が査定の根拠をまとめるのを手伝う立場です。
検索で見つかった近い車の落札の記録を、査定士と店長が読める根拠のメモにしてください。
買取の金額を決めたり、提案したりしないでください。決めるのは査定士と店長です。
【やること】
1. 近い車ごとに、査定する車との違いを、渡された diff の値を使って書いてください。
2. 減点の項目は、査定する車にだけあるもの、近い車にだけあるものに分けて並べてください。
3. 落札額の分布は、渡された四分位と標本の台数をそのまま書いてください。
4. 説明ごとに、根拠の記録番号と落札日を付けてください。
【厳守事項】
- 金額を提案しないでください。「○万円が妥当」「○万円で買い取れる」と書かないでください。
- 違いを金額に換算しないでください。
「1万kmあたり」「1点あたり」「この減点で○万円」のような計算を書かないでください。
- 差や平均を自分で計算しないでください。渡された値だけを使ってください。
- 相場が上がる・下がるといった予想を書かないでください。
- 標本の台数が5台未満なら、分布について「標本が少ない」とだけ書いてください。
- 検索結果に無い記録番号・車種を書かないでください。
【査定する車】{target}
【近い車(記録番号・違い・減点の項目)】{neighbors}
【落札額の分布(四分位・標本の台数)】{distribution}
「金額に換算しない」を例を挙げて禁じているのは、言い方を変えて書くからです。 「金額を提案しない」とだけ伝えると、提案ではない体裁で「走行距離の差は○万円程度の影響と考えられる」と書きます。換算の言い回しそのものを並べて禁じます。
「標本が少ない」の一文を決めているのは、3台の四分位を書かせないためです。 3台でも四分位の数字は出ます。数字があると、査定士はそれを相場として使ってしまいます。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONを受け取ります。
{
"appraisal_id": "",
"neighbors": [
{
"record_id": "",
"sold_on": "",
"hammer_price": 0,
"diffs": [ { "item": "", "target": "", "neighbor": "", "diff": "" } ],
"deductions_only_target": [],
"deductions_only_neighbor": [],
"explanation": ""
}
],
"distribution": { "p25": 0, "p50": 0, "p75": 0, "sample_size": 0, "note": "" },
"unsold_count": 0
}
1つ目の理由は、record_id を照らせることです。 出てきた番号が検索結果に含まれているかを、プログラムで確かめます。 含まれていない車は表示しません。
2つ目は、数の値をプログラムが入れられることです。 hammer_price・diffs・distribution の数は、検索と計算の結果をプログラムが入れ、AIの出力で上書きしません。 AIが書くのは explanation と note だけです。数を文の中で写し間違えていないかも、プログラムで照らします。
3つ目は、unsold_count で売れなかった記録を見せられることです。 近い車が流札していれば、その価格では売れなかったということです。分布の横に流札の台数を並べ、査定士が強気の金額を付けすぎないようにします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 査定の管理画面 | 査定の表の保存で Lambda を呼ぶ | 検索の開始と、根拠のメモの表示 |
| Amazon OpenSearch Service | _search(function_score、diversified_sampler、percentiles) | 近い車と落札額の分布 |
| Claude API | Messages API の構造化出力 | 近い車ごとの説明 |
| 査定の管理システム | 毎晩の書き出し | 査定の記録 |
| 出品と落札の記録 | 毎晩の書き出し | 落札の結果と流札 |
人が確認する
- 入力を確かめる … 型式・初度登録年月・走行距離・修復歴の入力が車検証と車に合っているかを見ます。型式を誤ると、別の車の記録が並びます
- 近い車の記録を開く … 上位3台は記録を開き、減点の項目と写真を見ます
- 提示額を決める … 根拠のメモと車の状態から、査定士が提示額を決めます
- 店長が了承する … 根拠のメモと提示額を並べて見て、了承するか差し戻します
- 結果を残す … 提示額と、成約したか、断られたかを査定の記録に残します
2番目を省かないでください。 説明は要約です。同じ「凹み 小」でも、写真を見ると板金が要る凹みかどうかが分かります。
目標は、1,200件をならして1件5分です。 入力の確認に1分、近い車の記録を開くのに2分、店長への説明に2分という見込みです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 型式で絞ると近い車が0台 | 型式の絞りを同じ車名の別の型式に広げた結果を、広げたことを明記して別に出す |
| 標本が5台未満 | 分布を表示せず、「標本が少ない」と表示する |
| 修復歴ありの車 | 修復歴ありの記録だけで検索する。無ければ件数0と表示する |
| 落札の記録が半年以上前のものしか無い | 古いことを明記し、相場の検索の端末で確かめるよう表示する |
| 同じ車の過去の記録の走行距離がいまより多い | 走行距離の不整合として印を付け、店長に回す |
| 記録番号が検索結果に無い | その車を表示しない。ログに残す |
| 取り込みの時に値が範囲外 | 索引に入れず、本部の業務課の確認へ回す |
構造化出力が refusal や max_tokens で終わる | 受け付けずに再実行する |
5行目は、検索のついでに見つかるものです。 同じ車台番号のハッシュで、前に出品したときの走行距離がいまより多ければ、メーターの交換か入力の誤りか、それ以外かを確かめる必要があります。 判断はせず、印を付けて店長に回します。
記録を残す
- 査定する車の入力と、入力を直した版
- 検索の条件(絞り込み、
origin・offset・scale・重み)と、上位の記録と点数 - 落札額の分布と標本の台数
- Claude API の出力と、使った指示の版
- 査定士が決めた提示額と、店長の了承か差し戻しか
- 成約したか、断られたか。成約した車の後の落札額
最後の行が、この構成の答え合わせになります。 買い取った車が実際にいくらで落札されたかを、査定のときの分布と比べます。分布の中央から大きく外れる車が続く型式は、減衰の幅か重みが合っていません。
04実装レベルの3段階
半自動化で、1件12分が8分程度になります。 近い車は並びますが、分布の計算と根拠のまとめが手作業で残ります。本格構成で5分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化で1か月使うと、型式の書き方がそろっていない車種と、減衰の幅が合わない車種が分かります。そこを直してから分布を足します。
05工数削減シミュレーション
導入後 1,200件 × 5分 ÷ 60 = 100 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の店舗で中古車の買取を行い、買い取った車の多くを業者オークションに出品している会社。過去の査定の記録と、自社が出品した車の落札の結果を数年分持っている場合。同じような車でも、査定士によって提示額の付け方が違い、店長が毎回確かめている場合。査定の記録に評価点や減点の項目を残す習慣がある場合。
- 買取の件数が月に数十件で、査定士が1〜2名の場合。査定の記録に車の状態が残っておらず、提示額だけが残っている場合(先に記録の書式をそろえる必要があります)。希少な車や旧車のように、近い車の落札の記録がほとんど無い車を主に扱う場合。なお、いくらで買い取るかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の査定から、よく出る車種の30件を選ぶ(提示額が査定士によって分かれたものを含める)
- その車種の過去1年の落札の記録を、年式・走行距離・評価点・減点の項目・落札額の表にする
- 手元のAIサービスに表と査定する車を渡し、「査定する車に近い車を表から5台選び、違いを並べてください。金額を提案せず、違いを金額に換算しないでください」と指示する
- 選ばれた車を、そのとき査定士が根拠にした記録と比べる
| 出てきた内容 | 判断 |
|---|---|
| 査定士が根拠にした車と、見ていなかった近い車が出た | 索引と減衰関数の仕組みづくりに進む |
| 違いを金額に換算して書いた | 指示と出力の形で直る。構成は有効 |
| 減点の項目が空で状態を比べられない | 査定の表の書き方をそろえることが先 |
30件のうち数件は、成約した後の落札額が分かっているものを選んでください。 選ばれた近い車の落札額と、実際の落札額がどれだけ離れていたかで、近さの選び方が合っているかの見当が付きます。
試すときは、ベテランと経験の浅い査定士の両方に結果を見てもらってください。 経験の浅い査定士が「この車は見つけられなかった」と言える件数が、この構成の価値です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 走行距離の無い記録が上位に出る | 減衰関数は項目が無いと1を返す。 exists で絞る |
| 同じ車の記録が分布を偏らせる | 車台番号のハッシュに diversified_sampler をかける |
| 遠い車の落札額で分布がぼやける | sampler 系の集計で上位の車だけを標本にする |
| 古い落札額が根拠になる | 落札日に減衰をかけ、古いことを明記する |
| 年をまたぐと年式が遠く扱われる | 初度登録年月を月数にする |
| AIが違いを金額に換算する | 換算の言い回しを並べて禁じ、数はプログラムが入れる |
| 標本が少ないのに四分位が出る | 5台未満は分布を表示しない |
| 型式の入力の誤りで別の車が並ぶ | 車検証との照合を人の確認の最初に置く |
上の3行が、この構成の失敗のほとんどです。 どれも「分布の数字は出ているのに、中身がずれている」という形で出ます。標本に入った車の一覧を、分布と一緒に必ず表示してください。
減衰の幅は車種ごとに合わせ直します。 軽自動車と輸入車では、走行距離1万kmの差が落札額に与える重みが違います。最初は全車種に同じ幅を使い、成約した車の後の落札額と分布の中央との差が大きい車種から、幅と重みを直していきます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 車の型式・年式・走行距離・状態、落札額、自社の買取の金額です。売主の氏名・住所・連絡先は索引に入れません。
- 車台番号をそのまま入れない … 同じ車をまとめるためのハッシュにし、車台番号から売主をたどれる形で検索の仕組みに置きません
- 買取の金額を見られる人を分ける … OpenSearch のきめ細かなアクセス制御の項目の単位の権限で、買取の金額の項目を査定士と店長の役割にだけ見せます。 店舗のほかのスタッフには、落札額と状態だけが見えるようにします
- オークションの会場との契約を守る … 他社の出品の落札の結果を取り込むかは、会場との契約を確かめてから決めます。 本記事の構成は、自社の出品の記録だけを使います
- 金額は人が決めて記録する … AIの出力に金額の提案を入れず、提示額は査定士が入力し、店長の了承を記録に残します
- お客様への説明に根拠の無い数字を使わない … 違いの金額への換算はさせず、説明に使うのは近い車の記録と分布だけにします
- 外部の生成AIに渡す範囲を絞る … 根拠のメモに渡すのは、型式・年式・走行距離・減点の項目・落札額と記録番号までです。買取の金額、店舗、査定士の名前は渡しません。 渡さなくても、近い車の違いの説明は書けます
誤りが起きた場合のリスクは、根拠のずれた分布で買取の金額を決めることと、買取の金額が社内で見えすぎることの2つです。 前者は exists の絞り込みと同じ車の重複の除外と人の確認で、後者は項目の単位の権限で防ぎます。
10まず何から始めるか
1週目:減点の項目の区分を決める
本部と店長で、減点の項目の部位・種類・程度の区分を決めます。査定の表に出てくる言い方を集め、どの区分に当たるかの表にします。
2週目:30件で試す
よく出る車種の落札の記録を表にし、先月の査定30件で近い車を選ばせます。査定士が当時根拠にした記録と比べます。
3週目:記録をつなぐ
査定番号と出品番号で、査定の記録と落札の結果をつなぐ処理を作ります。つながらなかった記録の数と理由を、本部の業務課が確かめます。
4週目:索引と減衰関数をつなぐ
OpenSearch に落札の記録の索引を作り、型式と修復歴で絞って年式・走行距離・評価点・落札日の gauss で並べるところまで作ります。この時点では分布と説明を出さず、近い車の一覧だけを見ます。
2か月目: diversified_sampler と percentiles で分布を足し、根拠のメモを足します。3か月目以降: 査定の管理画面への表示と権限の設計を足し、1件12分が何分になったかを実測します。同じ車を別の査定士が見ても、同じ近い車と分布が根拠に並ぶようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
減衰関数が数値・日付・位置の項目に使え、origin・offset・scale・decay(既定0.5)で点数を決めること、日付の項目では origin を省くと現在の日時になり scale に単位を付けること、項目が無い文書に1を返すこと、weight・score_mode・boost_mode | OpenSearch: Function score | 2026-10-14 |
sampler の集計が、シャードごとに点数の高い文書(shard_size、既定100)だけを下の集計に回すこと | OpenSearch: Sampler aggregation | 2026-10-14 |
diversified_sampler が、同じ値を持つ文書の件数に上限(max_docs_per_value、既定1)を付けて標本を作ること、field が文書ごとに1つの値であること | OpenSearch: Diversified sampler aggregation | 2026-10-14 |
percentiles の集計が近似の値であること、percents で求める百分位を指定できること | OpenSearch: Percentiles aggregation | 2026-10-14 |
| きめ細かなアクセス制御の項目の単位の権限で、ロールごとに見せる項目・見せない項目を決められること | AWS: Fine-grained access control | 2026-10-14 |
構造化出力を output_config.format で指定すること、数値の制約(minimum・maximum など)に対応せず使うと 400 のエラーになること、refusal・max_tokens で終わるとスキーマに合わないことがあること | Claude: Structured outputs | 2026-10-14 |
いくらで買い取るかは、査定士と店長が車の状態と記録に基づいて判断してください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1533)についてのご相談はこちらから。
