新しいシステムの選定を始めるときに、過去のRFP・ベンダーの提案書・評価表から要件の近い案件を探し、出した要件と評価の分かれ目を根拠付きで情報システムの担当に返す
新しいシステムの選定を起案したときに、過去のRFP・提案書・評価表から要件の近い案件を探します。そのとき出した要件、評価の分かれ目になった項目、導入後に問題になった要件を、根拠の文書付きで担当に返します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 保険/商社/自治体/金融
- 対象部門
- 情報システム/購買
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当が選定の起案を書き、対象の業務、範囲、予算の見込みを登録する
- 文書管理の仕組みで、システムの名前や業務の名前を入れてフォルダとファイルを検索する
- 見つかった案件のフォルダを開き、RFPの要件一覧、評価表、稟議を1つずつ読む
- 前回の担当を探して、「なぜそのベンダーにしたのか」「導入後に困ったことは」を聞く
- 委託先の管理台帳を開き、導入後の振り返りがあれば読む
- 使えそうな要件を新しいRFPの下書きに写し、前回の評価の観点をメモする
- 近い案件が見つからなければ、要件を一から書き起こす
- 人担当が選定の起案を書き、対象の業務、範囲、主な要件の箇条書きを登録する
- 自動起案の登録をきっかけに、業務の分類と要件の箇条書きから検索の問い合わせを作る
- 自動業務の言葉を同義語の辞書で広げ、システムの通称と製品名の対応を引く
- 自動言葉の一致と文章の意味の近さを組み合わせて、過去の要件のカードと評価のカードを探す
- 自動見つかった案件ごとに、評価の項目の点の開きと、導入後の振り返りの記録を突き合わせる
- 自動上位の案件について、出した要件、評価の分かれ目、導入後の問題を引用付きでまとめる
- 自動結果を起案に添付し、担当に知らせる
- 人担当が根拠の文書を開き、今回の範囲と前回の範囲の違いを確かめ、使う要件を選ぶ
- 人必要なら、前回の担当に具体的な点を聞く
各工程の詳しい説明を読む
- 担当が選定の起案を書き、対象の業務、範囲、予算の見込みを登録する
- 文書管理の仕組みで、システムの名前や業務の名前を入れてフォルダとファイルを検索する
- 見つかった案件のフォルダを開き、RFPの要件一覧、評価表、稟議を1つずつ読む
- 前回の担当を探して、「なぜそのベンダーにしたのか」「導入後に困ったことは」を聞く
- 委託先の管理台帳を開き、導入後の振り返りがあれば読む
- 使えそうな要件を新しいRFPの下書きに写し、前回の評価の観点をメモする
- 近い案件が見つからなければ、要件を一から書き起こす
(a)名前でしか探せない。 文書管理の検索で当たるのは、主にフォルダ名とファイル名です。「2019_ワークフロー基盤更改」というフォルダは見つかっても、「電子決裁で代理承認の要件を書いた案件」は探せません。 要件の中身で探すには、RFPを開いて読むしかありません。
(b)評価表から決め手が読めない。 評価表には100を超える項目に点が並び、合計点の高いベンダーが選ばれています。どの項目で差が付いたかは、担当が自分で見比べないと分かりません。 書式が案件ごとに違うので、比べ方も毎回作り直しです。
(c)前回の担当に聞けるかどうかで、質が変わる。 前回の担当が異動や退職で聞けなければ、決め手は稟議の1行から推し量るしかありません。
(d)導入後の問題が戻ってこない。 5番目を飛ばすと、前回「帳票の出力件数の上限」を書かずに追加の費用がかかった案件の要件一覧を、そのまま次のRFPに写すことになります。 振り返りはRFPとは別の場所にあるので、探しに行かなければ目に入りません。
- 【人】 担当が選定の起案を書き、対象の業務、範囲、主な要件の箇条書きを登録する
- 【自動】 起案の登録をきっかけに、業務の分類と要件の箇条書きから検索の問い合わせを作る
- 【自動】 業務の言葉を同義語の辞書で広げ、システムの通称と製品名の対応を引く
- 【自動】 言葉の一致と文章の意味の近さを組み合わせて、過去の要件のカードと評価のカードを探す
- 【自動】 見つかった案件ごとに、評価の項目の点の開きと、導入後の振り返りの記録を突き合わせる
- 【自動】 上位の案件について、出した要件、評価の分かれ目、導入後の問題を引用付きでまとめる
- 【自動】 結果を起案に添付し、担当に知らせる
- 【人】 担当が根拠の文書を開き、今回の範囲と前回の範囲の違いを確かめ、使う要件を選ぶ
- 【人】 必要なら、前回の担当に具体的な点を聞く
8番目が、この設計の分かれ目です。 前回の要件が今回にも当てはまるかは、業務の範囲、規模、規制の変更、社内の基盤の変化で変わります。決めるのは担当で、AIが出すのは判断の材料までです。
02今回想定するシステム構成
選定案件のフォルダ(RFP・提案書・評価表・稟議) 委託先の管理台帳(導入後の振り返り) │ 選定が完了したものを取り込む │ ▼ ▼ AWS Lambda ── 要件一覧の行への分割、評価表の読み替え、点の開きの計算、振り返りとの結び付け │ ├──▶ Claude(Amazon Bedrock)── 評価のコメントと振り返りから論点を取り出す ├──▶ Amazon Titan Text Embeddings V2 ── カードの文を埋め込む ▼ Amazon OpenSearch Service(言葉の一致+意味の近さ) ▲ │【トリガー】選定の起案の登録 AWS Lambda ── 問い合わせの作成、同義語での展開 ▼ ハイブリッドクエリ(公開範囲で絞り込み) ▼ AWS Lambda ── 案件ごとにまとめ、点の開きと振り返りで並べ直す ▼ Claude(Amazon Bedrock)── 要件・分かれ目・導入後の問題を引用付きでまとめる ▼ 起案に添付 ──▶【担当が根拠を確かめて選ぶ】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ハイブリッドクエリと k-NN、Sudachi の日本語解析) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude(Amazon Bedrock。論点の取り出しと検索結果のまとめ) | Azure OpenAI(Microsoft Foundry)、Gemini API |
| 連携 | AWS Lambda(取り込み、点の開きの計算、問い合わせの展開、並べ直し) | AWS Step Functions |
| 保管 | Amazon S3(文書の写しとカード) | 既存の文書管理の仕組み |
文書管理の仕組みと委託先の管理台帳は、そのまま使います。 この構成は写しを取り込むだけで、元の文書には書き込みません。最初の準備作業は、評価表の書式の違いを読み替える対応表と、業務の言葉の同義語の辞書を作ることです。
検索基盤は Amazon OpenSearch Service です。 ハイブリッドクエリは、複数のクエリの関連度のスコアを1つのスコアにまとめるもので、言葉の一致で探すクエリと、埋め込みの近さで探すクエリを並べられます。 サブクエリは最大5つで、スコアをまとめるのは検索パイプラインです。正規化のプロセッサで尺度をそろえてから組み合わせます。
日本語の解析には Sudachi を使います。 Amazon OpenSearch Service の対応プラグインの一覧で、Sudachi は「日本語に推奨」とされ、任意で関連付けるプラグインとして用意されています。kuromoji と ICU はすべてのドメインに含まれています。「稟議」「決裁」「起案」「電子承認」のような社内の言い換えを辞書で吸収するため、辞書を差し替えられる Sudachi を選びます。
埋め込みは Amazon Titan Text Embeddings V2 です。 入力は最大8,192トークンまたは50,000文字、出力は1,024次元(512・256も選べる)です。対応言語の一覧に日本語は入っていますが、英語に最適化されたモデルで、100を超える言語は「プレビュー」と書かれています。 第8章で、自社のRFPの文で探せるかを先に確かめます。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは、選定結果の稟議の決裁を起点にします。 選定が終わった案件だけを取り込むのは、評価の途中の点や、選定が終わる前の提案書を、他の案件の担当に見せないためです。 稟議の仕組みから決裁済みの案件の番号を毎晩受け取り、その案件のフォルダを Lambda が取り込みます。
導入後の振り返りは、委託先の管理台帳への添付を起点に取り込み直します。 振り返りは稼働の半年後に入るので、取り込み済みの案件のカードに、後から振り返りを結び付ける形になります。結び付けは案件の番号で行います。
過去10年の約400案件は、別に一括で取り込みます。 このときは評価表の書式の読み替えがうまくいかない案件が出るので、読み替えられなかった評価表には「点の開き未計算」の印を付け、要件のカードだけを先に検索できるようにします。
検索は、選定の起案の登録で動きます。 起案が保存されたら Lambda が動き、結果を起案に添付します。担当がRFPを書き進めながら条件を変えて探し直せるように、検索画面からも同じ検索を呼べるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| RFPの要件一覧 | 要件の番号、区分(機能・非機能・運用・契約)、要件の文、必須か任意か | 案件のフォルダ(表計算) |
| 評価表 | 評価の項目、配点、ベンダーごとの点、評価者のコメント | 案件のフォルダ(表計算) |
| 選定結果の稟議 | 選定したベンダー、選定の理由、決裁日 | 稟議の仕組み |
| 導入後の振り返り | 追加の開発、要件の解釈の食い違い、運用で困ったこと、対応した要件の番号 | 委託先の管理台帳 |
| 同義語の辞書 | 業務の言葉、システムの通称と製品名の対応 | 情報システム部が整える表 |
| 起案(検索時) | 対象の業務、範囲、主な要件の箇条書き、予算の見込み | 選定の起案 |
提案書の本文は、検索の対象に入れません。 提案書は、ベンダーが自社の製品を説明するために書いたものです。要件の近さで探すなら、自社が書いたRFPと評価表のほうが、言葉がそろっています。 提案書は、検索結果から根拠として開く先として、案件のフォルダへのリンクだけを持たせます。
質を決めるのは、評価表の読み替えと導入後の振り返りです。 評価表が読み替えられないと、点の開きが計算できず、評価の分かれ目が出せません。 振り返りが結び付かないと、前回困った要件が、ふつうの要件と同じ顔で並びます。
データの取得方法を決める
RFPの要件一覧と評価表は、表計算のファイルから行ごとに取り出します。ここは生成AIを使わず、プログラムで読みます。 列の位置が案件ごとに違うので、見出しの文字で列を探す対応表を持ちます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 要件の行 | RFPの要件一覧 | 要件のカード(1行1枚) |
| 項目ごとのベンダーの点 | 評価表 | 点の開きの計算 |
| 評価者のコメント | 評価表 | 評価のカード(項目ごと) |
| 選定の理由 | 稟議 | 案件のまとめに添える |
| 問題になった要件の番号と内容 | 導入後の振り返り | 要件のカードに注意の印を付ける |
| 公開範囲 | 案件の属性(取締役会付議、監督当局への報告を含むか) | 検索できる人の制限 |
検索時には、起案から2種類の問い合わせを作ります。 1つは業務の言葉とシステムの通称(同義語で広げたもの)の言葉の一致、もう1つは要件の箇条書きの埋め込みによる近さです。この2つをハイブリッドクエリのサブクエリにし、filter でカードの種類と公開範囲を絞ります。filter はすべてのサブクエリに効き、条件が複数あるときは bool クエリで包みます。
要件の箇条書きは、1行ずつ別の問い合わせにします。 起案に「代理承認ができること」「承認の経路を部署ごとに変えられること」と並んでいたら、それぞれに近い過去の要件を探します。 箇条書きをまとめて1つの埋め込みにすると、どの要件にも中くらいに近い案件ばかりが上に来ます。
AIへ渡す前に整形する
- 要件の行への分割 … RFPの要件一覧を1行1枚のカードにします。カードには案件の番号、業務の分類、要件の区分、必須か任意かを持たせます
- 評価表の読み替え … 項目名・配点・点・コメントの列を、対応表で共通の形に直します。読み替えられない評価表は「点の開き未計算」にします
- 点の開きの計算 … 項目ごとに、ベンダー間の最高点と最低点の差を配点で割り、開きの割合を出します
- 分かれ目の項目の決定 … 開きの割合が大きい順に上位5項目を、その案件の分かれ目の項目とします
- 振り返りの結び付け … 案件の番号で振り返りを引き、問題になった要件の番号のカードに注意の印を付けます
- 埋め込みの対象を絞る … 要件の文と評価のコメントだけを埋め込みます。点と配点は数値の項目として持ちます
- 価格の項目の切り分け … 見積の金額と価格の評価のコメントは、別の項目に分けて持ちます
3番目と4番目は、AIにさせません。 点の開きは引き算と割り算で決まります。ここをAIに読ませると、コメントの書きぶりが強い項目を「決め手」と書いてきます。 コメントが丁寧なことと、点が割れたことは別の話です。
7番目は、第13章の見せる範囲の話です。 価格は、他のベンダーに知られてはいけない情報で、案件の担当以外が見る必要もほとんどありません。項目を分けておけば、検索基盤の項目単位の制限で隠せます。
同義語の辞書は、Sudachi の辞書として登録します。 ドキュメントでは、Sudachi の辞書ファイルを関連付け直してもすぐにはドメインに反映されず、次のブルー/グリーンデプロイで更新されるとされています。すぐ反映したいときは、新しいパッケージで新しいインデックスを作って再インデックスし、インデックスのエイリアスを切り替えます。 辞書の更新は月に1回にまとめます。
AIに処理させる
AIの仕事は2か所です。取り込み時の論点の取り出しと、検索結果のまとめです。
| 場面 | させること |
|---|---|
| 取り込み | 分かれ目の項目の評価者のコメントから、何が評価の差になったかを短く取り出す |
| 取り込み | 導入後の振り返りから、問題になった要件と、どう書けば防げたとされているかを取り出す |
| 検索 | 上位5案件について、起案の要件に近い過去の要件、評価の分かれ目、導入後の問題を引用付きでまとめる |
| 検索 | 振り返りで問題になった要件を、注意の要件として分けて書く |
| させないこと | 理由 |
|---|---|
| どのベンダーがよいかの結論 | 今回の範囲・予算・基盤で変わる。担当と選定の会議が決める |
| 分かれ目の項目の選び出し | 点の開きでプログラムが決める。コメントの強さで選ばせない |
| RFPの要件の書き起こし | 過去の要件を探すのが目的。根拠の無い要件が混ざる |
| 価格の比較や、前回の金額からの見積 | 時期と範囲が違う。価格はこの構成では扱わない |
| 振り返りに書かれていない問題の推測 | 推測された問題が「前回起きたこと」として広まる |
2行目がいちばん起きやすい失敗です。 評価表をそのまま渡すと、AIは長いコメントの付いた項目を分かれ目として挙げます。長いコメントは、たいてい全社が同じ点だった項目に付いています。 説明が要ったのは、差が付かなかった理由を書いたからです。
指示内容を固定する
取り込み時(論点の取り出し):
あなたは情報システム部で、選定が終わった案件の記録を整理する担当です。
渡された評価のコメントと導入後の振り返りだけを根拠にしてください。
推測で埋めないでください。
【評価のコメントから取り出すもの】
- 項目ごとに、評価者がベンダー間の差として書いたこと
- 差の理由として書かれた具体的な事実(機能の有無、体制、実績、デモの結果など)
【振り返りから取り出すもの】
- 問題になった要件の番号と、何が起きたか
- 振り返りに「こう書いておけばよかった」と書かれていれば、その文
【厳守事項】
- 評価の項目の重要さを、あなたが判断しないでください。
渡された項目を、渡された順に扱ってください。
- 書かれていない欄は null にしてください。他の欄から補わないでください。
- 価格・見積の金額は取り出さないでください。
- ベンダーの社名は、渡されたベンダーの記号(A社、B社)のまま書いてください。
- 振り返りに要件の番号が無ければ、requirement_no を null にしてください。
検索時(結果のまとめ):
あなたは、システムの選定を起案した担当を助ける担当です。
渡された検索結果だけを根拠に、起案と過去の選定案件を比べてください。
【起案】{proposal}
【書くこと】
1. 起案の要件ごとに、近い過去の要件の文(どの案件の何番か)
2. 各案件の評価の分かれ目の項目と、そこで差になった理由
3. 導入後の振り返りで問題になった要件と、何が起きたか
4. 各案件と起案の範囲の違い(業務の範囲、利用者の数、基盤)
【厳守事項】
- どのベンダーや製品がよいかの結論を書かないでください。
- 分かれ目の項目は、検索結果で「分かれ目」と印のあるものだけを挙げてください。
- 新しい要件の文を書き起こさないでください。
- 価格や金額に触れないでください。
- 「点の開き未計算」の印のある案件は、その旨を必ず書いてください。
- 近い案件が1件も無ければ、「近い過去の選定案件は見つかりませんでした」と書いてください。
検索結果は、Claude の検索結果ブロックで渡します。 1つの案件を1つの search_result にし、source に案件の番号、title に案件名と決裁日、content に要件のカード、分かれ目の項目のコメント、振り返りを、1つずつ別のテキストブロックとして並べます。引用を有効にすると、まとめの文ごとに、どの検索結果のどのブロックを根拠にしたかが付きます。
ブロックを細かく分けるのは、引用の単位がブロックだからです。 ドキュメントでは、引用の位置はブロックの範囲で返り、内容を1つのブロックにまとめると、どの引用でも全文が返るとされています。案件を1つのブロックにすると、どの文を引用しても案件のすべてが返ってきます。
「分かれ目は印のあるものだけ」を明記しないと、AIは自分で分かれ目を探し直します。 前処理で点の開きから決めた項目より、コメントの印象が強い項目を挙げてきます。 機械で決めたことを、文章でひっくり返させないための1行です。
出力形式を固定する
取り込み時の論点は、次の形のJSONで受け取ります。 Lambda が形を確かめ、欠けた項目があれば取り込みを止めて一覧に出します。
{
"project_id": "SEL-2021-034",
"split_items": [
{ "item_no": "E-17", "gap_ratio": 0.6, "point": "", "facts": [] }
],
"post_issues": [
{ "requirement_no": "F-042", "what_happened": "", "lesson_text": null }
]
}
gap_ratio は前処理で計算した値を Lambda が入れます。AIが埋めるのは point と facts と post_issues の文だけです。
検索結果は、Lambda が組み立てた次の形で起案に添付します。
{
"proposal_id": "PRP-2026-10-021",
"matches": [
{
"project_id": "SEL-2021-034",
"decided_on": "2021-11-18",
"requirement_hits": [
{ "query_line": 1, "requirement_no": "F-018", "score": 0.82 }
],
"split_items": ["E-17", "E-22"],
"summary": "",
"citations": [ { "project_id": "SEL-2021-034", "block": "評価 E-17" } ],
"gap_uncomputed": false
}
],
"caution_requirements": [
{ "project_id": "SEL-2021-034", "requirement_no": "F-042" }
],
"not_found": false
}
1つ目の理由は、AIの文と機械の値を分けられることです。 summary はAIが書き、split_items と requirement_hits と caution_requirements はカードと計算から機械で入れます。何で決まったか、何が問題になったかを、AIの言い回しに頼らずに読めます。
2つ目は、引用を文書の場所まで戻せることです。 Claude が返す引用の位置(search_result_location)には、検索結果の番号とブロックの範囲が入ります。Lambda がそれを案件の番号と要件・評価の番号に置き換え、citations に入れます。 担当は「SEL-2021-034 の評価 E-17」の行をそのまま開けます。
3つ目は、注意の要件を caution_requirements に分けられることです。 前回困った要件がふつうの要件と同じ並びにあると、上から順に写して、困った書き方をそのまま持ち込みます。 別の欄にすれば、担当はRFPを書く前に先に読めます。
引用付きのまとめと構造化出力は、1回の呼び出しで両方は求めません。 引用はまとめの文に付けて受け取り、JSONの組み立ては Lambda が行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 文書管理の仕組み | 決裁済みの案件のフォルダの読み取り | RFP・評価表の取り込み |
| 稟議の仕組み | 決裁済みの案件の番号の受け取り | 取り込みの起点と選定の理由 |
| 委託先の管理台帳 | 読み取り | 導入後の振り返り |
| Amazon OpenSearch Service | インデックスとハイブリッドクエリ | カードの保管と検索 |
| Amazon Bedrock | API呼び出し | 埋め込み、論点の取り出し、まとめ |
| 選定の起案 | 結果の添付 | 検索結果と根拠の文書の一覧 |
文書管理にも、稟議にも、委託先の管理台帳にも書き込みません。 この構成が書き込むのは、検索基盤のインデックスと、起案への添付だけです。文書の正本は文書管理の仕組みに残し、検索結果からはそこへのリンクで戻ります。
人が確認する
AIのまとめをそのままRFPに写す運用にはしません。 担当が次の順で確かめます。
caution_requirementsを先に読む … 前回問題になった要件は、振り返りの原文で何が起きたかを確かめます- 分かれ目の項目の根拠を開く …
citationsから評価表の行を開き、まとめと点・コメントに食い違いがないかを見ます - 範囲の違いを自分で確かめる … 利用者の数、つなぐ先のシステム、規制の変更など、前回と今回で違う条件を書き出します
- 使った要件を起案に記録する … どの案件の何番の要件を参考にし、どれを採らなかったかを残します
取り込み時の論点も、確かめる人を決めます。 新しく決裁された案件の論点は、その案件の担当に取り込みの翌週に送り、取り違えがないかを見てもらいます。 過去分は、検索で参考に選ばれたときに、その場で確かめます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 近い案件が1件も無い | 「見つかりませんでした」と返す。似ていない案件で埋めない |
| 評価表が読み替えられない | 「点の開き未計算」。要件のカードだけで返し、その旨を明記する |
| ベンダーが1社しかいない評価表 | 点の開きが出せない。分かれ目の欄を空にする |
| 振り返りが無い | 注意の要件は出さない。「振り返りの記録なし」と書く |
| 公開範囲が限られた案件 | 権限のある人の検索にだけ出す |
| 選定の途中で中止になった案件 | 取り込まない。稟議が決裁されていないものは対象外 |
| 同じ案件のRFPに改訂版がある | 最終版を正とし、改訂の前の版は取り込まない |
| Bedrock が応答しない | 言葉の一致だけの検索結果を、まとめなしで返す |
| 同義語の辞書の更新が反映されない | ブルー/グリーンデプロイを待つか、再インデックスしてエイリアスを切り替える |
1行目を守ることが、信頼を保ちます。 新しい種類のシステムで前例が無いときに、遠い案件を3件並べると、担当は次から結果を読まなくなります。 「無い」と返すことも、社内に前例が無いという情報です。
記録を残す
- 取り込んだ案件の文書の版と、取り出したカードと論点(どのモデルで取り出したかを含む)
- 評価表の読み替えに使った対応表の版と、点の開きの計算結果
- 検索のたびの問い合わせ、同義語で広げた後の言葉、ハイブリッドクエリの上位の結果とスコア
- Claude に渡した検索結果と、返ってきたまとめと引用の位置
- 担当が参考に選んだ要件と、選ばなかった要件
- 誰が、どの案件の結果を見たか
最後の行は、第13章の提案書の扱いのためです。 提案書を預かったときの取り決めで、利用の範囲が問われたときに、どの案件の結果を誰が見たかを示せるようにしておきます。
04実装レベルの3段階
半自動化で、①の検索の50分と、②の問い合わせの多くが減ります。 残るのは、見つけた案件の評価表と振り返りを読む③で、評価表の見比べはまだ手作業です。 本格構成で、分かれ目の項目と注意の要件が案件ごとにまとめて出るので、1件40分になります。この段階が本記事の想定です。
05工数削減シミュレーション
導入後 30件 × 40分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- システムの選定をRFPと提案書の評価で行っている金融機関・保険会社・自治体・商社など。過去の選定のRFP・提案書・評価表・稟議が共有フォルダや文書管理の仕組みに案件ごとに溜まっているのに、次の選定で探せていない場合。更改・追加調達を含めて毎月数十件の選定の起案がある場合。導入後の振り返りを記録として残している場合。
- 選定が年に数件で、担当者が前回の資料を手元で覚えていられる場合。RFPを作らず、ベンダー1社と直接話して決める調達が中心の場合。提案書の受領時に、評価の目的以外に使わないと取り決めていて、他の案件の担当に見せられない場合は、取り決めの見直しか、評価表だけを対象にする設計が先に要ります。
07最小構成で試す方法
- 過去2年に起案した選定から20件を選ぶ(前回の案件を参考にしたと分かっているものを半分入れる)
- その20件について、当時どの案件を参考にしたか、何を見たかを担当から聞き取る
- 100案件分のRFPの要件一覧を、1行1枚のテキストにしてまとめる
- 20件の起案の要件の箇条書きで、言葉の一致の検索と、埋め込みの近さの検索を別々に試す
- 当時参考にした案件が、上位10件に入ったかを数える
20件は必ずやってください。 生成AIのまとめを作る前に、「そもそも探せるのか」を確かめます。 Titan Text Embeddings V2 の日本語はプレビューの扱いなので、ここで自社のRFPの言葉で効くかを見ます。
| 出てきた内容 | 判断 |
|---|---|
| 当時参考にした案件が上位に入った | 評価表の読み替えとまとめの段階に進む |
| 言葉の一致では出ず、埋め込みでは出た | ハイブリッドクエリで組み合わせる。構成は有効 |
| どちらでも出ない | 同義語の辞書と、要件の行の分け方が先。 埋め込みのモデルを替える前に見直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 長いコメントの項目が「決め手」として出る | 分かれ目は点の開きでプログラムが決める。 指示でも印のあるものだけに限る |
| 前回困った要件がふつうの要件と並ぶ | 振り返りを結び付け、caution_requirements に分ける |
| 前回の金額がまとめに出てくる | 価格の項目を分けて持ち、取り出しの指示でも禁じる |
| 起案の要件をまとめて1つで探し、中くらいの案件ばかり出る | 要件の箇条書きを1行ずつ別の問い合わせにする |
| 引用すると案件の全文が返ってくる | 引用の単位はブロック。 要件・評価・振り返りを別のブロックにする |
| 「現行どおり」「別紙参照」の行が当たらない | 別紙を要件の行に展開してから取り込む |
| 辞書を更新したのに結果が変わらない | 次のブルー/グリーンデプロイで反映。急ぐなら再インデックスとエイリアスの切り替え |
| 提案書のリンク先が誰にでも開ける | 文書管理の権限と検索基盤の権限をそろえる |
| 埋め込みが日本語で効かない | Titan V2 の日本語はプレビュー。第8章で先に確かめ、だめなら埋め込みのモデルを替える |
上の2行が、この構成の失敗のほとんどです。 1行目は「決め手を作ってしまう」、2行目は「困った要件をまた写す」です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: RFPの要件一覧、評価表の点とコメント、選定の稟議、導入後の振り返り、そしてベンダーから預かった提案書(見積の金額、製品の計画、体制の人名)です。
- 提案書を預かったときの取り決めを先に確かめる … 提案の依頼のときに、提案書を評価の目的にだけ使うと約束していることがあります。別の案件の担当に見せてよいかは、その取り決めで決まります。 見せてよいと言えないものは、評価表と自社が書いたRFPだけを対象にします
- 文書ごと・項目ごとに見せる範囲を絞る … Amazon OpenSearch Service の細かいアクセス制御では、ロールに付けたクエリに一致するドキュメントだけを見せるドキュメントレベルのセキュリティと、項目を隠すフィールドレベルのセキュリティ、値を匿名化するフィールドマスキングが使えます。価格の項目は、案件の担当と調達の担当のロールにだけ見せます
- 細かいアクセス制御の前提を満たす … ドメインへの通信を HTTPS にし、保管時の暗号化とノード間の暗号化を有効にすることが前提とされています。一度有効にすると無効に戻せないので、最初の構築時に決めます
- ベンダーの評価を、ベンダーへの成績表として使わない … 評価のコメントには、担当者の率直な見立てが書かれています。次の選定でベンダーを最初から外す材料に使い始めると、評価者が率直に書かなくなります。 探すのは要件と評価の観点で、ベンダーの格付けではありません
- 選定の判断をAIに任せない … 選定の理由は人が説明できる形で残します。 この構成が出すのは、前回の記録の場所と論点までです
誤りが起きた場合のリスクは、前回困った要件を繰り返すことと、見せてはいけない提案書を見せることの2つです。 前者は振り返りを機械で結び付けることで、後者はドキュメントレベルのセキュリティと文書管理の権限をそろえることで防ぎます。
10まず何から始めるか
1週目:提案書の扱いを決める
過去の提案依頼の書面で、提案書の利用の範囲をどう約束していたかを、法務と調達の担当と確かめます。提案書を検索の根拠に入れるか、評価表とRFPだけにするかを、ここで決めます。
2週目:20件で探せるかを試す
過去2年の起案から20件を選び、100案件分の要件の行で、言葉の一致と埋め込みの検索を試します。当時参考にした案件が上位10件に入ったかを数えます。
3週目:評価表を読み替える
10案件分の評価表を対応表で読み替え、点の開きの上位5項目を出します。当時の担当に見せ、決め手と合っているかを聞きます。
4週目:振り返りを結び付ける
委託先の管理台帳から、案件の番号で振り返りを結び付けられる件数を数えます。結び付けられない案件が多ければ、振り返りに案件の番号を書く運用から直します。
2か月目: 400案件のRFPを取り込み、検索画面を担当に使ってもらいます。3か月目以降: 評価表の点の開きと振り返りの結び付けを足し、起案をきっかけにした検索と引用付きのまとめを動かして、1件150分が何分になったかを実測します。前回問題になった要件が caution_requirements に分かれて出るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
ハイブリッドクエリが複数のクエリの関連度のスコアを1つにまとめること。スコアのまとめに検索パイプライン(正規化のプロセッサなど)を使うこと。サブクエリが最大5つであること。filter がすべてのサブクエリに効き、複数の条件は bool クエリで包むこと | OpenSearch Documentation: Hybrid query | 2026-10-09 |
| Sudachi Analysis が日本語に推奨とされ、任意のプラグインとして関連付けられること。kuromoji と ICU がすべてのドメインに含まれること。Sudachi の辞書ファイルの関連付け直しが次のブルー/グリーンデプロイで反映され、急ぐ場合は新しいパッケージで再インデックスしエイリアスを使うこと | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-09 |
| 細かいアクセス制御で、ロールのクエリに一致するドキュメントだけを見せるドキュメントレベルのセキュリティ、フィールドレベルのセキュリティ、フィールドマスキングが使えること。HTTPS、保管時の暗号化、ノード間の暗号化が前提で、有効にすると無効に戻せないこと | AWS: Fine-grained access control in Amazon OpenSearch Service | 2026-10-09 |
| Titan Text Embeddings V2 の入力が最大8,192トークンまたは50,000文字、出力が1,024次元(512・256も可)であること。英語に最適化され、100を超える言語がプレビューとされ、対応言語の一覧に日本語があること | AWS: Amazon Titan Text Embeddings models | 2026-10-09 |
検索結果ブロック(source・title・content)で渡した内容を Claude が引用すること。引用の位置が search_result_location とブロックの範囲で返り、内容を1つのブロックにまとめるとどの引用でも全文が返ること。Claude API・Amazon Bedrock・Google Cloud で使えること | Claude Docs: Search results | 2026-10-09 |
どの要件を採り、どのベンダーを選ぶかは、今回の範囲と社内の選定の手続きに沿って、担当と選定の会議が決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1230)についてのご相談はこちらから。
