コンフルエンスのドキュメントをSnowflakeで可視化してみた
先日、こちらのプレゼンテーションを拝見し、大変勉強になりました。
このようなドキュメント改善活動を進める中で、ドキュメントの状態を可視化するダッシュボードがあると面白いと思い、Snowflake上に作成してみました。
やりたいこと
ドキュメントの継続的な改善を促進するために、特にどのページを優先して更新すべきかを明確にする仕組みを作りたいです。以下のようにページを分類することで、メンテナンスの優先順位を定めるための目安を提供します。
-
活発なページ
閲覧数が多く、更新頻度も高いページです。多くの人が関心を持ち、メンテナンスも頻繁に行われているため、問題が発生しても早期に修正されることが期待されます。 -
安定したページ
閲覧数は多いものの、更新頻度は低いページです。関心のあるページですが、更新が少ないため、内容が古くなっている可能性があります。 -
見逃されたページ
更新頻度は高いものの、閲覧数が少ないページです。メンテナンスされているにもかかわらず、閲覧されていない場合、内容が見づらい、もしくはページのタイトルと内容が合致していないなど、構造的な問題が考えられます。 -
アーカイブ
閲覧数も更新頻度も低いページです。古い情報がそのままアーカイブとして置かれている可能性が高いです。
やったこと
コンフルエンス上に作成したドキュメントの情報をSnowflakeへロードし、加工をおこなった上でStreamlitで可視化します。
デモ動画はこちらです。
ページの統計情報の確認
Confluenceの各ページについて、閲覧回数、ユニークユーザ数、最終更新日からの経過日数を収集し、これらのページがどの分類に該当するかを可視化しました。これにより、メンテナンスが必要なページを簡単に特定できるようになります。
LLMによる自動のドキュメントレビュー
メンテナンスが必要と思われるページに対して、ページ本文の内容をLLMで自動レビューできます。投入するプロンプトはテンプレートで指定でき、あとから編集もできるようにしました。
RAGアプリケーション
ロードしたページ情報に基づき、対話的な検索を行えるRAGアプリケーションも構築できます。
パイプラインの処理詳細
コンフルエンスからのデータロード
今回はdlt(data load tool)を使用しました。
GithubActionなどでdltを実行することで、Snowflake上にコンフルエンスのデータを収集した結果が保管されます。
ロードしたページ情報の加工
dbtでロードしたページの統計情報を集計し、それぞれのページが上の4分類のどれに当たるのかを計算します。
作成されるテーブル | 説明 |
---|---|
recent_page_activity | 最近作成されたページの統計情報です。 |
outdated_page_activity | 古くなったページの統計情報です。 |
pages_html_to_markdown | ロードしたページの生HTMLをマークダウン化して、LLMで利用しやすい状態に加工したテーブルです。 |
embedded_pages | ページの本文をベクトル化したテーブルです。LLMによるドキュメントレビューやRAGのために使用できます。 |
Streamlitによる可視化
Streamlit in Snowflake上で、加工したページ統計情報の可視化やLLMによるレビュー画面、RAGアプリケーションを構築します。
おわりに
コードは以下のリポジトリに配置しました。
現実的には、このコードがそのまま使える現場はないと思っています。ドキュメント構造はプロジェクト固有のものであり、どのような分析をして、どのようにレビューをして、どのように改善していくべきかはプロジェクトごとに異なると考えられます。公開したコードでは、需要のありそうなコンフルエンス用のdlt sourceだけはリッチにテストしてありますので、よければフォークしてみてください!
Discussion