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?

8日目〜StreamlitのUIでSQLを見えるようにしてみる〜

Posted at

ChromaDBを使った文書管理システムの構築と可視化

2. プロジェクトの説明

ディレクトリ構造

chroma-test-project/
├── app.py               # FastAPI用のメインアプリケーション
├── streamlit_app.py     # Streamlitによるビューアーアプリケーション
├── requirements.txt     # 必要なパッケージの一覧
├── chroma_db/          # ChromaDBのデータ保存ディレクトリ
└── venv/               # Python仮想環境

各ファイルの役割

  1. app.py

    • FastAPIを使用したバックエンドAPI
    • ドキュメントの追加・検索機能を提供
    • エンドポイント:
      • /: サーバー状態確認
      • /add_document: 文書の追加
      • /search: 類似文書の検索
  2. streamlit_app.py

    • ChromaDBのデータを可視化するWebインターフェース
    • 4つの主要機能:
      • コレクション情報の表示
      • ドキュメント一覧の表示
      • SQLiteテーブルの閲覧
      • 埋め込みベクトルの可視化
  3. requirements.txt

fastapi==0.115.6
uvicorn[standard]==0.34.0
chromadb==0.6.3
python-dotenv==1.0.1
streamlit==1.41.1
pandas==2.2.3

データの保存場所

ChromaDBはchroma_dbディレクトリにデータを保存します:

Ran tool

データは以下の2つの場所に保存されます:

  1. chroma.sqlite3

    • メタデータやインデックス情報を保存するSQLiteデータベース
    • コレクション設定や文書のメタデータを管理
  2. ff47ae48-966e-4abf-85af-9af82ac5d90b/ディレクトリ

    • 埋め込みベクトルやコレクション固有のデータを保存
    • 以下のファイルを含む:
      • data_level0.bin: ベクトルデータ
      • length.bin: 長さ情報
      • header.bin: ヘッダー情報
      • link_lists.bin: リンク情報

3. セットアップ手順

  1. 仮想環境の作成と有効化
python3 -m venv venv
source venv/bin/activate  # MacOS/Linux
  1. 必要なパッケージのインストール
pip install -r requirements.txt
  1. アプリケーションの起動
# FastAPIサーバーの起動
uvicorn app:app --reload

# 別のターミナルでStreamlitアプリケーションの起動
streamlit run streamlit_app.py

4. 使用方法

  1. FastAPI(http://127.0.0.1:8000

    • Swagger UI(/docs)で利用可能なAPIを確認
    • POSTリクエストで文書を追加
    • GETリクエストで類似文書を検索
  2. Streamlitビューアー(http://localhost:8501

    • コレクション情報:データベース内のコレクションの基本情報を表示
    • ドキュメント一覧:保存されている文書を表示(CSVエクスポート可能)
    • SQLiteテーブル一覧:データベースの生のテーブルを表示
    • 埋め込みベクトル:文書の埋め込みベクトルを視覚化

5. 注意点

  1. ChromaDB v0.6.0の仕様変更

    • コレクションのメタデータへの直接アクセスが制限
    • list_collections()の戻り値の変更に対応
  2. データの永続性

    • PersistentClientを使用してデータを永続化
    • アプリケーション再起動後もデータは保持
  3. セキュリティ

    • 開発環境での使用を想定
    • 本番環境では適切なセキュリティ対策が必要

以上が、今回実装したChromaDBを使用した文書管理システムの概要です。初学者の方でも理解しやすいように、各コンポーネントの役割と使用方法を説明しました。

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?