【要約】Streamlitでナレッジグラフ作成に挑戦(Google Colaboratory対応) [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者が、既存のナレッジグラフエディタを学習者が利用しやすい環境へ移行させる際、以下の技術的課題に直面した。
- ・Colab環境でのネットワーク制約:Streamlitのlocalhost配信が、リモートのColabサーバー上では手元のブラウザからアクセスできない。
- ・編集機能の不足:元コードにはノードやエッジを削除する機能がなく、グラフの修正が困難であった。
- ・ライブラリの制約:streamlit-agraphがエッジのクリックイベントを返さないため、直感的なエッジ削除ができない。
- ・コードの保守性:スクリプトが単一のファイルに集約されており、構造の理解が難しい。
// Approach
筆者は、環境構築の容易化と編集機能の拡充を目指し、以下の手法で改修を行った。
- ・Colab対応の自動化:cloudflaredを導入し、トンネル経由で外部公開URLを自動抽出するデプロイ処理を実装した。
- ・グラフ操作機能の実装:NetworkXのremove_nodeを活用したノード削除と、エッジ情報を文字列一覧化して選択させる方式によるエッジ削除を追加した。
- ・コードの構造化:関数分割、型ヒント、docstringの付与を行い、責務を明確に分離した。
- ・描画パフォーマンスの最適化:st.cache_dataによる要素生成のキャッシュと、st.fragmentによる部分再実行を組み合わせた。
// Result
筆者は、初心者でもブラウザのみでグラフ編集が可能な環境を構築した。
- ・環境構築コストの削減:Colabとcloudflaredの連携により、ローカル環境の構築なしで即座に実行可能となった。
- ・編集精度の向上:ノード・エッジの削除機能により、GraphRAG等のデータ構築におけるHuman-in-the-loopが容易になった。
- ・実行速度の改善:キャッシュと部分再実行の導入により、グラフ操作時のUIレスポンスが向上した。
Senior Engineer Insight
> 本改修は、プロトタイピングにおける「開発体験(DX)」と「データ品質管理」の両面を鋭く突いている。特に、Colabでの実行をcloudflaredで解決するアプローチは、環境構築に時間を割けない研究者や学習者への提供価値が高い。また、st.fragmentを用いた部分再実行は、大規模グラフを扱う際のUIの重さを回避する実戦的な手法だ。ただし、エッジ削除を一覧選択式にするなどのUIの妥協は、操作性のトレードオフとして理解しておく必要がある。