IFCをグラフに置き換えて、BIMに自然言語で聞けるようにする
IFCファイルは、小規模なものでも膨大な情報量をもつ構造であり、生成AIはすぐにハルシネーションを起こしてしまいます。2階建て・8部屋・机14個の小さなモデルであっても、IFCファイルにすると1.23MB・20,765行のテキストになります。
IFCファイルをグラフデータベース上に展開し、生成AIはグラフデータベースにクエリを発行することで正確な情報を取得、返答できる方法を検討・検証しました。
note / ハスキー犬 / 2024年12月23日[BIM×生成AI] IFCファイルを生成AIで扱うためのグラフデータベース活用の検証と考察IFCファイルをグラフデータベースに展開し、生成AIに自然言語で問い合わせられるかを検証した。その過程と結果をまとめた記事である。記事を読む- IFCを解析し、要素と関係をそのままグラフDBに展開
- 自然言語の質問は、LLMがCypherクエリに変換して実行
- 取れなかった質問も、原因がデータ側の登録漏れだと切り分け
下記はグラフDB、LLMの連携フローです。
各ステップに触れると、そこで何が起きているかが出ます
IFCはifcopenshellで解析してNeo4jに入れ、質問は毎回LLMがCypherクエリに直してからグラフに投げます。各ステップに触れると、そこで実際に何をしているかが出ます。
下記はLargeBuilding.ifc をifcopenshellで解析して抜き出した実データです。質問をクリックするとクエリ結果を元に構造情報を取得・可視化できます。
聞いてみる
LargeBuilding.ifc/ノード 128・関係 127 点は掴めます。凡例で種類を隠せます
元のIFCファイルは、公開サンプルの bim-whale-ifc-samples / LargeBuilding.ifc を使っています。
精度はIFCの作られ方に依存します。グラフに載っていない関係は、どれだけ質問を工夫しても取り出せません。実物件の規模ではノードが21,000件を超えるので、そこでもグラフを経由し続けるべきか、IFCへ直接クエリを投げる形に寄せるべきかは、次の検証テーマとして残っています。