今回はNotebookLMを使用したデータベースのテーブル構造を教えてくれるチャットボットを検討してみたので紹介します。
はじめに
なぜこのようなことを始めたかというと、既存で作成されているアプリケーションに関わる時の大きなハードルとなるのがデータの持ち方であると思います。
特に数年のさまざまな機能が開発されているとテーブルの数も多くなり、定義書があっても、全容を把握するのは難しくなるでしょう。さらに追加の開発を行う際にテーブル定義の考慮もれにもつながる可能性があると思います。
そこでアプリケーション開発に途中から入った人がデータ構造の理解で躓かないようにするための解決策を検討してみました。
検討したこと
テーブル定義をAIの元データとして扱い、テーブル構造を理解する手助けをする仕組みを作ることを考えました。またアプリケーションの初期フェーズではなく、すでにある程度の数のテーブルが稼働している状態を想定しています。
また、新しいテーブルが増えた場合も、簡単に元データを更新できる仕組みを作りたいと考えました。
利用するもの
GoogleのNotebookLMを使用します。
NotebookLMを選んだ理由は、ファイルをアップロードするだけで簡単にRAGを組み込んだチャットボットを作成できる点と、Googleアカウントさえあればすぐに試せる点です。
DBの定義の抽出はDBeaverを使用します。
手順
1.DBのER図を抽出する
DBeaverで対象のデータベースのスキーマを右クリックし、「View Diagram」という項目をクリックするとER図が表示されます。

1.1 カラムの情報を追加する
標準の設定だとテーブル名やカラム名のみで、まだ出せる情報があるので下の歯車から設定を変更できます。
Attribute stylesの設定を変更することでNOT NULL制約やカラムの型定義、コメントなどが追加で表示されます。

1.2 適用して更新
1.3 PrintからPDFを出力
プリンターのアイコンをクリックし、左下のPDFボタンを押すとPDFが出力できます。
注意点としてはテーブル数が多くなるとPDFにした場合、一つのテーブルがページの境目で切れてしまう可能性があります。ページの途中で切れてしまうとNotebookLMが正しくテーブルの定義を認識できなくなる可能性があります。
その対策のため「Page attribute」からページサイズの設定から独自の縦幅と横幅を指定して全てが1ページに入るように広めに調整します。

2.NotebokLMにテーブル定義のPDFを読み込ませる
ここからは簡単で、先ほど作成したPDFをNotebookLMのソースとして入れるだけです。
2.1 マイノートブックから新規作成を選択

2.2 ソースを追加を選択

2.3 ソースをアップロードから1.3で出力したPDFを選択してアップロード
これだけで先ほど作成したDBのER図のPDFを読み込んでくれます。
実際使ってみた感想
テーブルの名前やカラムの名前、型の定義などは正確に応答してくれました。
また今回はカラム名に意味はない形で確認しましたが、実際のテーブルで試すとコメントを設定していなくてもカラム名からおよその利用用途を推測して回答をしてくれました。テーブルのカラム名をしっかりと決めているテーブルであれば、新規でコメントを追加しなくても参考にはなりますが用途がわかるのはすごいと思いました。
また、実際のデータを見て判断するわけではないので区分値など値の入力値の制約があるものはコメントにしっかりと記述することで実際の制限を回答してもらうこともできることを確認しました。
ただテーブル間の繋いでいる外部キーなどは、ソースが文字情報にされている関係か抜け落ちてしまうため「このテーブルとこのテーブルの関係を教えて」というような聞き方をしても回答してくれませんでした。
この方法を使用する場合、カラム名の統一や明確な命名規則が重要です。特に、命名規則を別のソースとしてテキストに追加すれば、NotebookLMに正しく認識させることができる可能性を上げることができます。命名例えば、外部キーの参照先のテーブル名とカラム名をアンダーバーでつなぐ(例:tablename_columnname)形式にすると、NotebookLMが関係性を理解しやすくなる可能性があります。
データの更新には、ローカルのファイルを再アップロードする必要があるため一定間隔でソースを更新する必要はあります。データベースのテーブル追加はそこまで頻繁に実行されることもないと思うので、1ヶ月に一度くらいの頻度で十分だと思います。
まとめ
NotebookLMを活用することで、 データベースのテーブル構造を簡単に調査できるチャットボット を作成できました。
・テーブル名・カラム名・型の定義は正確に回答
・カラム名から利用用途を推測することも可能
・コメントを充実させると、入力値制約も回答可能
・外部キーの関係は認識が難しいが、命名規則を工夫すれば精度向上の可能性あり
・データの更新は手動だが、頻度は低めで問題なし
既存のシステムに後から関わる際に、 データ構造の把握を効率化できるツールとして活用できる ので、ぜひ試してみてください!
※誤る可能性もあるので出力された内容は、しっかりと確認は必要です。