新しい試験を計画するときに、過去の実験報告書と試験データから条件の近い試験を探し、結果と失敗理由を根拠の報告書付きで返す
研究者が新しい試験の計画を入れると、過去の試験報告書と試験データから条件の近い試験を探し、そのときの結果と失敗理由を報告書の番号とページ付きで返します。調べる作業は、共有フォルダを開いて回ることから、出てきた試験を読み比べることに変わります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 医療/建設/製造
- 対象部門
- 研究開発
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 研究者が新しい試験の目的、材料、条件、評価項目を試験計画書の下書きに書く
- 文書管理システムで、材料名と試験の種類を言葉を変えながら全文検索する
- 出てきた報告書を1冊ずつ開き、条件の表か本文から、温度・時間・湿度などを探して読む
- 条件が近そうな試験について、結果と考察を読み、試験データのCSVを開いて測定値を確かめる
- 見つからない、または自信がないときは、その材料を長く扱っている研究者に聞く
- 参照した報告書を試験計画書に書き、上長の承認に回す
- 自動文書管理システムで報告書が承認されると、本文とひも付く試験データのCSVを取り出す
- 自動Claude が報告書を試験1件ずつに分け、条件・結果・失敗理由を項目として取り出す
- 人報告書の作成者が、取り出された試験のカードを確かめて確定する
- 自動確定したカードを、文章の埋め込みと一緒に検索基盤に登録する
- 人研究者が試験計画の目的、材料、条件、評価項目を検索画面に入れる
- 自動言葉の一致と文章の近さを組み合わせたハイブリッド検索で、候補の試験を最大50件集める
- 自動候補を条件の数値の近さで並べ直し、上位10件に絞る
- 自動Claude が10件について、条件の差分、結果、失敗理由を報告書のページ付きでまとめる
- 人研究者が結果を読み、根拠の報告書を開いて確かめ、参照する試験を選ぶ
- 自動選んだ試験と、検索した条件を試験計画書の参照欄に書き出す
各工程の詳しい説明を読む
- 研究者が新しい試験の目的、材料、条件、評価項目を試験計画書の下書きに書く
- 文書管理システムで、材料名と試験の種類を言葉を変えながら全文検索する
- 出てきた報告書を1冊ずつ開き、条件の表か本文から、温度・時間・湿度などを探して読む
- 条件が近そうな試験について、結果と考察を読み、試験データのCSVを開いて測定値を確かめる
- 見つからない、または自信がないときは、その材料を長く扱っている研究者に聞く
- 参照した報告書を試験計画書に書き、上長の承認に回す
(a)条件で探せない。 全文検索は言葉の一致しか見ないので、数値の近さでは引けません。 80℃と85℃、500時間と1,000時間は、試験を計画する人にとっては「近い条件」ですが、検索にとっては無関係な文字列です。
(b)失敗の記録が報告書に埋もれる。 目標に届かなかった試験の理由は、考察の後半や「今後の課題」に書かれていることが多く、報告書の題名や要旨には出てきません。 「この条件で割れた」という情報は、報告書を最後まで読んだ人しか知りません。
(c)ベテランに聞くしかない。 その材料を10年扱ってきた研究者は、どの報告書に何が書いてあるかを覚えています。そのため質問はその人に集まり、その人が異動すると、調べる手段ごと失われます。
(d)調べた範囲が残らない。上長は、参照欄が空欄なのか、調べて見つからなかったのかを区別できません。
取り込み(報告書の承認のたび)
- 【自動】 文書管理システムで報告書が承認されると、本文とひも付く試験データのCSVを取り出す
- 【自動】 Claude が報告書を試験1件ずつに分け、条件・結果・失敗理由を項目として取り出す
- 【人】 報告書の作成者が、取り出された試験のカードを確かめて確定する
- 【自動】 確定したカードを、文章の埋め込みと一緒に検索基盤に登録する
検索(試験を計画するたび)
- 【人】 研究者が試験計画の目的、材料、条件、評価項目を検索画面に入れる
- 【自動】 言葉の一致と文章の近さを組み合わせたハイブリッド検索で、候補の試験を最大50件集める
- 【自動】 候補を条件の数値の近さで並べ直し、上位10件に絞る
- 【自動】 Claude が10件について、条件の差分、結果、失敗理由を報告書のページ付きでまとめる
- 【人】 研究者が結果を読み、根拠の報告書を開いて確かめ、参照する試験を選ぶ
- 【自動】 選んだ試験と、検索した条件を試験計画書の参照欄に書き出す
3番目が、この設計の分かれ目です。 試験のカードを作るのはAIですが、条件の値が正しいかを確かめるのは、その試験をした本人です。 承認の直後なら、本人は条件を覚えています。15年後に別の研究者が読み解くより、はるかに確実です。
02今回想定するシステム構成
【取り込み】文書管理システム(報告書の承認) ▼【トリガー】承認の通知 AWS Lambda ── 本文と試験データのCSVを取り出す ▼ Claude(Amazon Bedrock)── 試験1件ずつのカード(条件・結果・失敗理由・ページ) ▼【人】作成者が確定 Amazon Titan Text Embeddings V2 ── 目的・結果・失敗理由の文を埋め込み ▼ Amazon OpenSearch Service(試験のカードの索引) 【検索】研究者の検索画面(試験計画の目的・材料・条件) ▼ Amazon OpenSearch Service ── ハイブリッド検索(言葉の一致+文章の近さ)+絞り込み ▼ AWS Lambda ── 条件の数値の近さで並べ直し、上位10件 ▼ Claude(Amazon Bedrock)── 検索結果のブロックで渡し、引用付きでまとめる ▼ 研究者が確認 → 試験計画書の参照欄へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ハイブリッド検索と k-NN) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude(Amazon Bedrock。カードの取り出しと検索結果のまとめ) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込みと並べ直しの処理) | AWS Step Functions |
| 保管 | Amazon S3(報告書の本文と試験データの写し) | 既存のファイルサーバー |
| 文書管理 | 既存の文書管理システム | ― |
検索の中心は、OpenSearch のハイブリッドクエリです。 公開されているドキュメントでは、ハイブリッドクエリは複数のクエリの関連度のスコアを1つのスコアに組み合わせるもので、各サブクエリはシャードごとに独立して実行され、スコアの組み合わせには検索パイプラインを使うとされています。サブクエリは最大5つで、filter は1つのクエリとしてすべてのサブクエリに適用されます。
スコアの組み合わせ方は、正規化プロセッサーで決めます。 正規化の手法は min_max、l2、z_score、組み合わせの手法は arithmetic_mean、geometric_mean、harmonic_mean から選べ、サブクエリごとの重みを0.0〜1.0で指定できます。
埋め込みは、Amazon Titan Text Embeddings V2 を想定します。 入力は最大8,192トークンまたは50,000文字、出力は既定で1,024次元(512、256も選べる)です。英語に最適化されたモデルで、日本語は多言語対応の一覧に入っていますが、100以上の言語はプレビューとされています。 導入前に第8章の30件で検索の質を確かめ、足りなければ代替候補に切り替えます。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは、文書管理システムでの報告書の承認を起点にします。 承認済みの報告書だけを取り込むのは、下書きの条件や、差し戻された考察を検索結果に出さないためです。 承認の通知を受けたら Lambda が動き、本文と試験データのCSVを取り出します。文書管理システムが通知を出せない場合は、承認日で絞った一覧を毎晩取りに行く形にします。
過去の約8,000冊は、別に一括で取り込みます。 このときは作成者の確認が取れないので、カードに「未確認」の印を付けます。検索結果では未確認のカードを区別して表示し、研究者が参照に選んだときに、その場で条件を確かめてもらいます。
検索は、研究者が検索画面で「探す」を押したときに動きます。 試験計画書の下書きを書いている途中で、何度でも条件を変えて探せるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 試験報告書 | 本文、条件の表、結果、考察、報告書番号、承認日、作成者、テーマの番号 | 文書管理システム |
| 試験データ | 測定値のCSV(試験番号、測定項目、値、単位) | 試験データの共有フォルダ |
| 試験のカード | 取り込み時に作る。試験番号、材料、条件の数値、結果の区分、失敗の区分、失敗理由の文、ページ | 検索基盤 |
| 試験計画(検索時) | 目的の文、材料、条件の数値、評価の規格 | 検索画面 |
| 条件の許容幅 | 条件ごとに「近い」とみなす幅(温度は±10℃、時間は0.5〜2倍など) | 研究開発部門が決める設定表 |
質を決めるのは、いちばん下の設定表です。 温度が5℃違えば別の試験になる材料もあれば、20℃違っても同じ傾向の材料もあります。「近い」の幅は材料系ごとに研究開発部門が決め、AIには決めさせません。
試験のカードの項目は、最初に固定します。 材料(系統とグレード)、温度、時間、湿度、荷重、試験片の形状、評価の規格番号、結果の区分(achieved/not_achieved/stopped/invalid)、失敗の区分(割れ、剥離、変色、寸法変化、測定不良、その他)です。項目が決まらないうちに取り込みを始めると、後から全件を作り直すことになります。
データの取得方法を決める
報告書の本文は、Word と文字の入った PDF から取り出します。スキャンした画像だけの古い報告書は、この構成の対象外にします。 取り出せなかった報告書は一覧にして、別に読み取りの作業を回します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 本文(ページ番号付き) | 報告書のファイル | カードの取り出しと、引用するページ |
| 条件の表 | 報告書の表 | 条件の数値。本文より表を優先する |
| 測定値 | 試験データのCSV | 結果の区分の裏付け。カードに代表値を持たせる |
| テーマの番号と公開範囲 | 文書管理システムの属性 | 検索できる人の制限 |
本文はページ番号を付けたまま持ちます。 検索結果で「報告書 TR-2019-044 の12ページ」と示せなければ、研究者は根拠を確かめられません。ページが失われる取り出し方は使いません。
検索時には、試験計画から2つの問い合わせを作ります。 1つは材料名・規格番号・失敗の区分の言葉の一致、もう1つは目的の文の埋め込みによる近さです。この2つをハイブリッドクエリのサブクエリにし、filter で材料の系統と公開範囲を絞ります。
AIへ渡す前に整形する
- 単位の統一 … 温度は℃、時間は時間、湿度は%RHにそろえます。「85 ℃」「85℃」「85度」を同じ値にします
- 条件の範囲の扱い … 「80〜90℃」のような範囲は下限と上限の2つの値で持ちます
- 試験への分割 … 1冊の報告書を試験1件ずつに分け、それぞれにページの範囲を付けます
- 埋め込みの対象を絞る … 目的、結果、失敗理由の文だけを埋め込みます。条件の数値は埋め込まず、数値の項目として持ちます
- 長さの確認 … 埋め込みの入力は最大8,192トークンまたは50,000文字です。1件の試験の文がそれを超えることはまずありませんが、超えたものは段落で分けます
- 重複の検知 … 同じ試験が中間報告と最終報告の両方に載っている場合は、最終報告を正とし、中間報告のカードに印を付けます
4番目を軽く見ないでください。 条件の数値を文章と一緒に埋め込むと、「85℃」と「25℃」の違いは文章の近さにほとんど表れません。 数値は数値の項目として持ち、第5章の7番目で計算して並べます。
条件の数値の近さは、ハイブリッドクエリの中では計算しません。 ドキュメントでは、ハイブリッドクエリを function_score や script_score などのクエリの中に入れることはできないとされています。候補を集めたあとで、Lambda で許容幅から近さを計算して並べ直します。
AIに処理させる
AIの仕事は2か所です。取り込み時のカードの取り出しと、検索結果のまとめです。
| 場面 | させること |
|---|---|
| 取り込み | 報告書から試験を1件ずつ見つけ、条件の数値、結果の区分、失敗の区分、失敗理由の文、ページを取り出す |
| 検索 | 並べ直した上位10件について、試験計画との条件の差分、結果、失敗理由を、引用付きでまとめる |
| 検索 | 試験計画の条件のうち、過去に試された範囲に入らないものを「過去の試験が見つからない条件」として書く |
| させないこと | 理由 |
|---|---|
| 次に試す条件の提案 | どの条件で試験するかは研究者が決める。根拠の薄い推奨が計画に入る |
| 条件の近さの判断 | 許容幅から機械で計算する |
| 報告書に書かれていない失敗理由の推測 | 「おそらく吸湿による」と書くと、検証されていない理由が事実として広まる |
| 条件の値の補完 | 報告書に湿度が書かれていなければ空のまま。一般的な試験条件で埋めない |
| 結果の区分の書き換え | 報告書の結論をそのまま区分にする。「実質的には達成」と読み替えない |
3行目がいちばん起きやすい失敗です。 報告書に失敗の理由が書かれていないとき、AIは状況から理由を補いたくなります。補われた理由は、次の研究者にとって「過去の報告書に書いてあったこと」になります。 書かれていなければ「記載なし」とします。
指示内容を固定する
取り込み時(カードの取り出し):
あなたは研究開発部門で、承認済みの試験報告書から試験の記録を整理する担当です。
報告書の本文だけを根拠にしてください。推測で埋めないでください。
【やること】
報告書に含まれる試験を1件ずつ見つけ、それぞれについて次を取り出してください。
- 試験番号、材料の系統とグレード、試験片の形状
- 条件:温度(℃)、時間(h)、湿度(%RH)、荷重(MPa)、評価の規格番号
- 結果の区分:achieved / not_achieved / stopped / invalid
- 失敗の区分:割れ / 剥離 / 変色 / 寸法変化 / 測定不良 / その他 / なし
- 失敗理由:報告書に書かれた文をそのまま写す
- 根拠のページ
【厳守事項】
- 条件の値が書かれていなければ null にしてください。
一般的な試験条件や、他の試験の値で埋めないでください。
- 条件の表と本文で値が違うときは、表の値を使い、conflict に両方を書いてください。
- 失敗理由は、報告書に書かれた文だけを写してください。
書かれていなければ「記載なし」とし、理由を推測しないでください。
- 結果の区分は、報告書の結論の書き方に従ってください。
「目標に届かなかった」は not_achieved です。読み替えないでください。
- 単位が書かれていない値は、値を入れたうえで unit_missing に項目名を書いてください。
検索時(結果のまとめ):
あなたは研究者の試験計画を助ける担当です。
渡された検索結果だけを根拠に、試験計画と過去の試験を比べてください。
【試験計画】{plan}
【並べ直した過去の試験(上位10件)】検索結果として渡します
【書くこと】
1. 各試験について、試験計画との条件の差分(温度・時間・湿度・荷重)
2. 各試験の結果の区分と、失敗理由(報告書の記載どおり)
3. 試験計画の条件のうち、渡された試験のどれにも近いものがない条件
【厳守事項】
- 次に試す条件を提案しないでください。
- 検索結果にない試験や報告書に触れないでください。
- 失敗理由を言い換えたり、理由を付け足したりしないでください。
- 「未確認」の印のある試験は、その旨を必ず書いてください。
- 近い試験が1件もなければ、「条件の近い過去の試験は見つかりませんでした」と書いてください。
検索結果は、Claude の検索結果ブロックで渡します。 1件の試験を1つの search_result にし、source に報告書番号とページ、title に試験番号、content にカードの中身を入れます。引用を有効にすると、回答の文ごとにどの検索結果を根拠にしたかが付きます。 研究者は、まとめの1文から報告書のページへそのままたどれます。
「次に試す条件を提案しない」を両方の指示に書かないと、最後に一言添えてきます。 「以上から、80℃での試験が有望です」という一文は、研究者の判断を先取りします。根拠の薄い推奨ほど、忙しいときに計画へそのまま入ります。
出力形式を固定する
取り込み時のカードは、次の形のJSONで受け取ります。
{
"report_id": "TR-2019-044",
"tests": [
{
"test_id": "",
"material": { "family": "", "grade": "" },
"specimen": "",
"conditions": {
"temp_c": { "min": null, "max": null },
"time_h": null,
"humidity_rh": null,
"load_mpa": null,
"standard": ""
},
"result": "achieved | not_achieved | stopped | invalid",
"failure_mode": "割れ | 剥離 | 変色 | 寸法変化 | 測定不良 | その他 | なし",
"failure_reason": "",
"pages": [0],
"conflict": [""],
"unit_missing": [""]
}
]
}
1つ目の理由は、条件を数値の項目として索引に入れられることです。 temp_c や time_h は OpenSearch の数値の項目にし、filter の範囲指定と、並べ直しの計算の両方に使います。 自由文で受け取ると、単位と範囲の書き方がそろわず、計算できません。
2つ目は、result と failure_mode を決まった値に限れることです。 研究者によって「未達」「NG」「不合格」と書き方が違っても、区分は4つと7つにそろいます。「過去に割れで失敗した試験だけ」という絞り込みが、ここで初めて可能になります。
3つ目は、conflict と unit_missing で、作成者の確認が速くなることです。 表と本文で値が違う箇所、単位のない値だけを確認画面で強調します。作成者は全項目を読み直さず、印の付いた箇所だけを見れば済みます。
検索結果の並べ直しは、次の考え方で計算します。
| 項目 | 計算 |
|---|---|
| 条件ごとの近さ | 許容幅の中なら1から0へ直線で下げ、幅の外は0 |
| 条件の近さの合計 | 試験計画に値のある条件だけで平均する。過去の試験に値がない条件は数えず、欠けた数を表示する |
| 最終の並び | ハイブリッド検索のスコアと条件の近さを、研究開発部門が決めた重みで足す |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 文書管理システム | 承認の通知、または毎晩の一覧の取得 | 承認済みの報告書を取り出す |
| Amazon S3 | Lambda から読み書き | 報告書の本文と試験データの写し |
| Claude(Amazon Bedrock) | Lambda からの呼び出し | カードの取り出しと、検索結果のまとめ |
| Amazon Titan Text Embeddings V2 | OpenSearch の ML コネクタ経由 | 目的・結果・失敗理由の文の埋め込み |
| Amazon OpenSearch Service | 索引への登録と、ハイブリッド検索 | 試験のカードの検索 |
| 試験計画書 | 検索画面からの書き出し | 参照した試験と検索条件を参照欄へ |
埋め込みは、OpenSearch の ML コネクタから Amazon Bedrock を呼ぶ形にします。 AWS のドキュメントでは、OpenSearch Service の ML コネクタで Amazon SageMaker AI と Amazon Bedrock に接続でき、接続には OpenSearch Service に権限を渡す IAM ロールが必要とされています。細かなアクセス制御を使う場合は、ml_full_access ロールのマッピングも要ります。
セマンティック検索に使うモデルの登録では、model_config を必ず指定します。 指定しないと、セマンティックの項目を持つ索引の作成が失敗するとされています。embedding_dimension はモデルの出力の次元に合わせます。 ドキュメントの例は1,536ですが、Titan Text Embeddings V2 の既定は1,024です。 例をそのまま写すと、索引の次元と合わなくなります。
文書管理システムと試験計画書には書き込みません。 参照欄への書き出しは、研究者が選んだ試験を下書きに写すところまでで、承認に回すのは研究者です。
人が確認する
確認は2か所です。取り込み時の作成者と、検索時の研究者です。
- 作成者がカードを確定する … 承認の直後に、取り出された試験のカードを確かめます。
conflictとunit_missingの付いた箇所を優先して見ます - 研究者が検索結果の根拠を開く … 参照に選ぶ試験は、引用の付いた報告書のページを必ず開いて確かめます
- 未確認のカードを確かめる … 過去分の一括取り込みで作ったカードを参照に選ぶときは、その場で条件を報告書と照らします。確かめたら「確認済み」に変えます
- 見つからなかった条件を計画に書く … 過去の試験が見つからない条件は、「調べて見つからなかった」として参照欄に残します
1件の試験計画あたり40分を目安にします。 検索結果の10件を読み、うち数件の報告書を開いて確かめ、参照欄を整える時間です。AIが出したまとめだけを読んで参照欄に書く運用にはしません。
4番目は、この構成で初めてできることです。 これまで参照欄の空欄は「調べていない」と区別できませんでした。検索した条件と、見つからなかった条件を残すことで、上長は何が調べられたかを読めます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 報告書の本文が取り出せない(画像だけのPDF) | カードを作らず一覧に載せる。読み取りの作業へ回す |
| 条件の表と本文で値が違う | 表の値を使い、conflict に両方を記録。作成者が確かめる |
| 単位が書かれていない | 値は入れ、unit_missing に記録。作成者が確かめる |
| 作成者が異動・退職している | 同じグループの研究者を確認者にする。いなければ「未確認」のまま登録 |
| ハイブリッド検索で候補が0件 | 材料の系統の絞り込みを外して再検索し、それでも0件なら「見つからなかった」と表示 |
| 条件の近い試験が1件もない | ハイブリッド検索の上位は出すが、「条件の近い試験なし」と明示する |
| Bedrock の呼び出しに失敗した | 並べ直した一覧だけを表示し、まとめは再試行を促す |
| 公開範囲の外の試験が候補に含まれる | 文書レベルのセキュリティで検索時点で除外される。まとめには渡さない |
| 中間報告と最終報告で結果が違う | 最終報告を正とし、中間報告のカードに印を付けて検索結果の下位に回す |
上から3行目までが、取り込みの失敗の大半です。 どれもAIの問題ではなく、報告書の書き方の問題です。 conflict と unit_missing の件数を報告書の書式ごとに数えると、書式を直すべき箇所が見えてきます。
記録を残す
- 取り込んだ報告書の番号、承認日、取り込んだ日時
- Claude が返したカードのJSONと、作成者が確定した時に直した項目
- 検索のたびの試験計画の条件、ハイブリッド検索の候補、並べ直しの結果
- Claude に渡した検索結果と、返ってきたまとめと引用
- 研究者が参照に選んだ試験と、選ばなかった試験
- 「見つからなかった条件」の記録
2つ目で「直した項目」を残すのは、取り出しの精度を測るためです。 どの項目がどれくらい直されているかを見れば、指示を直すべきか、報告書の書式を直すべきかが分かります。
最後の行は、研究開発部門の空白の地図になります。 何度も「見つからなかった」と出る条件の組み合わせは、まだ誰も試していない領域です。 月に1回まとめて、テーマの検討の材料にします。
04実装レベルの3段階
最小構成では、1つの材料系しか扱えません。 カードを手で作るので、確かめるための段階です。 半自動化で、条件による絞り込みまでは自動になります。 ただし言葉の一致と文章の近さが無いので、材料名の表記ゆれや、目的の近い別の材料系の試験は拾えません。 本格構成との差はここで、本記事の想定は本格構成です。
05工数削減シミュレーション
導入後 30件 × 40分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 材料・部品・医療機器などの研究開発部門で、10年以上分の試験報告書と試験データが文書管理システムや共有フォルダに蓄積している企業。新しいテーマの試験を計画するたびに、似た条件の過去の試験を探すのに時間がかかり、経験の長い研究者に聞くしかない場合。「前に同じ条件で割れた」という失敗の記録が報告書の中に埋もれ、同じ失敗を繰り返している場合。AWS を社内の基盤として使っており、検索基盤と生成AIを社内の閉じた環境で動かせる場合。
- 試験報告書が数百件程度で、担当者が一覧表で探せば足りる場合。報告書の大半が手書きや紙のスキャンで、本文が文字として取り出せない場合(先に UC-0034 のような読み取りの構成が要る)。試験の条件が報告書ごとに書き方も単位もばらばらで、条件の項目を決める合意が取れない場合。なお、次にどの条件で試験するかの判断は研究者に残ります。
07最小構成で試す方法
- 1つの材料系の報告書を50冊選び、そこから試験を100件、手でカードにする(条件、結果、失敗理由、ページ)
- 最近の試験計画を30件選び、当時、参照欄に何が書かれていたかを控える
- 100件のカードをスプレッドシートにし、許容幅で条件の近さを計算して、30件の計画それぞれの上位10件を出す
- 同じ30件について、手元のAIサービスにカードを貼り付け、条件の差分と失敗理由のまとめを作らせる
- その材料を長く扱っている研究者に、上位10件が「思い当たる試験」と合っているかを見てもらう
30件は必ず、経験の長い研究者と一緒に見てください。 条件の数値で並べることが、その人の記憶と合っているかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 研究者が思い当たる試験が上位に並ぶ | 取り込みと検索基盤の構築に進む |
| 条件は近いのに、研究者が「これは別物」と言う | 許容幅か、カードの項目が足りない。 項目を足して計算し直す |
| まとめに条件の提案が混ざる | 指示の書き方で直る。構成は有効 |
2行目が出ることは珍しくありません。 失敗ではなく、研究者が暗黙に見ていた条件が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 条件の数値を文章と一緒に埋め込む | 数値は数値の項目にする。 85℃と25℃の差は文章の近さに出ない |
| ハイブリッドクエリの中で近さを計算しようとする | function_score などの中に入れられない。候補を集めてから並べ直す |
| 報告書を1冊単位で索引に入れる | 条件の違う試験が混ざる。試験1件ずつに分ける |
| 失敗理由をAIが補う | 「記載なし」とさせる。補われた理由は事実として広まる |
| 索引の次元がモデルと合わない | ドキュメントの例は1,536。Titan Text Embeddings V2 の既定は1,024 |
z_score と arithmetic_mean 以外を組み合わせる | 組み合わせられない。平均を下回るスコアが 0.001 にそろう点にも注意 |
| 日本語の検索の質が足りない | Titan V2 は英語に最適化され、多言語はプレビュー。30件で確かめ、代替に切り替える |
| 過去分のカードが未確認のまま使われる | 検索結果で区別し、参照に選ぶときに確かめる |
| 許容幅を全材料で共通にする | 材料系ごとに決める。「近い」の感覚は材料で違う |
上の2行が、この構成の失敗のほとんどです。 どちらも「条件の近さを文章の近さで代用する」という同じ誤りから出発しています。条件を数値の項目として持ち、計算で並べるかどうかで、研究者に使われるかが決まります。
日本語の検索の質の行も、早く効いてきます。 日本語の報告書で埋め込みの質が足りないと、ハイブリッド検索の片方がほとんど働きません。言葉の一致の重みを上げて始め、30件の検証で重みを決めてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 未発表の材料の組成と試験条件、試験の結果と失敗の記録、顧客からの依頼で行った試験の内容、研究者の名前です。研究開発部門のもっとも機密性の高い情報です。
- テーマごとの公開範囲を検索に反映させる … Amazon OpenSearch Service の細かなアクセス制御では、索引・文書・項目の単位で制限できます。文書レベルのセキュリティは、役割に対応付けたクエリに合う文書だけを検索で返します。 顧客の依頼による試験や共同研究の試験は、テーマの番号で絞ります
- 細かなアクセス制御は、有効にしたあと無効にできない … 有効にするには、ドメインへの通信がすべて HTTPS であること、保存時の暗号化、ノード間の暗号化が必要です。構築の最初に有効にします
- 索引への書き込みは取り込みの Lambda だけに許す … 研究者の役割には検索の権限だけを与えます
- 次の条件の判断をAIに寄せない … この構成が出すのは、過去の試験の事実までです。どの条件で試験するかは研究者と上長が決めます。 まとめの文を試験計画の根拠として書き写さず、報告書のページを参照します
誤りが起きた場合のリスクは、失敗した試験を見落として同じ条件で試験することと、見るべきでない試験が見えることの2つです。 前者は数値の項目と並べ直しで、後者は文書レベルのセキュリティで防ぎます。どちらも構築の最初に決める設計なので、後から足そうとしないでください。
10まず何から始めるか
1週目:カードの項目を決める
1つの材料系を選び、経験の長い研究者と一緒に、試験のカードに持たせる条件の項目と、結果・失敗の区分を決めます。
2週目:100件のカードと30件の計画で試す
その材料系の報告書から100件の試験を手でカードにし、最近の試験計画30件で上位10件を出します。研究者の思い当たる試験と合っているかを見て、許容幅を決めます。
3週目:取り出しの指示を作る
同じ報告書を Claude に読ませてカードを取り出し、手で作った100件と比べます。null にすべき値を埋めていないか、失敗理由を補っていないかを最優先で見ます。
4週目:承認のたびの取り込みを始める
新しく承認される報告書から、作成者の確認付きでカードをためます。この時点では検索は条件の数値の絞り込みだけにします。
2か月目: OpenSearch Service の索引を作り、細かなアクセス制御を有効にして、埋め込みとハイブリッド検索、並べ直しを足します。3か月目以降: 過去の報告書を材料系ごとに一括で取り込み、引用付きのまとめを足します。「見つからなかった条件」の記録が月に1回テーマの検討に使われ、試験計画書の参照欄が空欄で出てこなくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
ハイブリッドクエリが複数のクエリの関連度のスコアを1つに組み合わせ、各サブクエリがシャードごとに独立して実行されること。組み合わせに検索パイプラインを使うこと。サブクエリが最大5つで、filter が1つのクエリとして全サブクエリに適用されること。function_score・script_score などの中に入れられないこと | OpenSearch Documentation: Hybrid query | 2026-09-29 |
正規化の手法が min_max/l2/z_score、組み合わせの手法が arithmetic_mean/geometric_mean/harmonic_mean で、重みを0.0〜1.0で指定できること。z_score は arithmetic_mean とだけ組み合わせられ、平均を下回る文書のスコアが 0.001 にそろうこと | OpenSearch Documentation: Normalization processor | 2026-09-29 |
| 細かなアクセス制御が索引・文書・項目の単位の制限を提供すること。文書レベルのセキュリティが役割のクエリに合う文書だけを返すこと。有効化に HTTPS・保存時の暗号化・ノード間の暗号化が必要で、有効にしたあと無効にできないこと | Amazon OpenSearch Service: Fine-grained access control | 2026-09-29 |
ML コネクタで Amazon SageMaker AI と Amazon Bedrock に接続でき、IAM ロールが必要なこと。細かなアクセス制御では ml_full_access のマッピングが要ること。セマンティック検索では model_config が必要で、embedding_dimension をモデルの出力に合わせること(例は1,536) | Amazon OpenSearch Service: ML connectors for AWS services | 2026-09-29 |
| Titan Text Embeddings V2 の入力が最大8,192トークンまたは50,000文字、出力が既定1,024次元(512、256も可)であること。英語に最適化され、100以上の言語はプレビューで、日本語が多言語対応の一覧に含まれること。検索では文書を段落などに分けることが推奨されていること | Amazon Bedrock: Amazon Titan Text Embeddings models | 2026-09-29 |
検索結果ブロック(source・title・content)で自社の文書を渡すと、Claude が引用付きで回答すること。引用の有効・無効はリクエスト内で統一する必要があること。Claude API、Amazon Bedrock、Google Cloud で使えること | Claude Docs: Search results | 2026-09-29 |
どの条件で次の試験を行うか、どの試験を参照として計画に書くかは、研究者と上長が決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0381)についてのご相談はこちらから。
