はじめに
建設業界における施工要領書を作成するとき、多くの場合は過去案件の要領書を参考にします。
しかし実際には、次のような作業が発生します。
- 過去の要領書が大量にあり、必要な記載を探すのに時間がかかる
- PDFやWord、Excelを何度も開いて比較する必要がある
- 過去の元データを探し、内容を修正して新しい施工要領書へ転用する
RAG(Retrieval-Augmented Generation)を使えば、過去文書から関連する記載を検索できます。
ただし、施工要領書の作成業務では、検索結果を画面上で確認するだけでは不十分です。
必要な記載を見つけた後に、元のレイアウトを確認し、編集可能なWordやExcelの元データへたどり着く必要があります。
そこで今回は、
施工条件を入力すると、過去の施工要領書から関連する記載を検索し、原文の確認から元データの取得まで行えるRAGアプリ
を作成しました。
この記事では、アプリの機能と実装上の工夫を紹介します。
今回作ったアプリ
このアプリには、次の2つのモードがあります。
- 類似パーツ検索
- QAモード
既定の類似パーツ検索モードでは、施工条件を入力し、過去の施工要領書から類似する記載を検索できます。
検索結果から必要な項目を選択し、Word、PDF、元データとして出力することもできます。
類似パーツ検索
条件入力
工種や作業内容などを入力すると、過去の施工要領書から類似する記載が検索されます。
すべての項目を入力する必要はなく、一部の項目だけでも検索できます。
類似する記載の検索
入力した条件に近い記載が、検索結果として一覧表示されます。
各検索結果には、入力条件との類似度を示すスコアが表示されます。
また、各検索結果から次の情報を確認できます。
- XMLを開く:構造化した文書を表示する
- 参照用PDF:構造化時に作成したPDFを表示する
- 推定ページへ:検索結果に対応すると推定したページを表示する
Word・PDF・元データの出力
検索結果の「採用」にチェックを入れることで、必要な項目を選択できます。
選択した項目は、次の形式で出力できます。
- 選択結果をWord出力:選択した項目を1つのDOCXファイルにまとめる
- 選択結果の該当ページをPDF出力:対応すると推定したページだけをPDFとして出力する
- 選択結果の元データをZIP出力:構造化前のWord、または関連シートを抽出したExcelをZIP形式で出力する
QAモード
類似パーツ検索とは別に、構造化した文書についてAIへ質問できるQAモードも用意しています。
質問に対する回答とあわせて、回答の根拠となった検索結果も確認できます。
使用例
ここでは、「防火区画の貫通処理」に関する過去の記載を検索し、各形式で出力します。
1. 検索条件を入力する
「防火区画の貫通処理」を検索するため、作業欄へ入力します。
未入力の項目があっても検索できます。
2. 必要な検索結果を選択する
「床の貫通」と「ボード壁(防火・防煙区画)」に関する記載を確認したいため、それぞれの「採用」にチェックを入れます。
3. Wordとして出力する
「選択結果をWord出力」をクリックすると、選択した項目が1つのDOCXファイルとして出力されます。
構造化時に付与した section、subsection、item などの情報に応じて、Wordの見出しレベルが設定されます。
4. 該当ページをPDFとして出力する
「選択結果の該当ページをPDF出力」をクリックすると、選択した項目が含まれていると推定したページだけで構成されたPDFが出力されます。
5. 元データをZIPとして出力する
「選択結果の元データをZIP出力」をクリックすると、検索結果に対応する構造化前の元データがZIP形式で出力されます。
元データがExcelの場合は、検索結果に関係するシートだけが抽出されます。
Wordの場合は、構造化前の元ファイル全体が出力されます。
実装で工夫したポイント
1. 検索結果を目的に応じた形式で出力できるようにした
このアプリでは、検索結果を画面上で確認するだけでなく、必要な項目を選択し、Word、PDF、元データの形式で出力できます。
WordとPDFは、検索結果の内容や元のレイアウトを確認するための補助資料として出力します。
一方、元データは、新しい施工要領書を作成する際に転用することを目的としています。
Word出力
Word出力では、選択した項目の見出しや本文、表、画像などを、構造化した情報をもとに1つのDOCXファイルへまとめます。
section、subsection、item などの構造に応じて、Wordの見出しレベルも設定します。
一方、構造化データには元文書の詳細なレイアウト情報が含まれていないため、元の施工要領書の見た目をそのまま再現することはできません。
そのため、出力されたWordは完成した施工要領書ではなく、検索結果をまとめて確認したり、必要な記載を整理したりするための参考資料として使用する想定です。
PDF出力
PDF出力では、選択した項目が含まれていると推定したページだけを、構造化時に作成したPDFから抽出し、1つのPDFへまとめます。
文書全体ではなく、検索結果に関係するページだけを出力するため、参照用PDFの中から該当箇所を探し直す手間を減らせます。
PDFは元のページレイアウトを保持した状態で確認できますが、編集用のファイルではありません。
そのため、検索結果の周辺に書かれている内容や、表、図、レイアウトなどを確認するために使用します。
元データZIP出力
元データZIP出力では、検索結果に対応する構造化前の元ファイルをZIP形式で出力します。
元データとして、WordまたはExcelを扱います。
Excelの場合は、検索結果に関係するシートだけを抽出して出力します。
必要なシートに絞って取得できるため、元ファイルから対象箇所を探し直す手間を減らせます。
一方、Wordの場合は、構造化前の元ファイルを取得します。
PDFは、元データを構造化する過程で作成した参照用ファイルであり、元データには含めません。
検索結果から必要な項目を選択
↓
Word出力:構造化した内容をまとめて確認
PDF出力:該当ページを元のレイアウトで確認
ZIP出力:構造化前のWordやExcelを取得し、新しい施工要領書の作成に転用
このように、WordとPDFは検索結果を確認するために使用し、元データは新しい施工要領書を作成する際の転用元として使用します。
2. 施工要領書特有の用語を拾うため、意味検索と文字列検索を組み合わせた
類似する記載の検索には、Azure OpenAIのEmbeddingを利用したベクトル検索を使用しています。
ベクトル検索では、入力された文章と意味的に近い記載を探せます。
一方、施工要領書には、材料名、製品名、規格番号、工法名、寸法など、意味の近さだけでなく、特定の文字列が含まれていることが重要な情報も多くあります。
例えば、材料名や規格番号などは、意味的に近い別の表現を探すよりも、入力された文字列と同じ記載を見つけることが重要な場合があります。
そこで、ベクトル検索だけでなく、入力された語句との文字列一致でも候補を補完しています。
入力条件
↓
ベクトル検索で意味の近い記載を取得
↓
文字列一致で材料名や規格番号などを含む記載を補完
↓
同じセクションの重複を除いて表示
意味的に近い記載を探す検索と、固有名詞や規格番号などを正確に拾う検索を組み合わせることで、施工要領書に含まれる専門用語を取りこぼしにくくしています。
3. ページ情報を持たない構造化データから、参照用PDFの該当ページを推定した
検索元となる構造化データには、その記載がPDFの何ページにあったかという情報が含まれていません。
そのため、検索結果として該当するセクションが見つかっても、その記載が参照用PDFのどこにあるかは、そのままでは分かりません。
そこで、構造化データに含まれるセクションの本文と、PDF各ページから取得したテキストを比較し、該当するページを推定しています。
検索で見つかったセクションの本文
↓
本文から照合に使用する語句を抽出
↓
PDF各ページのテキストと比較
↓
最も一致するページを推定
セクションが複数ページにまたがる場合があるため、必要に応じて開始ページと終了ページをそれぞれ推定します。
推定したページ番号は、次の機能で利用します。
- 検索結果から参照用PDFの該当ページを開く
- 選択した項目に対応するページだけをPDFとして出力する
これにより、構造化データを使って検索しながら、必要な箇所を元のレイアウトで確認できます。
ただし、ページ番号はテキストの一致度から求めた推定値です。
画像中心のページや、構造化データとPDFで表記が大きく異なる場合は、正しく推定できない可能性があります。
今後の展開
今回は施工要領書を対象にしましたが、過去文書の一部を探し、新しい文書へ転用する業務であれば、ほかの文書にも応用できる可能性があります。
例えば、次のような文書です。
- 施工計画書
- 作業手順書
- 検査要領書
また、次のような機能も今後試してみたいと考えています。
- Wordの該当章だけを抽出する
- 工種や材料などの検索条件に重み付けを追加する
- 新しい文書を画面から登録できるようにする
まとめ
今回は、過去の施工要領書から類似する記載を検索し、内容の確認から元データの取得までを支援するRAGアプリを作成しました。
主な特徴は、次のとおりです。
- ベクトル検索と文字列検索を組み合わせ、専門用語や規格名を含む記載を探しやすくした
- ページ情報を持たない構造化データとPDFを照合し、該当ページを推定した
- 検索結果をWordやPDFで確認できるようにした
- 構造化前のWordやExcelを取得し、新しい施工要領書の作成に転用できるようにした
一般的なRAGでは、検索結果やAIの回答を画面上に表示して処理が終わることもあります。
一方、施工要領書の作成業務では、必要な記載を見つけるだけでなく、元のレイアウトを確認し、編集可能な元データへたどり着くことも重要です。
今回のアプリでは、検索結果をそのまま完成した施工要領書へ変換するのではなく、過去資料の中から参考になる箇所を見つけ、新しい施工要領書を作成するための元データを取得できるところまでを一連の流れとして実装しました。
今後は、施工計画書や作業手順書、検査要領書など、過去文書の一部を新しい文書へ転用する業務への展開も検討していきたいと考えています。









