過去の技術報告書から類似の検討結果を根拠付きで探して開発の重複をなくす
「昔、似た材料で検討した気がする」という問いに対し、20年分の技術報告書と検討書から該当箇所を探し、報告書名・年度・担当者・ページを示した回答案を返します。研究開発者の作業は、共有フォルダを探して経験の長い技術者に聞くことから、示された原典を読んで判断することに変わります。
- 利用ツール
- Amazon Kendra/AWS Textract/Azure AI/Azure OpenAI Service/ChatGPT/Claude/Gemini/Google Document AI/Google Vertex AI/OpenSearch/Python
- 対象業界
- その他/医療/製造
- 対象部門
- 品質管理/研究開発
- 対象業務
- 情報検索/比較検討
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 新しいテーマの検討を始める、または試作条件を決める場面になる
- 「過去に似た検討がなかったか」を思い出そうとする
- 共有フォルダの年度別・グループ別フォルダを開き、ファイル名を眺める
- それらしいファイルを開いて、中身を斜め読みする
- 見つからなければ、在籍の長い技術者に聞く
- 教わったキーワードや開発コード名で、もう一度探す
- 見つかった報告書を読み、自分の条件に当てはまるかを判断する
- 見つからなければ「無かったこと」にして、検討をやり直す
- 技術者が検索画面から質問する(例:「ガラス繊維入りの樹脂で、はんだリフロー後に反りが出た検討はあるか」)
- 自動社内用語辞書で、略号・開発コード名・材料の社内呼称を正式名称に展開する
- 自動質問者の閲覧権限を取得し、検索条件に組み込む
- 自動全文検索とベクトル検索を同時に実行し、スコアを正規化して統合する
- 自動閲覧権限のない文書を、検索の段階で結果から除外する
- 自動上位の断片を、報告書名・年度・担当者・ページとともに生成AIへ渡す
- 自動断片の引用だけを根拠に「何が試され、どうなったか」を報告書ごとに並べる。該当がなければ「見つかりませんでした」と返す
- 人技術者が出典を開き、原典を読んで自分の条件に当てはまるかを判断する。「この条件でいく」という結論は技術者が出す
- 自動質問・出典・原典を開いたかどうかを記録する
各工程の詳しい説明を読む
- 新しいテーマの検討を始める、または試作条件を決める場面になる
- 「過去に似た検討がなかったか」を思い出そうとする
- 共有フォルダの年度別・グループ別フォルダを開き、ファイル名を眺める
- それらしいファイルを開いて、中身を斜め読みする
- 見つからなければ、在籍の長い技術者に聞く
- 教わったキーワードや開発コード名で、もう一度探す
- 見つかった報告書を読み、自分の条件に当てはまるかを判断する
- 見つからなければ「無かったこと」にして、検討をやり直す
問題は4つあります。
(a)ファイル名も書き方もばらばら。 「報告書_最終版2.docx」と「20130614_試作結果.pdf」が同じフォルダに並び、部署・年度で分かれていて横断できません。
(b)社内の言い換えが多い。 材料には正式な化学名、メーカーの型番、社内の呼称、開発コード名の4通りの書き方があり、書いた人によって語が違うため、語の一致では引けません。
(c)失敗の記録が探せない。 「不採用」「見送り」で終わった報告書はタイトルに結論が出ておらず、中を開くまで分かりません。もっとも参照したい記録が、もっとも見つかりません。
(d)退職した人の検討は追えない。 探す手段が人に聞くことである以上、その人がいなくなれば、その期間の検討は実質的に消えます。
- 技術者が検索画面から質問する(例:「ガラス繊維入りの樹脂で、はんだリフロー後に反りが出た検討はあるか」)
- 【自動】 社内用語辞書で、略号・開発コード名・材料の社内呼称を正式名称に展開する
- 【自動】 質問者の閲覧権限を取得し、検索条件に組み込む
- 【自動】 全文検索とベクトル検索を同時に実行し、スコアを正規化して統合する
- 【自動】 閲覧権限のない文書を、検索の段階で結果から除外する
- 【自動】 上位の断片を、報告書名・年度・担当者・ページとともに生成AIへ渡す
- 【自動】 断片の引用だけを根拠に「何が試され、どうなったか」を報告書ごとに並べる。該当がなければ「見つかりませんでした」と返す
- 【人】 技術者が出典を開き、原典を読んで自分の条件に当てはまるかを判断する。「この条件でいく」という結論は技術者が出す
- 【自動】 質問・出典・原典を開いたかどうかを記録する
自動化されるのは「探す」「言い換えを吸収する」「該当箇所を絞る」の3つです。残るのは判断で、ここは技術者の仕事のまま残します。
02今回想定するシステム構成
技術報告書 / 試作検討書 / 他社品分析(共有フォルダ・文書管理)
└─ スキャンPDFは OCR でテキスト化
▼
節単位への分割(目的 / 条件 / 結果 / 考察)+ メタデータ付与
(報告書番号 / 年度 / 担当者 / 部署 / ページ / 公開区分 /
契約区分 / 結論区分)
▼
検索インデックス(本文テキスト + 埋め込みベクトル)
▼【質問】社内ポータルから ── 社内用語辞書で語を展開
全文検索 + ベクトル検索 → スコアを正規化して統合
+ 利用者の権限で絞り込み(検索の段階で除外)
▼
上位の断片を出典付きで生成AIへ
├─【該当あり】報告書ごとに 目的 / 条件 / 結果 を出典付きで返す
└─【該当なし】「見つかりませんでした」と返す
▼【人が判断】技術者が原典を開いて適用を決める| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | OpenSearch | Azure AI Search、Amazon Kendra |
| 埋め込み | Azure OpenAI Service | Google Vertex AI、OpenAI API |
| 生成AI | Claude API | Azure OpenAI Service、Gemini API |
| OCR | Azure AI Document Intelligence | Google Document AI、AWS Textract |
| 実行環境 | Python | ― |
文書の保管は既存の場所のまま、権限情報は社内の認証基盤から取ります。構成の中心は検索基盤です。 生成AIは断片を並べ直すだけで、品質の大半は分割・メタデータ・権限の設計で決まります。
03どうやって実装するのか
処理の起点を決める
技術者が質問を入力したときを起点にします。テーマ登録を検知して自動で類似の過去検討を出す構成も考えられますが、テーマ名だけでは材料・条件・目的のどれで似ているのかが決まらないため、最初は作りません。もう1つの起点は、新しい報告書が文書管理システムに登録されたときで、これを索引の更新に使います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 技術報告書・試作検討書 | 目的、実験条件、測定結果、考察、結論 | 共有フォルダ、文書管理システム |
| 他社品の分析結果 | 分解・分析の手順と結果 | 研究開発部の限定フォルダ |
| 報告書台帳 | 報告書番号、年度、担当者、部署、公開区分 | 文書管理システム |
| 社内用語辞書 | 略号・開発コード名・社内呼称と正式名称の対応 | 新たに作る |
| 利用者の権限情報 | 所属、役職、参加プロジェクト | 認証基盤・人事システム |
4番目の社内用語辞書が、この構成の要になります。 既存のシステムのどこにも存在せず、必ず新規に作る必要があります。
データの取得方法を決める
報告書の取り込み: テキストを持つPDFとWordはそのまま、スキャン画像のPDFはOCRにかけます。Azure AI Document Intelligence の Read モデルは、PDFとスキャン画像から印刷文字と手書き文字を抽出し、段落・行・単語・言語を返します。v4.0には、テキストを持たないPDFをテキスト付きのPDFに変換する機能もあります。古い報告書ほど画像のままで、ここが取り込みの山場です。
分割(チャンク)の考え方: 1冊を丸ごと1件にすると、当たっても「この80ページのどこか」としか言えません。技術報告書は「目的・条件・結果・考察」の節で切ります。 章立てが揃っているのがこの文書種別の利点です。各断片には前後の見出しと報告書名を付けます。
メタデータの付与: 報告書番号・年度・担当者・部署・ページ・公開区分・契約区分・結論区分を付けます。結論区分(採用/不採用/中断/判断できない)は本文から機械的に取れないことが多く、台帳に持たせるか人が付けます。
AIへ渡す前に整形する
- スキャンPDFのテキスト化 … 表の数値は取れても、図に描き込まれた条件値は取れないことがあります。この部分は利用環境に応じた個別確認が必要です。 取れなかった断片には「図表あり・要原典確認」の印を付けます
- 節単位への分割 … 目的・条件・結果・考察の見出しを単位に切ります
- 表の扱い … 実験条件は表にまとまっています。行と列の構造として取り出せるモデル(Document Intelligence の Layout モデルなど)で、セルの対応を保ったままテキスト化します
- 社内用語辞書の作成 … 辞書は技術者の言葉で作ります。 質問文の展開と、断片への別名併記の両方に使います
- 公開区分・契約区分の付与 … 社外秘の度合い、共同開発の成果物か、出願前の発明を含むかを付けます。付けられない文書は既定で検索対象外にします
- ベクトル化 … 各断片を埋め込みモデルでベクトルにし、索引へ登録します
AIに処理させる
検索と生成で役割を分けます。
検索基盤にさせること: OpenSearch のハイブリッド検索は、キーワード検索と意味による検索を組み合わせる仕組みです。統合には2方式あり、正規化プロセッサは各クエリのスコアを共通の尺度に変換してから合成し、スコアランカープロセッサは各クエリの結果内での順位をもとに合成します(Reciprocal Rank Fusion)。BM25と近傍検索はスコアの尺度が違うため、そのままでは足せません。 正規化プロセッサは min_max・L2・z-score と、算術平均・幾何平均・調和平均に対応します。OpenSearch 2.10で導入された機能です。
両方が要る理由は、質問の中で2種類が混ざるからです。 開発コード名や型番のような文字列が効く問いはキーワード検索が、「反りが出た」のような言い換えの多い問いはベクトル検索が拾います。あわせて、質問者が見られない文書を検索の段階で外します(§13)。
生成AIにさせること:
| 処理 | 内容 |
|---|---|
| 報告書ごとの整理 | 断片の内容だけを使って、目的・条件・結果を報告書ごとに並べる |
| 出典の明示 | 報告書名・年度・担当者・ページを、文ごとに付ける |
| 結論区分の提示 | 採用・不採用・中断のどれかを、断片の記載に従って示す |
| 不足の申告 | 答えがない場合、「見つかりませんでした」と答える |
「どの条件が最適か」は答えさせません。 過去の検討は、当時の設備・材料・要求仕様のもとでのものです。
指示内容を固定する
あなたは研究開発の調べものを手伝う担当者です。
検索で見つかった報告書の断片だけを使って、質問に答えてください。
【厳守事項】
- 断片に書かれていないことを書かず、材料や工法の一般的な知識で
補わないでください。
- 「この条件が最適です」「〜をお勧めします」といった結論や推奨を
書かないでください。何が試され、どうなったかだけを書いてください。
- 各文の末尾に、根拠となった断片の番号を [1][2] の形で付けてください。
根拠を付けられない文は書かないでください。
- 温度、時間、配合比、寸法などの数値は原文のまま引用してください。
丸めない、単位を換算しないでください。
- 目標に届かなかった検討、中断した検討も、採用された検討と同じ重みで
挙げてください。省略しないでください。
- 結論が出ていない場合は「結論の記載なし」と書いてください。
- 社内の略号や開発コード名を別の名称へ言い換えないでください。
- 該当する断片がない場合は「見つかりませんでした」と答えてください。
【質問】{question}
【展開した社内用語】{expanded_terms}
【検索で見つかった断片】{retrieved_chunks}
「結論や推奨を書かない」の1行が、この構成でもっとも重要です。 並んだ3件を見て、AIは「したがって温度は240度が適切です」と書きたがります。しかしその3件は、たまたま索引に入っていた3件にすぎません。入っていない検討のほうが多い前提で設計します。
「届かなかった検討も同じ重みで挙げる」も同様です。要約は成果のあった話を残す方向に働きますが、この業務では逆です。
出力形式を固定する
{
"found": true,
"reports": [
{ "ref": 1,
"report_title": "", "report_no": "", "fiscal_year": "",
"author": "", "department": "", "page": "",
"purpose": "", "conditions": "", "result": "",
"conclusion_type": "採用 | 不採用 | 中断 | 結論の記載なし",
"quote": "" }
],
"not_found_hint": "",
"figure_only_warning": false
}
found を必ず持たせます。「見つからなかった」を明示的に返せない設計にすると、AIは関連の薄い報告書を無理に結びつけます。
出典の付け方は2通りです。1つはClaude APIの検索結果ブロックで、source(URLまたは社内の識別子)と title を付けて本文を渡すと、回答に付く出典がその値を引き継ぎ、引用される文字列も渡した本文から切り出されたものになります。もう1つは上のJSONスキーマで返させ、ref を渡した断片と突合する方法です。この2つは同時に使えません。 Claude APIでは、引用機能と構造化出力を同時に指定するとエラーになります。
存在しない報告書番号を返していないかを機械的に確かめる工程がないと、この構成は成立しません。
システムへ連携する
| 連携先 | 内容 |
|---|---|
| 文書管理システム | 出典から原典の該当ページを開くリンク。登録時に索引を更新する |
| 認証基盤 | 質問者の所属・役職・参加プロジェクトを取得し、絞り込み条件にする |
| 月次レポート | 「見つからなかった」質問の一覧を研究開発のリーダーへ |
索引の更新が、この仕組みが続くかどうかを決めます。 取り込みを一度きりにすると、半年後には「最近の検討は出てこない」道具になり、また人に聞く運用へ戻ります。登録時のトリガーに週次の差分バッチを併用してください。
人が確認する
回答をそのまま設計判断に使わせません。出典を開くことを前提にした運用にします。
| 質問の種類 | 扱い |
|---|---|
| 「過去に似た検討があるか」の有無確認 | 回答と出典の一覧で完結してよい |
| 条件値(温度・時間・配合比)の参照 | 必ず原典を開く。 回答は該当ページへの案内として使う |
| 失敗した理由の確認 | 原典を開き、可能なら当時の担当者にも確認する |
| 他社品の分析、共同開発の成果物 | 原典を開き、利用条件を契約で確認してから使う |
条件値が数字として回答文に出ると、そこで確認が止まります。 数字は原典へのリンクとセットでしか表示しないでください。導入初月はリーダーが回答ログを週次で確認し、出典の誤りが1件でもあれば原因を特定してから次へ進みます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 該当する断片が見つからない | found: false で返す。関連の薄い報告書を無理に結びつけない |
| 閲覧権限のない文書が上位に来る | 検索の段階で除外する。件数も伏せる。 「権限のない文書が3件」も漏えいになる |
| スキャンPDFでテキストが無い | OCR未処理の一覧で管理し、検索対象外だと画面に出す |
| 条件値が図の中にしかない | 「図表あり・要原典確認」の印を付け、figure_only_warning を立てる |
| 略号・開発コード名が辞書にない | 問い返す。推測で置き換えない |
| 結論が出ていない報告書 | conclusion_type を「中断」で返す。成功したかのように要約しない |
記録を残す
- 質問文と、辞書で展開した後の検索語
- 返した断片と順位・スコア、生成した回答と出典
- 技術者が原典を開いたかどうか
found: falseの質問の一覧と、権限で除外された件数
3番目が評価指標になります。 回答は出たが毎回原典を開いて別の箇所を読んでいるなら、検索の精度が足りていません。利用回数ではなく、この一致率で評価してください。
04実装レベルの3段階
この業務では、半自動化と本格構成の差が大きく出ます。 言い換えの吸収と権限での絞り込みは全文検索では届かないためです。全文検索だけでは「正式名称で書かれた報告書しか出てこない」状態になり、かえって「無かった」と誤認します。40分が、半自動化で25分、本格構成で12分程度が想定です。
05工数削減シミュレーション
導入後 80件 × 12分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 技術報告書・試作検討書が10年分以上たまっていて、部署別・年度別のフォルダに分かれている研究開発部門。社内の略号や開発コード名が定着していて、語の一致では検索が成立しない場合。ベテラン技術者への口頭照会で回っている場合。
- 報告書が数百件で、1つのフォルダに命名規則どおり並んでいる場合。検討の条件と結論が報告書に書かれておらず、記録そのものが成立していない場合(まず報告書の書き方から着手する)。出願前の発明を含む文書を分離できない場合。
07最小構成で試す方法
- 過去に検討が重なったと分かっている領域を1つ選ぶ
- その領域の報告書を30冊集める。採用10冊・不採用10冊・中断10冊を混ぜる
- 技術者に、直近で実際に調べた質問を20件書き出してもらう
- 生成AIの画面に報告書を読み込ませ、20件の質問を順に投げる
- 「出典が正しいか」「不採用・中断の検討を拾えているか」を判定してもらう
4番の時点では検索を作りません。 それで役に立つ回答が出ないなら、検索を作っても役に立ちません。判定は必ず技術者が行ってください。 出典が正しいかは、原典を知る人にしか分かりません。
| 20件の結果 | 判断 |
|---|---|
| 15件以上で原典にたどり着けた | 検索基盤の構築に進む価値がある |
| 8〜14件 | 用語の言い換えを辞書にする作業を先に行い、もう一度測る |
| 7件以下 | 報告書に条件と結論が書かれていない。仕組みではなく、報告書の書き方から着手する |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 社内の略号・開発コード名で検索が当たらない | 用語辞書を作り、質問文の展開と断片への別名併記の両方に使う。辞書は技術者が作る |
| 不採用・中断の検討が拾えない | 結論区分をメタデータに持つ。検証用データに不採用と中断を混ぜて測る |
| AIが「この条件が最適」と書く | 結論と推奨の禁止をプロンプトに入れ、出力の検査で推奨表現を検出する |
| 存在しない報告書番号を返す | ref を渡した断片と突合する。または出典を生成させない |
| 閲覧権限のない文書が回答に出る | 検索の段階で除外する(§13) |
| 使われない | 「見つからなかった」質問を月次で見直し、文書と辞書を足す。最初の1か月で答えが出ないと、使われなくなる |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 技術報告書、試作検討書、他社品の分析結果、共同開発の成果物、出願前の発明を含む文書。自社の技術的な蓄積そのもので、社内でも閲覧範囲が分かれている文書群です。
- 閲覧権限を検索の段階で絞る … もっとも重要な設計です。生成の後で権限のない内容を落とす設計にしないでください。 その時点で内容はすでに生成AIへ渡っています。OpenSearchの文書レベルセキュリティは、役割ごとに、読み取り操作で取得できる文書を決める仕組みです。ただし書き込みは制限しないこと、設定サイズに上限があること、複数の役割では制限側が優先されることに注意してください
- 出願前の発明 … 索引に入れるかを知財部門と決めてください。入れる場合は別の索引に分け、限定した役割にのみ許可します
- 共同開発の成果物と他社品の分析結果 … 共同開発で得た結果は、契約で目的外の利用が禁じられていることがあります。契約区分のメタデータを持たせ、既定では検索対象外にしてください
- 外部AIへの入力と人名 … 報告書の本文が外部へ渡ります。保存地域と、入力を学習に使わないことを契約で確認してください。出典の担当者名は必要ですが、氏名を残し、連絡先は表示しないのを基本にします
- 自動実行してよい範囲 … 回答の提示までです。検討テーマの採否、試作条件の確定を自動化しないでください
誤りが起きたときのリスクは、権限のない文書の内容が伝わること、出願前の発明が広がること、契約違反です。この構成は「探す時間を短くする」ものであって、「判断を代行する」ものではありません。
10まず何から始めるか
1週目:重複した検討を数える
過去2年のテーマのうち、「後から、以前にも似た検討があったと分かったもの」が何件あったかを技術者に挙げてもらいます。この件数が、この構成を作る理由そのものになります。 同時に、報告書が何件あり、何件がスキャン画像かを数えます。
2週目:30冊20問で中身を確かめる
領域を1つ選び、報告書30冊(採用・不採用・中断を混ぜる)と質問20件で§8の検証を行います。ここで7件以下なら、仕組みではなく報告書の書き方から始めます。
3〜4週目:用語辞書と権限を整理する
略号・開発コード名・材料の社内呼称を洗い出します。まずは100語を目標にします。並行して、公開区分・契約区分が台帳から機械的に取れるかを確認します。取れない文書の多さが、権限設計の難しさを決めます。
5〜8週目:1領域だけ取り込んで検索を試す
その領域だけを取り込み、ハイブリッド検索と権限での絞り込みを設定します。20問を再度流し、どこまで自動で該当箇所へ届くかを測ります。権限の検証は、権限の違う3名以上で行います。
3か月目以降: 領域を広げながら辞書を調整し、索引の更新を文書管理の運用に組み込みます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| ハイブリッド検索がキーワード検索と意味による検索を組み合わせること。統合に、正規化プロセッサとスコアランカープロセッサ(Reciprocal Rank Fusion)の2方式があること | OpenSearch: Hybrid search | 2026-09-15 |
| BM25と近傍検索はスコアの尺度が異なるため合成前の正規化が有効であること。min_max・L2・z-score と算術平均・幾何平均・調和平均に対応すること。OpenSearch 2.10で導入されたこと | OpenSearch: Normalization processor | 2026-09-15 |
| 文書レベルセキュリティが、読み取り操作で役割ごとに取得できる文書を決める機能であること。書き込みは制限しないこと。設定サイズに上限があること。複数の役割では制限側が優先されること | OpenSearch: Document-level security | 2026-09-15 |
検索結果ブロックが source(URLまたは識別子)と title を必須項目に持つこと | Claude Docs: Search results | 2026-09-15 |
引用機能の cited_text が生成ではなく元の文書から切り出されたもので、有効な参照であることが保証されること。テキストを取り出せないスキャンPDFは引用できないこと。構造化出力と同時に指定するとエラーになること | Claude Docs: Citations | 2026-09-15 |
| Read モデルがPDFとスキャン画像から印刷文字と手書き文字を抽出し、段落・行・単語・言語を返すこと。v4.0にテキストを埋め込んだPDFへ変換する機能があること | MicrosoftDocs: Read model | 2026-09-15 |
文書管理システムからの報告書・台帳の取り出し方式と、認証基盤からの権限情報の取得方法は製品によって異なります。この部分は利用環境に応じた個別確認が必要です。 図に描き込まれた文字がOCRで取れるかも、対象の文書で確かめてください。出願前の発明を含む文書の扱いは、知財部門と顧問の弁理士に確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0078)についてのご相談はこちらから。
