造船所の設計部が過去の船の仕様書と建造・保証工事の記録を Vertex AI Search で検索し、主要寸法の近い船の仕様と、その仕様の項で起きた不具合を根拠付きで引く
設計者が新しい船の検討を始めるとき、船種と主要寸法の範囲で過去の船を絞り、仕様書の該当する項を検索します。その項で起きた建造中の手直しと保証期間中の不具合を、引用付きで並べて返します。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- その他/製造
- 対象部門
- 研究開発
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 営業から引合いの条件(船種、載貨重量、主要寸法の目安、航路、船主の要望)が届く
- 設計者が主要目表を開き、条件の近い過去の船を船番で書き出す。思い当たらなければ、先輩の設計者に聞く
- 書き出した船の仕様書を船番のフォルダから開き、検討したい項(たとえば荷役の装置、バラストの系統)を探して読む
- 保証工事の担当に、その船で不具合が無かったかを聞く。または不具合の記録の表計算のファイルを船番で絞り、機器の名前で探す
- 建造中の手直しの記録を船番で絞って読む
- 前の船の仕様と、起きた不具合、今回どうするかの案を検討メモにまとめる
- 人設計者が検討の画面で、船種、載貨重量・長さ・幅・喫水の範囲、検討したい項の分野、問いの文を入れて送信する
- 自動入れた条件から、主要目のメタデータの範囲と船種、項の分野で絞り込みの条件を組み立てる
- 自動Vertex AI Search(Agent Search)の search メソッドで、条件に合う過去の船の一覧を主要目と一緒に出す
- 自動answer メソッドで、仕様書の該当する項と、その項に結び付いた不具合・手直しの記録を引用付きでまとめさせる
- 自動引用の無い文を外す。船主の要望で決めた仕様には印を付ける
- 人設計者が一覧と引用の原文を見て、前の船の仕様と不具合を確かめ、今回の案を検討メモに書く
- 人設計の責任者が検討メモを見て、仕様を採用するか、変えるかを決める
- 【自動/人】 新しく見つかった不具合は、保証工事の担当が項の番号を付けて登録し、毎晩の書き出しでデータストアに足す
各工程の詳しい説明を読む
- 営業から引合いの条件(船種、載貨重量、主要寸法の目安、航路、船主の要望)が届く
- 設計者が主要目表を開き、条件の近い過去の船を船番で書き出す。思い当たらなければ、先輩の設計者に聞く
- 書き出した船の仕様書を船番のフォルダから開き、検討したい項(たとえば荷役の装置、バラストの系統)を探して読む
- 保証工事の担当に、その船で不具合が無かったかを聞く。または不具合の記録の表計算のファイルを船番で絞り、機器の名前で探す
- 建造中の手直しの記録を船番で絞って読む
- 前の船の仕様と、起きた不具合、今回どうするかの案を検討メモにまとめる
(a)似た船を探す手がかりが記憶にある。 2番で、主要目表は数値の一覧ですが、「この船主のこの系列の、荷役の装置を変えた船」のような探し方は、その系列を担当した設計者しかできません。
(b)仕様書と不具合が別々に保管されている。 3番と4番で、仕様書は設計部、不具合の記録は保証工事の担当にあります。仕様書の項を読んでも、その項で何が起きたかは分かりません。 不具合の記録を船番で絞っても、機器の名前の書き方がそろっておらず、見落とします。
(c)同じ不具合を繰り返す。 4番を省くと、前の船で軸封から漏れたポンプと同じ選定を、次の船でもしてしまいます。 保証工事の担当は、同じ現象が別の船で繰り返されていることに気づいていても、設計の検討の場にはいません。
(d)船主ごとの扱いが分かりにくい。 6番で、前の船の仕様は、その船主との打合せで決まったものが含まれます。 どこまでが自社の標準で、どこからが船主の要望かが、仕様書の本文からは見分けにくくなっています。
- 【人】 設計者が検討の画面で、船種、載貨重量・長さ・幅・喫水の範囲、検討したい項の分野、問いの文を入れて送信する
- 【自動】 入れた条件から、主要目のメタデータの範囲と船種、項の分野で絞り込みの条件を組み立てる
- 【自動】 Vertex AI Search(Agent Search)の search メソッドで、条件に合う過去の船の一覧を主要目と一緒に出す
- 【自動】 answer メソッドで、仕様書の該当する項と、その項に結び付いた不具合・手直しの記録を引用付きでまとめさせる
- 【自動】 引用の無い文を外す。船主の要望で決めた仕様には印を付ける
- 【人】 設計者が一覧と引用の原文を見て、前の船の仕様と不具合を確かめ、今回の案を検討メモに書く
- 【人】 設計の責任者が検討メモを見て、仕様を採用するか、変えるかを決める
- 【自動/人】 新しく見つかった不具合は、保証工事の担当が項の番号を付けて登録し、毎晩の書き出しでデータストアに足す
2番目の前に、不具合の記録を仕様書の項に結び付けておくのが、この設計の要です。 保証工事の担当と設計部で、不具合の記録に「どの仕様書の、どの項に関係するか」を付けます。そうしておけば、仕様の項を引いたときに、その項で起きたことが同じ答えに並びます。
5番目で船主の要望に印を付けるのも、意図してのことです。 前の船で特殊な塗装を採用していても、それが船主の指定なら、今回の船の標準として持ち込む理由にはなりません。 画面で見分けられるようにします。
02今回想定するシステム構成
引合いの条件・検討したい項 ▼【トリガー】検討の画面で条件と問いを送信 中継プログラム(Python。Cloud Run) │ 主要目の範囲・船種・項の分野で絞り込みの条件を組み立てる ▼ Vertex AI Search(Agent Search) ├── search メソッド ── 条件に合う過去の船の一覧(主要目つき) └── answer メソッド ── 仕様書の該当する項と、結び付いた不具合(引用つき) │ データストア:仕様書(項ごと)、不具合と手直しの記録、主要目表 ▼ 中継プログラム ── 引用の無い文を外す。船主の要望の印 ▼ 検討の画面(一覧/答え/引用した原文) ▼ 【設計者が原文を確かめて検討メモを書く】→【設計の責任者が仕様を決める】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の search メソッドと answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ― |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、検討の画面・主要目表・検索をつなぐ) | Node.js で同じものを書く |
| 保管 | Cloud Storage(仕様書と記録の写し、メタデータ、問い合わせと答えの記録) | ― |
図面の管理のシステムには、何もつなぎません。 図面は船主と共有する成果物で、版の管理が厳しく決まっています。この構成が扱うのは仕様書と記録の写しまでにし、図面そのものは設計者がいつもの経路で開きます。 新しく作るのは、不具合の記録に項の番号を付ける作業と、検討の画面です。
土台は、Vertex AI Search の answer メソッドと search メソッドです。 公式ページでは、answer メソッドは検索の結果から回答を作り、回答の文ごとに出典を示す引用を付けられるとされています。10件を超える結果がほしいときや、答えを待たずに結果を先に見せたいときは、search メソッドと一緒に使うとされています。公式ページには、Vertex AI Search が Agent Search へ改称中である旨の記載があります。
03どうやって実装するのか
処理の起点を決める
設計者が検討の画面で、条件と問いを入れて送信したことを起点にします。 引合いのメールが届いたことを起点にして自動で動かす形にはしません。引合いの条件は、営業と設計者が読み合わせて、どの範囲で探すかを決めてから入れるほうが当たります。 船主の要望の書き方は引合いごとにまちまちで、そのまま検索の条件にはなりません。
送信すると、search メソッドと answer メソッドを同時に呼びます。 過去の船の一覧が先に出て、答えはそのあとに出ます。
同じ検討を問い直すときは、同じ会話として続けます。 公式ページでは、前の問い合わせのセッションの ID を渡すと続きとして問えるとされています。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 検討の依頼 | 船種、載貨重量・長さ・幅・喫水の範囲、項の分野、問いの文、依頼した設計者 | 検討の画面 |
| 主要目表 | 船番、船種、載貨重量、長さ・幅・深さ・喫水、主機、引渡しの年、船級、船主の区分 | 主要目の一覧 |
| 仕様書 | 船番ごとの仕様書。章・項の番号と見出し、本文 | データストア |
| 不具合と手直しの記録 | 船番、発生日、関係する仕様書の項の番号、機器、現象、処置、再発の有無 | データストア |
質を決めるのは、不具合と手直しの記録の「関係する仕様書の項の番号」です。 20年分の記録に、保証工事の担当と設計者が一緒に項の番号を付けます。 付けられないものは「項の特定なし」として残し、空欄にはしません。
船主の名前は、メタデータでは区分の記号に置き換えます。 仕様書の本文には船主の名前が書かれていますが、絞り込みに要るのは「どの船主の系列か」の区分で、名前そのものは要りません。 区分と名前の対応表は、設計部の外に出さない台帳で持ちます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 仕様書 | 船番のフォルダの Word と PDF を、項ごとに分けて Cloud Storage へ写す | データストアの中身 |
| 不具合と手直しの記録 | 表計算のファイルと報告書を、1件を1つの文書にする | データストアの中身 |
| 主要目表 | 主要目の一覧の書き出し | メタデータと一覧 |
| 答えと一覧 | answer メソッドと search メソッドの応答 | 検討の画面 |
仕様書は、項ごとに1つの文書に分けて入れます。 1隻の仕様書を1つの文書のまま入れると、荷役の装置の項を問うても、同じ仕様書の別の項から引用されることがあります。項ごとに分け、メタデータに船番・主要目・項の番号を持たせます。 公式ページでは、非構造のデータのメタデータは JSON Lines(NDJSON)のファイルで、各行に id、structData(または jsonData)、Cloud Storage の文書を指す content の mimeType と uri を持たせるとされています。1つの項は、たとえば次の1行にします。
{"id": "spec-S1234-H-07-03",
"structData": {"doc_kind": "spec", "hull_no": "S1234", "ship_type": "bulk",
"dwt": 61200, "loa_m": 199.9, "breadth_m": 32.24, "draft_m": 13.0,
"delivered": "2019-03-15", "owner_group": "OG-07",
"section_no": "H-07-03", "section_area": "cargo_handling",
"owner_request": false},
"content": {"mimeType": "text/plain", "uri": "gs://<bucket>/spec/S1234/H-07-03.txt"}}
不具合と手直しの記録にも、同じ section_no を持たせます。 不具合の記録は doc_kind を defect、建造中の手直しは rework にし、仕様書の項と同じ番号で引けるようにします。 公式ページでは、取り込めるファイルの上限は200MBで、一度に100,000ファイルまで取り込めるとされています。
仕様書を項ごとに分けずに入れる部分(巻末の機器の一覧表など)は、データストアを作るときに文書の分割とレイアウトの解析を有効にします。 公式ページでは、文書の分割はデータストアを作ったあとに有効・無効を切り替えられず、見出しを各チャンクに付ける includeAncestorHeadings は既定で無効とされています。表はレイアウトの解析で検出されます。作るときに決めます。
AIへ渡す前に整形する
- 範囲の組み立て … 入れた載貨重量・長さ・幅・喫水の範囲を、数値の項目の絞り込みにします
- 船種のそろえ … 「BC」「ばら積み」「バルカー」などを、主要目表の船種の記号にそろえます
- 項の分野の特定 … 検討したい項を、仕様書の章と分野の記号(荷役、バラスト、居住区など)に置き換えます
- 引渡しの年の範囲 … 古い規則で建造された船を外すかを、設計者が選んだ範囲で絞ります
- 問い合わせ文の作成 … 問いの文に、分野の名前と船種を足して問い合わせ文にします
1番目が、言葉の検索と違うところです。 本文には「61,200 t」とも「DWT 61,200」とも書かれます。主要目表の数値をメタデータに持たせて範囲で絞ります。
絞り込みの条件は、たとえば次のようになります(公式ページの書き方による)。
filter(仕様書の項):
doc_kind: ANY("spec")
AND ship_type: ANY("bulk")
AND dwt: IN(55000i, 66000i)
AND breadth_m: IN(32.0i, 32.3i)
AND section_area: ANY("cargo_handling")
AND delivered >= "2012-01-01"
filter(不具合・手直し):
doc_kind: ANY("defect", "rework")
AND section_no: ANY("H-07-03", "H-07-04")
公式ページでは、ANY は指定した値のどれかに完全に一致するときに真になり、数値の項目は IN で範囲を指定でき(下限は既定で含み、上限は既定で含まない。i と e で明示できる)、日付の項目は ISO 8601 の文字列で比べられるとされています。絞り込みに使う項目は、スキーマの画面でインデックス可能にしておく必要があります。
不具合の絞り込みは、一覧で選ばれた船の項の番号から2回目に組み立てます。 最初の検索で当たった仕様書の項の section_no を集め、その番号の不具合と手直しを別に引きます。 項の番号を介してつなぐのは、機器の名前の書き方が記録ごとにそろっていないからです。
AIに処理させる
answer メソッドにさせるのは、絞り込んだ過去の船の仕様書の項と、結び付いた不具合・手直しの記録から、今回の問いに関係する仕様と、その仕様で起きたことを引用付きで短くまとめることです。 仕様の良し悪しの判断はさせません。
| 返させるもの | 中身 | 返せないときの扱い |
|---|---|---|
| 似た船の仕様 | 船番、項の番号、仕様の要点(機器の型式・容量・配置) | 見つからなければ「該当なし」 |
| その項で起きた不具合 | 船番、発生日、現象、処置、再発の有無 | 記録に無ければ「不具合の記録なし」 |
| 建造中の手直し | 船番、手直しの内容 | 記録に無ければ「手直しの記録なし」 |
| 船ごとの違い | 同じ項で、船によって仕様が違うところ | 違いが無ければ書かない |
| 船主の要望で決めた仕様 | 該当する項と船番 | 原文のまま引用する |
| させないこと | 理由 |
|---|---|
| 今回の船に採用すべき仕様を勧める | 船主の要望と造船所の方針を見て、設計の責任者が決める |
| 船級の規則・条約に適合するかを言う | 規則の版と船の条件で、設計者と船級が確かめる |
| 不具合の原因を断定する | 原因は保証工事の調査とメーカーの報告で決まる |
| 主要目の数値を補う・丸める | 数値は主要目表の値をそのまま使う |
| 別の船主の仕様を、船主の名前で書く | 区分の記号で示し、名前は台帳で引く |
2行目がいちばん大事です。 過去の船の仕様は、その船が建造されたときの規則の版に合わせたものです。 答えが「この仕様で問題ない」と書くと、規則が変わったあとの船にそのまま持ち込まれます。
指示内容を固定する
answer メソッドでは、回答の口調や詳しさをプロンプトの前置き(preamble)で指定できます。前置きを次のようにします。
あなたは造船所の設計部の資料係です。設計者の問いについて、
検索で見つかった過去の船の仕様書の項と、不具合・手直しの記録だけを根拠に、
次の順で短く答えてください。
1. 似た船の仕様(船番、項の番号、機器の型式・容量・配置の要点)
2. その項で起きた不具合(船番、発生日、現象、処置、再発の有無)
3. 建造中の手直し(船番、内容)
4. 同じ項で船によって仕様が違うところ
5. 船主の要望で決めたと書かれている仕様(項の番号と船番)
守ること:
- 今回の船にどの仕様を採用すべきかを書かないでください。
- 船級の規則や条約に適合するかを書かないでください。
- 不具合の原因を断定しないでください。記録に書かれた現象と処置を写してください。
- 不具合の記録が見つからない項は「不具合の記録なし」と書いてください。
不具合が無かったと書かないでください。
- 船番、項の番号、数値、単位は原文の表記のまま写してください。
- 船主の名前を書かないでください。区分の記号で示してください。
- 検索結果に無いことを書かないでください。
「不具合が無かったと書かない」を入れるのは、記録の無さと不具合の無さが違うからです。 保証期間中の不具合の記録は、項の番号を付けた範囲でしか結び付いていません。 付けていない古い記録に同じ現象が書かれているかもしれず、「無かった」と書くと、設計者がそこで調べるのをやめます。
あわせて、answer メソッドの設定を次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
引用(includeCitations) | 有効 | 文ごとに出典を示させる。既定は無効 |
関連性の低い内容の無視(ignoreLowRelevantContent) | 有効 | 関係の薄い船から無理に答えさせない |
根拠の支持による絞り込み(groundingSpec の filteringLevel) | FILTERING_LEVEL_HIGH から試す | 支えの弱い答えを外す。未設定だと絞り込みが掛からない |
回答の言語(answerLanguageCode) | ja | 日本語で答えさせる |
絞り込み(filter) | 前処理で組み立てた条件 | 主要目の範囲・船種・項の分野 |
検索の件数(maxReturnResults) | 25 | 答えに使える上限。残りは search メソッドの一覧で見る |
公式ページでは、maxReturnResults の既定は10・最大は25で、支持が基準に届かない答えは返されず、理由として LOW_GROUNDED_CONTENT が返るとされています。引用の位置(startIndex/endIndex)は文字ではなく UTF-8 のバイト単位なので、日本語の答えに引用の印を差し込むときは、中継プログラムでバイトから文字の位置に直します。
出力形式を固定する
中継プログラムが、2つの呼び出しの応答を次の形にそろえて検討の画面に渡します。
{
"request_id": "",
"conditions": { "ship_type": "", "dwt_range": [0, 0], "breadth_range": [0.0, 0.0], "section_area": "" },
"answer_text": "",
"support_score": 0.0,
"skipped_reason": "",
"citations": [
{ "sentence": "", "doc_kind": "spec | defect | rework", "hull_no": "", "section_no": "", "quote": "", "owner_request_flag": false }
],
"ships": [
{ "hull_no": "", "ship_type": "", "dwt": 0, "loa_m": 0.0, "breadth_m": 0.0, "delivered": "", "owner_group": "", "defect_count": 0 }
],
"unlinked_defect_note": "",
"session_id": ""
}
1つ目の理由は、ships を答えと別に持てることです。 条件に合う船が何隻あり、そのうちどの船で不具合が何件あったかが、答えの文を読む前に一覧で分かります。 答えが1隻の仕様だけを引いていても、ほかの船を一覧から開けます。
2つ目は、owner_request_flag で船主の要望を見分けられることです。 真の引用は画面で色を変え、自社の標準と分けて読めるようにします。
3つ目は、unlinked_defect_note に「項の番号が付いていない不具合の記録がある」ことを書けることです。 一覧の船番で、項の特定なしの記録が残っていれば件数を出し、設計者が必要なら原本を見に行けるようにします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 検討の画面 | 中継プログラムの API | 依頼の受け取りと結果の表示 |
| Vertex AI Search | search メソッドと answer メソッドの API | 船の一覧、答え、引用、支持の度合い |
| 主要目の一覧 | 書き出しの読み取り | メタデータの数値と一覧 |
| Cloud Storage | 仕様書の項と記録の写し | 引用した箇所の原文の表示 |
| 不具合の記録 | 毎晩の書き出し | 項の番号を付けた新しい記録の追加 |
検討メモは、設計者がいつもの書式で書きます。 画面から引用を貼り付けられるようにしますが、メモそのものを自動で作ることはしません。 検討メモは船主との打合せの元になり、何を採用して何を変えたかの理由が書かれていなければならないからです。
船主の系列ごとに見られる人を分けるかは、最初に決めます。 公式ページでは、データストアの文書単位のアクセス制御は、データストアを作るときにしか有効にできず、文書のメタデータの acl_info に読める人とグループを並べ、1文書の読み手は3,000までとされています。この機能は Preview です。設計部の全員が全部の船を見てよいなら使わず、船主との契約で見られる人を限る系列だけ、別のデータストアに分けます。
人が確認する
- 一覧の船を先に見る … 条件に合う船の数と、主要目の違いを確かめます
- 引用の原文を開いて読む … 仕様書の項と不具合の記録を、原文で読みます
- 建造の年と規則の版を確かめる … 前の船が建造されたときの規則と、今回の船の規則が同じかを確かめます
- 色の変わった引用を確かめる … 船主の要望で決めた仕様は、今回の船主に持ち込めるかを考えます
- 項の特定なしの記録を必要に応じて見る … 件数が出ていれば、原本を開きます
- 検討メモを書き、設計の責任者に回す … 採用・変更の案と理由を書きます
3番目を省かないでください。 同じ仕様でも、建造された年の規則の版が違えば、今回はそのまま使えないことがあります。 答えは規則の版を判断しません。
目標は、90件をならして1件30分です。 一覧を見て、原文を読み、規則の版を確かめ、検討メモを書く時間です。船番を探して聞いて回る時間がほぼ無くなり、読む時間と考える時間が残ります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 条件に合う船が無い | 「該当なし」と表示し、範囲を広げた検索を別に出す。広げたことを画面に明記する |
| 答えが作られなかった(支持が低い) | 答えを出さず、船の一覧と仕様書の項の候補だけを並べる |
| 引用の無い文が含まれる | その文を画面に出さない |
| 不具合の記録に項の番号が無い | 件数を unlinked_defect_note に出し、原本を見るよう促す |
| 主要目表に無い船番が仕様書にある | その仕様書をデータストアに入れず、主要目表の担当へ知らせる |
| 船主の要望の印が付いた仕様を引用した | 色を変えて表示する |
| 古い規則の時期の船ばかりが当たる | 引渡しの年の範囲を画面に示し、絞り直すよう促す |
| 検索が応答しない | 依頼を保存して再送する。急ぐものは、いまどおり主要目表と仕様書を開く |
4行目が、最初の数か月は多く出ます。 20年分の記録すべてに項の番号を付けるのは時間がかかるので、新しい船から順に付け、付いていない記録があることを画面で隠さないようにします。
記録を残す
- 検討の依頼(条件、問いの文、依頼した設計者、日時)
- 絞り込みの条件、search メソッドと answer メソッドの応答の全文、セッションの ID
- 画面に出した答えと、外した文、色を変えた引用
- 設計者が開いた原文と、検討メモに貼り付けた引用
- 仕様書と記録の版、データストアに入れた日
- 項の番号を付けた担当と日付
4つ目が、いまは残っていない記録です。 どの船のどの項を参考にして今回の仕様を決めたかが残れば、次の船でその仕様に不具合が出たときに、どこから持ち込んだかをさかのぼれます。
04実装レベルの3段階
半自動化で、1件80分が50分ほどになります。 探す時間は減りますが、不具合の記録の追加が月に一度の手作業で、船主の要望を原文で見分ける作業が残ります。本格構成で30分になり、この段階が本記事の想定です。 段階を進める前に、項の番号の付け方を決めてください。 決まっていないと、系列を広げたときに、保証工事の担当ごとに付け方がばらつきます。
05工数削減シミュレーション
導入後 90件 × 30分 ÷ 60 = 45 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- ばら積み貨物船・タンカー・内航の貨物船などを、同じ系列の船型を少しずつ変えながら建造している造船所。過去の船の仕様書が電子のファイルで残っていて、建造中の手直しと保証期間中の不具合の記録が船ごとに残っている場合。似た船の経験を持つ設計者が限られ、若手の設計者が「前の船ではどうしたか」を聞いて回っている場合。Google Cloud を使っている、または使い始められる場合。
- 毎回まったく新しい船種を一隻ずつ建造していて、似た過去の船がほとんど無い場合。過去の仕様書が紙の綴じ込みだけで、船番と項の番号が読み取れない場合。船主との契約で仕様書を外部のクラウドに置けない場合。なお、仕様を採用するかどうか、船級の規則や条約に適合するかの判断、船主への提案の内容は、この構成では代替できません。
07最小構成で試す方法
- 過去2年の検討から、30件を選ぶ(その系列を長く担当した設計者と、入社して数年の設計者が検討したものを混ぜる)
- その30件について、当時参考にした船番と、調べた不具合の記録を書き出す
- 1つの系列(たとえば6万トン級のばら積み船)の過去の船の仕様書を項ごとに分け、その系列の不具合の記録に項の番号を付けて、Vertex AI Search のデータストアを作る
- 30件の条件から絞り込みの条件と問い合わせ文を作り、answer メソッドを短いスクリプトで呼んで、答えと引用を見る
- 引用された船番と不具合が、当時参考にしたものと合うかを突き合わせる
30件のうち、記録の無い項について「不具合は無かった」と書いた件数を最初に数えます。 1件でもあれば、前置きの書き方を直してから先へ進みます。
| 出てきた内容 | 判断 |
|---|---|
| 大半が当時と同じ船番を引き、不具合も並んだ | 一覧と検討の画面に進む |
| 仕様は出るが不具合が出ない | 項の番号の付け方を直す。船番だけで結び付けていないか確かめる |
| 主要目の近くない船が当たる | 数値の項目がインデックス可能になっているかと、範囲の指定を直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 仕様は出るが、その項の不具合が出ない | 不具合の記録に仕様書の項の番号を付けてから入れる |
| 記録の無い項を「不具合なし」と書く | 前置きで禁じ、項の特定なしの件数を画面に出す |
| 主要目の近くない船が当たる | 数値をメタデータに持たせ、インデックス可能にして範囲で絞る |
| 仕様書の別の項から引用される | 仕様書を項ごとに1つの文書に分ける |
| 一覧表の見出しが切れる | 分割を有効にし、見出しを付ける設定をデータストアを作るときに入れる |
| 船主の要望の仕様を標準として持ち込む | 印を付けて画面で目立たせる |
| 古い規則の時期の仕様をそのまま使う | 引渡しの年と規則の版を確かめる手順を人の確認に入れる |
| 日本語の答えで引用の位置がずれる | バイト単位の位置を文字の位置に直す |
| 船主の名前が答えに出る | メタデータを区分の記号にし、前置きで禁じる |
| 見られる人を後から限りたくなる | 文書単位のアクセス制御は作るときにしか有効にできない。最初に分け方を決める |
上の2行が、この構成の失敗のほとんどです。 どちらも「仕様と不具合をつなぐ」ところの問題です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 過去の船の仕様書、主要目、機器のメーカーと型式、建造中の手直し、保証期間中の不具合、船主の区分です。船主ごとの仕様と不具合の履歴は、船主との契約で守秘を約束している情報であり、競合の造船所にとっても価値のある情報です。
- 仕様の採用と規則への適合の判断を人に残す … 答えは過去の船の事実にとどめ、採用するか、規則に適合するかは、設計者と設計の責任者が決めます
- 船主の名前をメタデータと答えに入れない … 区分の記号に置き換え、名前との対応表は設計部の外に出しません
- 船主ごとの守秘の範囲を確かめる … 仕様書を外部のクラウドに置き、他の船主の船の検討に使ってよいかを、船主との契約で先に確かめます
- 見られる人を限る系列を分ける … 契約で見られる人を限る系列は、別のデータストアにするか、文書単位のアクセス制御を作るときに有効にします(Preview)
- データの置き場所を確かめる … 公式ページでは、データストアの場所は
globalのほかus、euのマルチリージョンで、日本のリージョンは載っていません。 社内の情報の管理の規程と照らして決めます - 検討メモに貼った引用の出どころを残す … 他の船主の仕様を引用したときは、船主への提案の資料にそのまま載せないよう、画面で区分を示します
検索の記録を、設計者の評価に使わないことも決めておきます。 調べた回数で人を比べ始めると、調べずに前の船を写すようになります。
誤りが起きた場合のリスクは、前の船で起きた不具合を見落として同じ仕様を採用することと、他の船主の仕様を提案に持ち込むことの2つです。 前者は項の番号の結び付けと「不具合なし」と書かせない前置きで、後者は区分の記号と画面の印、人の確認で防ぎます。
10まず何から始めるか
1週目:項の番号の付け方を決める
設計部と保証工事の担当で、不具合の記録に仕様書のどの項の番号を付けるか、付けられないときをどう書くかを決めます。あわせて、船種と分野の記号、船主の区分の記号を決めます。
2週目:1系列で仕様書を項に分け、記録に番号を付ける
1つの系列の過去の船について、仕様書を項ごとに分け、不具合と手直しの記録に項の番号を付けます。その系列を担当した設計者に、結び付けが当時の記憶と合うかを見てもらいます。
3週目:30件で試す
第8章の手順でデータストアを作り、30件の検討で引用の船番と不具合を確かめます。記録の無い項を「不具合なし」と書いていないかを最優先で見ます。
4週目:船主との契約を確かめる
仕様書を外部のクラウドに置き、他の船主の船の検討に使ってよいかを確かめ、見られる人を限る系列を決めます。 決まった分け方で、データストアの作り方を決めます。
2か月目: 全系列の仕様書を項ごとに取り込み、設計部の端末から使い始めます。3か月目以降: 船主の要望の印、項の特定なしの件数、毎晩の記録の追加を足し、1件80分が何分になったかを実測します。入社して数年の設計者が、主要目の近い過去の船の仕様と、その仕様で起きた不具合を数分で引け、検討メモに出どころが残るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
answer メソッドが検索結果から回答を作り、文ごとの引用を付けられること(includeCitations の既定は無効)。セッションの ID を渡して続けて問えること。10件を超える結果が要るときや結果を先に見せたいときは search メソッドと一緒に使うこと。maxReturnResults の既定が10・最大が25であること。filteringLevel が FILTERING_LEVEL_LOW/FILTERING_LEVEL_HIGH で、入れなければ絞り込みが掛からず、届かない答えは LOW_GROUNDED_CONTENT で返されないこと。引用の位置が UTF-8 のバイト単位であること。前置き(preamble)で口調や詳しさを指定できること。Vertex AI Search が Agent Search へ改称中であること | Google Cloud: Get answers and follow-ups | 2026-10-28 |
絞り込みに使う項目をインデックス可能にすること。ANY が完全一致であること。数値の項目を IN で範囲指定でき、下限は既定で含み上限は既定で含まず i/e で明示できること。日付を ISO 8601 の文字列で比べられること | Google Cloud: Filter search for structured or unstructured data | 2026-10-28 |
非構造のデータのメタデータが JSON Lines(NDJSON)で、各行に id・structData または jsonData・content の mimeType と uri を持つこと。ファイルの上限が200MB、一度に100,000ファイルまで取り込めること。RAG にはデータストアを作るときに文書の分割を有効にすること | Google Cloud: Prepare data for ingesting | 2026-10-28 |
文書の分割をデータストアの作成後に切り替えられないこと。includeAncestorHeadings の既定が無効であること。レイアウトの解析が表を検出すること | Google Cloud: Parse and chunk documents | 2026-10-28 |
文書単位のアクセス制御が Preview で、データストアを作るときにしか有効にできないこと。acl_info の readers に読める人とグループを並べること。1文書の読み手が3,000までであること | Google Cloud: Set up data source access control | 2026-10-28 |
データストアの場所が global と、us・eu のマルチリージョンで、日本のリージョンの記載が無いこと | Google Cloud: Agent Search locations | 2026-10-28 |
仕様の採用、船級の規則や条約への適合、船主への提案の内容は、自社の設計の手順と船級、船主との契約で確かめてください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2086)についてのご相談はこちらから。
