0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

9日目 streamlitでSQLを見えるように

Posted at

はい、まとめて記事を出力します。

ChromaDBを使って初めてのドキュメント管理アプリを作ってみた!

はじめに

こんにちは!今回は、ChromaDBとStreamlitを使って、マークダウンファイルを管理・検索できるアプリケーションを作ってみました。ベクトルデータベースの勉強を兼ねて、実践的なアプリケーションを作る過程で学んだことを共有したいと思います。

🌟 完成したもの

  • マークダウンファイルのアップロード(単一/フォルダ一括)
  • ドキュメントの全文検索
  • コレクション管理
  • 埋め込みベクトルの可視化
  • SQLiteデータの直接閲覧

🔧 使用した技術

  • Python 3.x
  • ChromaDB:ベクトルデータベース
  • Streamlit:Web UI作成
  • Pandas:データ処理
  • SQLite3:データベース操作

💡 アプリケーションの特徴

1. シンプルなUI

menu = st.sidebar.selectbox(
    "メニュー",
    ["コレクション", "ドキュメント", "SQLite", "ベクトル"]
)

サイドバーで4つの主要機能に簡単にアクセスできます。

2. 柔軟なファイルアップロード

if upload_type == "フォルダ一括":
    folder_path = st.text_input(
        "マークダウンファイルが含まれるディレクトリのパスを入力",
        placeholder="/path/to/markdown/files",
        help="指定したディレクトリ内のすべての.mdファイルが処理されます"
    )

フォルダ内の全マークダウンファイルを一括処理できます。

3. メタデータの自動付与

metadata = {
    "category": "ドキュメント",
    "file_name": filename,
    "upload_date": pd.Timestamp.now().strftime("%Y-%m-%d %H:%M:%S")
}

ファイル名や日時を自動で記録します。

🎓 学んだこと

1. ChromaDBの基本

  • PersistentClientを使用したデータの永続化
  • コレクションによるドキュメント管理
  • 埋め込みベクトルの扱い方

2. Streamlitのテクニック

  • キャッシュを使用したデータベース接続
  • 動的なUIの構築
  • データフレームの表示とフィルタリング

3. エラーハンドリング

try:
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
except Exception as e:
    st.error(f"ファイル {file} の読み込みに失敗しました: {str(e)}")

適切なエラーメッセージで使いやすさを向上。

🔍 ハマったポイントと解決策

  1. ChromaDBのバージョン対応

    • v0.6.0で一部APIが変更
    • ドキュメントを参照しながら最新の書き方に対応
  2. 大量ファイルの処理

    • メモリ使用量に注意
    • ファイル読み込みを逐次処理に変更
  3. UIの使いやすさ

    • フィードバックを明確に
    • 処理状況の可視化

📝 今後の改善点

  1. 検索機能の強化

    • 類似度検索の実装
    • メタデータによるフィルタリング
  2. パフォーマンスの最適化

    • 大規模データセット対応
    • 処理の非同期化

まとめ

ChromaDBとStreamlitを組み合わせることで、手軽にドキュメント管理システムを構築できました。ベクトルデータベースの基本的な使い方を学びながら、実用的なアプリケーションを作れたのは良い経験になりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?