過去の対応履歴とFAQから回答案を作成する
問い合わせ内容を入力に、社内のFAQ、製品マニュアル、過去の対応履歴から根拠となる情報を検索し、出典を明示した回答案を作ります。
- 利用ツール
- Amazon Kendra/Azure AI/ChatGPT/Claude/Gemini/Google Vertex AI/OpenSearch
- 対象業界
- EC/IT・SaaS/小売/金融
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- 個別開発(大)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 割り当てられたチケットを開く
- 内容を読み、何を答えるべきかを考える
- FAQを検索する。見つからない
- 操作マニュアルを開いて該当箇所を探す
- 過去に似た問い合わせがなかったか、チケット管理システムを検索する
- キーワードが一致せず、見つからない
- 詳しい先輩に聞く
- 回答文を書く
- 送信する
- チケットが担当者に割り当てられる(UC-0018 の振り分けを前提)
- 自動FAQ・マニュアル・過去チケットから根拠を検索する
- 自動根拠が見つかれば、出典つきの回答案を作る
- 自動根拠が見つからなければ、「該当情報なし」と返す
- 人担当者が回答案と出典を確認する
- 人出典を開いて内容を確かめ、回答文を仕上げる
- 人送信する
- 自動送信された回答を、次回の検索対象に加える
各工程の詳しい説明を読む
- 割り当てられたチケットを開く
- 内容を読み、何を答えるべきかを考える
- FAQを検索する。見つからない
- 操作マニュアルを開いて該当箇所を探す
- 過去に似た問い合わせがなかったか、チケット管理システムを検索する
- キーワードが一致せず、見つからない
- 詳しい先輩に聞く
- 回答文を書く
- 送信する
問題は4つあります。
(a)検索が当たらない。 顧客は「ログインできない」と書きますが、マニュアルには「認証エラー」と書かれています。キーワード検索では一致しません。
(b)過去チケット8万件が死蔵している。 同じ質問に過去に何度も答えているのに、探せないので毎回ゼロから書いています。
(c)新任の立ち上がりに時間がかかる。 製品知識が必要なため、独り立ちまで3か月かかります。その間、先輩の時間も取られます。
(d)回答の質が担当者で違う。 ベテランは「なぜそうなるか」まで説明しますが、新任は手順だけを書きます。顧客が再度問い合わせてきます。
- チケットが担当者に割り当てられる(UC-0018 の振り分けを前提)
- 【自動】 FAQ・マニュアル・過去チケットから根拠を検索する
- 【自動】 根拠が見つかれば、出典つきの回答案を作る
- 【自動】 根拠が見つからなければ、「該当情報なし」と返す
- 【人】 担当者が回答案と出典を確認する
- 【人】 出典を開いて内容を確かめ、回答文を仕上げる
- 【人】 送信する
- 【自動】 送信された回答を、次回の検索対象に加える
自動化されるのは「探す」と「下書きを作る」の2つです。送信は必ず人が行います。
8の学習ループが、この構成を時間とともに強くします。 送信された回答が検索対象に加わることで、同じ質問への回答が次第に安定します。
02今回想定するシステム構成
【準備フェーズ】 FAQ 300件 / マニュアル 15冊 / 過去チケット 8万件 │ ▼ 分割(FAQ:1件単位 / マニュアル:節単位 / チケット:質問と回答のペア) │ ▼ メタデータ付与(製品 / バージョン / 最終更新日 / 情報源の種別) │ ▼ 埋め込みベクトル化 → 検索インデックス(Azure AI Search など) 【利用フェーズ】 チケットが割り当てられる │ ▼ ハイブリッド検索(ベクトル+キーワード) + 製品・バージョンでのフィルタ + 最終更新日での重みづけ │ ▼ 上位5件を取得 │ ├──【根拠あり】→ LLM API で回答案を生成 └──【根拠なし】→「該当情報なし」を返す │ ▼ 担当者の画面(回答案+出典へのリンク)──【人が確認・送信】 │ ▼ 送信された回答を検索対象に追加
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Azure AI Search | Vertex AI Search、Amazon Kendra、OpenSearch |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 問い合わせ管理 | 各社のチケット管理SaaS | kintone |
| 情報源 | 社内Wiki、SharePoint | Confluence、Notion |
問い合わせ管理SaaSに、AI回答支援機能が搭載されている製品が増えています。まずそれを確認してください。 自社のFAQを読み込ませるだけで動く製品もあります。自前で組む価値があるのは、過去チケット8万件を活用したい場合や、独自のマニュアル体系がある場合です。
03どうやって実装するのか
処理の起点を決める
チケットが担当者に割り当てられたときを起点にします。UC-0018 の振り分け直後です。
担当者がチケットを開いた時点では遅すぎます。開いたときには既に回答案が用意されている状態にすることで、待ち時間がゼロになります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 問い合わせ本文 | 件名と本文 | チケット |
| 顧客の契約情報 | プラン、利用している製品とバージョン | 顧客マスタ |
| 検索された根拠 | FAQ / マニュアル / 過去チケット | 検索インデックス |
| 回答の文体ルール | 敬語、禁止表現、署名 | サポート部が整備 |
顧客が使っている製品バージョンを渡すことが重要です。 バージョンによって操作手順が違う場合、古いマニュアルを根拠にした回答は誤りになります。
データの取得方法を決める
準備フェーズの分割が、この構成の成否を決めます。 情報源ごとに分け方が違います。
| 情報源 | 分割の単位 | 注意点 |
|---|---|---|
| FAQ | 1件(質問と回答のペア) | そのまま使える。最も精度が高い |
| 操作マニュアル | 節単位(「3-2-4 通知設定の変更」) | 章単位では大きすぎ、段落単位では文脈が失われる |
| 過去チケット | 顧客の質問と、送信された回答のペア | 1チケット内の全やり取りをまとめない。 質問と回答の対応が崩れる |
過去チケットの扱いには、追加の処理が必要です。
- 顧客情報のマスキング … 社名、氏名、メールアドレス、契約番号を伏せます。これを省くと、A社への回答がB社への回答案に混入します
- 解決したチケットのみを対象にする … 「対応中」「エスカレーション」で終わったチケットの回答は、正しいとは限りません
- 古いチケットの除外または重みづけ … 製品仕様は変わります。2年以上前のチケットは、既定で除外するか、大きく重みを下げてください
- 誤回答の除外 … 「先ほどの回答を訂正します」というやり取りがあるチケットは、除外します
この前処理を省いて8万件をそのまま入れると、古い誤った回答が根拠として出てきます。
AIへ渡す前に整形する
- 問い合わせからの検索クエリ生成 … 顧客の文章をそのまま検索すると、挨拶や背景説明がノイズになります。質問の核心部分を抽出してから検索します
- 製品・バージョンでのフィルタ … 顧客の契約情報でフィルタします
- 検索の実行 … ハイブリッド検索(ベクトル検索とキーワード検索の併用)を使います。製品名や機能名は表記の一致が重要なので、キーワード検索を併用しないと取りこぼします
- 根拠の有無の判定 … 検索スコアが一定を下回る場合、根拠なしとして扱います
AIに処理させる
| させること | させないこと |
|---|---|
| 検索された根拠から回答案を組み立てる | 根拠のない内容を回答する |
| 出典を明示する | 一般的なIT知識で補う |
| 根拠が不十分なことを申告する | 曖昧な回答でごまかす |
| 文体を社内ルールに揃える | 補償、返金、契約変更の約束をする |
指示内容を固定する
あなたはカスタマーサポートの担当者を支援する担当者です。
以下の検索結果だけを根拠に、問い合わせへの回答案を作成してください。
【厳守事項】
- 検索結果に書かれていない内容を回答に含めないでください。
一般的な知識やIT分野の常識で補わないでください。
- 回答の各段落について、根拠となる出典を必ず示してください。
出典を示せない内容は書かないでください。
- 検索結果が問い合わせに答えていない場合、
answerable を false にし、回答案を作らないでください。
無理に関連づけた回答を作らないでください。
- 顧客が使用している製品バージョンは {version} です。
異なるバージョンの手順を根拠にする場合、その旨を必ず注記してください。
- 返金、補償、契約内容の変更、値引き、納期の約束をしないでください。
これらに関する問い合わせは needs_escalation を true にしてください。
- 障害・不具合の原因を断定しないでください。
検索結果に既知の不具合として記載がある場合のみ、
それを出典つきで示してください。
- 謝罪の文言を過剰に入れないでください。
事実として自社に起因する事象が確認できる場合のみ、簡潔に記載します。
【顧客情報】
契約プラン: {plan} / 製品: {product} / バージョン: {version}
【問い合わせ】
{inquiry}
【検索結果】
{retrieved_documents}
「返金、補償、契約内容の変更、値引き、納期の約束をしない」の1行が、この構成でもっとも重要です。
AIが「今回は特別に返金いたします」と書いた回答案を、忙しい担当者が確認せずに送信すると、それは会社の意思表示になります。 撤回は困難です。これらの話題は、必ず人の判断とエスカレーションを経る設計にします。
「障害の原因を断定しない」も同様です。 「サーバー側の問題です」と回答してしまうと、後で顧客側の設定が原因だったと分かっても、既に伝えた内容は覆せません。
「謝罪を過剰に入れない」は、意外に重要です。 LLMは謝罪を多用する傾向があります。自社に非がない事象で謝罪すると、責任を認めたと受け取られることがあります。
出力形式を固定する
{
"answerable": true,
"draft_reply": "",
"citations": [
{
"paragraph": 1,
"source_type": "FAQ | マニュアル | 過去チケット",
"source_id": "",
"source_title": "",
"source_url": "",
"last_updated": "",
"excerpt": ""
}
],
"version_mismatch": false,
"needs_escalation": false,
"escalation_reason": "",
"uncovered_points": [],
"confidence": "high | medium | low"
}
citationsのlast_updated… 出典の最終更新日を必ず表示します。 3年前のマニュアルを根拠にした回答であることが、担当者に分かる必要がありますuncovered_points… 問い合わせのうち、回答できていない部分。1件の問い合わせに3つの質問があり、2つしか答えられていない場合、これがないと担当者が気づきません
システムへ連携する
担当者の画面: 問い合わせ管理システムのチケット画面に、回答案と出典を表示します。出典は必ずリンクにして、元の文書を開けるようにします。
この構成では、回答案より出典のほうが重要です。 担当者が出典を開いて確認し、自分の言葉で回答を書くだけでも、検索の5分が削減されます。回答案は補助です。
学習ループ: 送信された回答を、翌日のバッチで検索インデックスに追加します。マスキング処理を経てから追加してください。
この部分は、問い合わせ管理システムの拡張性に依存します。画面へのカスタム表示ができない場合、別画面またはブラウザ拡張として提供する方法もあります。利用環境に応じた個別確認が必要です。
人が確認する
全件、人が確認して送信します。段階的な自動化もしません。
理由は、顧客へ直接届く文章だからです。誤った回答は、顧客の業務に影響を与え、信頼を損ないます。送信後の撤回はできません。
確認を実効的にするための設計が重要です。
- 出典を必ずリンクで表示する … 出典を開けない回答案は、確認のしようがありません
confidence: lowを目立たせる … 担当者が注意すべき案件を分かるようにしますuncovered_pointsを表示する … 答え漏れを防ぎます- ワンクリック送信を作らない … 回答案をそのまま送れるボタンを作ると、確認せずに送る運用が生まれます。必ず編集を経る設計にしてください
例外に対処する
| 起きること | 対応 |
|---|---|
| 根拠が見つからない | answerable: false。回答案を作らない。無理に作らない |
| 検索結果が古いバージョンのもの | version_mismatch: true として警告する |
| 返金・補償・契約変更の話題 | needs_escalation: true。回答案を作らず、上長へ |
| 1件に複数の質問 | 答えられたものだけ回答案を作り、uncovered_points に残りを記載する |
| 障害・不具合の報告 | 既知の不具合として記録がある場合のみ、出典つきで示す。原因を断定しない |
| 感情的な内容を含む問い合わせ | AIに回答案を作らせず、上長へエスカレーションする分岐を入れる |
| 過去チケットに誤った回答が含まれる | 前処理で「訂正します」を含むチケットを除外する。発見したら個別にインデックスから削除する |
| 検索インデックスが古い | マニュアル改訂時に更新する運用を組み込む。更新されないと誤回答の原因になる |
| 顧客情報がマスキングされずに混入 | 前処理を必ず通す。出力チェックで社名・メールアドレスのパターンを検出する |
記録を残す
- 問い合わせ内容
- 検索された根拠と、そのスコア
- AIの回答案と
citations - 実際に送信された回答
- 回答案と送信内容の差分
- 担当者が出典を開いたか
「回答案と送信内容の差分」が、この構成の唯一の実測指標です。 差分が小さいほど回答案が役立っています。差分が大きい状態が続くなら、検索の作り方かプロンプトに問題があります。
「出典を開いたか」の記録も重要です。 開かずに送信している状態が続くなら、それは確認が形骸化している兆候です。
04実装レベルの3段階
半自動化(FAQ+マニュアル)を先に必ず通してください。 過去チケット8万件の前処理(マスキング、古いものの除外、誤回答の除外)は重い作業です。FAQとマニュアルだけで効果が出るなら、チケットは後回しでも構いません。 段階を飛ばすと、「8万件を入れたが精度が上がらない」という結果になりがちです。
05工数削減シミュレーション
導入後 4,400件 × 5分 ÷ 60 = 366.7 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 問い合わせが月2,000件以上あり、FAQ・マニュアルが一定整備されている組織。過去の対応履歴が蓄積されている場合。
- FAQ・マニュアルが未整備の組織(先に整備が必要)。問い合わせ内容が個別性が高く定型化できない場合。
07最小構成で試す方法
RAGの基盤を作る前に、検索が成立するかを確かめてください。
- FAQ 300件をテキストファイルにまとめる(マニュアルとチケットはまだ使わない)
- 過去の問い合わせ30件を選ぶ
- ChatGPT、Claude、Gemini などのファイル添付機能でFAQを読み込ませる
- 上のプロンプトを貼り、30件の問い合わせを順に投げる
- 実際に送信した回答と比較する
評価の観点は4つです。
answerable: falseが適切に返るか … FAQにない質問に、無理に回答を作っていないか。ここが最重要です- 出典が正しいか … 示されたFAQが実際にその内容を含んでいるか
- 一般知識での補完がないか … FAQに書かれていない内容が混ざっていないか
- 返金・補償の約束がないか
FAQ 300件だけで何割の問い合わせに答えられるかを測ってください。 これが、この構成の効果の下限になります。マニュアルと過去チケットを加えれば上がりますが、まずFAQで測ります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 根拠がないのに回答案が作られる | answerable: false を返させる。検索スコアの下限を設ける。出典のない段落を出力チェックで検出する |
| 他社への回答が根拠として混入する | 過去チケットのマスキングを必ず行う。出力チェックで社名・メールアドレスのパターンを検出する |
| 古い仕様の回答が出る | 2年以上前のチケットを除外する。出典の最終更新日を必ず表示する |
| バージョン違いの手順を案内する | 顧客のバージョンでフィルタする。異なる場合は警告する |
| AIが返金や補償を約束する | 明示的に禁止し、needs_escalation に回す。最優先で作り込む |
| 過剰な謝罪が入る | プロンプトで抑制する |
| 障害の原因を断定する | 既知の不具合の記録がある場合のみ示す。それ以外は断定させない |
| 担当者が出典を開かずに送信する | ワンクリック送信を作らない。出典の閲覧率を記録する |
| 1件に複数の質問があり答え漏れる | uncovered_points を表示する |
| マニュアル改訂がインデックスに反映されない | 改訂時の更新を運用に組み込む。更新漏れは誤回答の直接原因になる |
| 8万件を入れたが精度が上がらない | FAQ+マニュアルで先に測る。段階を飛ばさない |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 顧客の氏名・所属・連絡先、問い合わせ内容、過去の対応履歴。この20件の中で、外部AIへ渡すデータ量がもっとも多い構成です。
- 過去チケットのマスキング … これがこの構成で最大のリスクです。 マスキングを省くと、A社の対応履歴がB社への回答案の根拠として提示され、担当者がそれを引用して送信する可能性があります。他社の情報を顧客に開示することは、重大な情報漏洩です。 マスキング処理と、出力段階での検出の両方を実装してください
- 個人情報の外部送信 … 問い合わせ本文と過去チケットには個人情報が含まれます。自社のプライバシーポリシーの利用目的の範囲内かを確認し、委託先の監督義務を果たしてください
- 顧客の機密情報 … BtoBの場合、問い合わせに顧客のシステム構成や業務内容が含まれます。顧客との契約で情報の取り扱いが定められている場合があります
- インデックスのアクセス制御 … 検索インデックスに8万件の対応履歴が入ります。このインデックスへのアクセス権限を、サポート部門に限定してください
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- 自動実行してよい範囲 … 回答案の生成までです。顧客への自動返信をしないでください。 これは運用が安定しても変えません
- 意思表示の防止 … §7に書いたとおり、返金・補償・契約変更の約束をさせません。これらが顧客に届くと、会社の意思表示として扱われます
10まず何から始めるか
1週目:FAQ 300件で答えられる割合を測る
最小構成(§8)で、過去の問い合わせ30件を試します。FAQだけで何割に答えられるかが、この構成の効果を決めます。
同時に、answerable: false が適切に返るかを確認します。根拠がないのに回答を作る挙動があれば、そこを直すまで先に進まないでください。
2〜3週目:マニュアルを分割する
操作マニュアル15冊を節単位に分割し、メタデータ(製品、バージョン、最終更新日)を付けます。この作業の過程で、更新されていないマニュアルが見つかります。 それは先に直します。
4〜6週目:FAQ+マニュアルで半自動化する
インデックス化し、担当者が別画面で検索できる形にします。チケット画面への統合はまだしません。 担当者5名で2週間使い、検索の5分が減るかを実測します。
2〜3か月目:過去チケットの前処理
マスキング、古いものの除外、誤回答の除外を行います。まず直近1年分(約2万件)から始めてください。 8万件を一度に処理しようとすると止まります。
4か月目以降: チケット画面への統合と、学習ループを実装します。回答案と送信内容の差分を継続的に測り、改善してください。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Azure AI Search のハイブリッド検索(ベクトル検索とキーワード検索の併用) | Microsoft Learn: ハイブリッド検索 | 2026-09-02 |
| Azure AI Search のベクトル検索・RAG用途での利用 | Microsoft Learn: Azure AI Search とは | 2026-09-02 |
| Claude APIのStructured Outputs | Anthropic: Structured outputs | 2026-09-02 |
問い合わせ管理システムのAPI、およびチケット画面へのカスタム表示の可否は製品によって異なります。この部分は利用環境に応じた個別確認が必要です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0019)についてのご相談はこちらから。
