メインコンテンツまでスキップ

セマンティック検索

セマンティックメディア検索は、任意で使用できる高度な機能です。ドローンメディアライブラリをエンベッドプロバイダーに接続し、ファイル名、タイトル、タグ、メモの文字列だけではなく、意味にもとづいてメディアを検索できるようにします。

ドローンメディアライブラリは、エンベッドのバックエンドとして Drone Media Library Embedding Provider を使用できます。プロバイダーは、コンピューター上でローカル実行することも、Modal(https://modal.com/) 上で実行することもできます。

プロバイダーの選択肢

すべてを自分のコンピューター上で実行したい場合は、ローカルモード を使用します。テストやオフライン/ローカルワークフローでは最もシンプルな選択肢ですが、初回のモデル読み込みには数分かかる場合があり、性能は使用するマシンに依存します。

GPU 対応のリモート計算環境で埋め込みプロバイダーを実行したい場合は、Modalモード を使用します。ローカルコンピューターが遅い場合、より一貫したインデックス作成環境が必要な場合、または複数のマシンで同じプロバイダーエンドポイントを使用したい場合に便利です。

プロバイダーをローカルで実行する

埋め込みプロバイダープロジェクトをクローンまたはダウンロードします。

git clone https://github.com/reddotdrone/drone-media-library-embedding-provider.git
cd drone-media-library-embedding-provider

API キーを設定します。change-me の代わりに自分の値を使用してください。

export DRONE_MEDIA_LIBRARY_EMBEDDING_API_KEY="change-me"

ローカルプロバイダーを起動します。

uv run drone-media-library-embedding-provider serve --host 127.0.0.1 --port 8765

ローカルエンドポイントは次のとおりです。

http://127.0.0.1:8765

ヘルスエンドポイントは公開されています。

http://127.0.0.1:8765/v1/health

モデル一覧と埋め込みエンドポイントには、Bearer トークンの API キーが必要です。

Modalでプロバイダーを実行する

まず Modalをインストールして設定し、プロバイダー API キー用の Modal secret を作成します。

modal secret create drone-media-library-embedding-provider \
DRONE_MEDIA_LIBRARY_EMBEDDING_API_KEY="change-me"

開発中に一時的に提供します。

uv run modal serve src/drone_media_library_embedding_provider/modal_app.py

常時利用するためにデプロイします。

uv run modal deploy src/drone_media_library_embedding_provider/modal_app.py

Modal がアプリを起動またはデプロイしたら、Modal の Web エンドポイントを Drone Media Library のプロバイダーエンドポイントとして使用します。現在のプロバイダーアプリは、local mode と同じ Bearer トークン API キーを検証します。

プロバイダーコードは、GPU 対応関数で Modal アプリを実行するように設定されています。デプロイで使用される正確な GPU 種別を確認する必要がある場合は、リリース前にプロバイダーリポジトリを確認してください。

対応モデル

現在、プロバイダーは次のモデル ID を公開しています。

openclip/xlm-roberta-base-ViT-B-32/laion5b_s13b_b90k
openclip/ViT-B-32/laion2b_s34b_b79k
mobileclip2/MobileCLIP2-S2/dfndr2b

設定 で選択モデルとして、これらのいずれかの値を使用します。迷う場合は、次から始めてください。

openclip/xlm-roberta-base-ViT-B-32/laion5b_s13b_b90k

セマンティック検索を有効にする

  1. 設定 を開きます。
  2. セマンティックメディア検索 をオンにします。
  3. プロバイダーエンドポイントを入力します。
    • ローカル例: http://127.0.0.1:8765
    • Modal 例: modal serve または modal deploy で表示される Modal Web エンドポイントを使用します。
  4. 選択モデルを入力します。
  5. DRONE_MEDIA_LIBRARY_EMBEDDING_API_KEY と一致する API キーを入力します。
  6. テストプロバイダー をクリックします。

プロバイダーに接続できる場合、設定ページに成功メッセージが表示されます。

プロバイダー API リファレンス

ドローンメディアライブラリのプロバイダーはHTTP API を使用します。

  • GET /v1/health: 公開ヘルスチェック。
  • GET /v1/models: モデル一覧。Bearer 認証が必要です。
  • POST /v1/embed/image: 画像埋め込み。Bearer 認証が必要です。
  • POST /v1/embed/text: テキスト埋め込み。Bearer 認証が必要です。

プロバイダーで DRONE_MEDIA_LIBRARY_EMBEDDING_API_KEY が設定されている場合、アプリの Settings でも同じ値を API キーとして送信する必要があります。

検索インデックスを作成する

  1. 検索インデックス を開きます。
  2. まだインデックスされていないメディアを処理するには、Index missing をクリックします。
  3. プロバイダーやモデルを変更した場合、または既存の結果を作り直したい場合は、すべてを再インデックス をクリックします。

初回のモデル読み込みには数分かかる場合があります。検索インデックスページには、indexed、pending、failed、not indexed のメディア行が表示されます。

メディアを検索する

インデックス作成後、ライブラリ に戻り、探したいメディアの種類を検索します。セマンティック検索結果には、動画と写真の両方が含まれる場合があります。

トラブルシューティング

プロバイダーテストに失敗する場合は、プロバイダーが実行中であること、エンドポイント、モデル、API キーが正しいことを確認してください。

インデックス作成時にセマンティック検索が無効と表示される場合は、Settings で セマンティックメディア検索 をオンにして、もう一度試してください。

特定のメディアのインデックス作成に失敗する場合は、元のファイルが存在することを確認したうえで、インデックスを再作成してください。