画像検索の例
この例では、TiDB のベクトル検索機能とマルチモーダル埋め込みモデルを組み合わせて、画像検索アプリを構築する方法を紹介します。
わずか数行のコードで、テキストと画像の両方を理解できる検索システムを作成できます。
- テキストから画像への検索: 「fluffy orange cat」のように、自然言語で欲しいものを説明してペットの写真を検索します
- 画像から画像への検索: 写真をアップロードして、品種、色、ポーズなどが視覚的に似ているペットを検索します
マルチモーダル埋め込みによるペット画像検索
前提条件
開始する前に、以下を用意してください。
- Python (>=3.10): Python 3.10 以降をインストールします。
- TiDB Cloud Starter インスタンス: TiDB Cloud で無料の TiDB Cloud Starter インスタンスを作成できます。
- Jina AI APIキー: Jina AI Embeddings から無料の APIキーを取得できます。
実行方法
Step 1. pytidb リポジトリをクローンする
pytidb は TiDB の公式 Python SDK であり、開発者が AI アプリケーションを効率的に構築できるよう設計されています。
git clone https://github.com/pingcap/pytidb.git
cd pytidb/examples/image_search/
Step 2. 必要なパッケージをインストールする
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r reqs.txt
Step 3. 環境変数を設定する
- TiDB Cloud コンソールで My TiDB ページに移動し、対象の TiDB Cloud Starter インスタンス名をクリックして概要ページを開きます。
- 右上の Connect をクリックします。接続ダイアログが表示され、接続パラメータが一覧表示されます。
- 以下のように、接続パラメータに従って環境変数を設定します。
cat > .env <<EOF
TIDB_HOST={gateway-region}.prod.aws.tidbcloud.com
TIDB_PORT=4000
TIDB_USERNAME={prefix}.root
TIDB_PASSWORD={password}
TIDB_DATABASE=test
JINA_AI_API_KEY={your-jina-ai-api-key}
EOF
Step 4. データセットをダウンロードして展開する
このデモでは、Oxford Pets dataset を使用して、検索用のペット画像をデータベースに読み込みます。
Linux/MacOS の場合:
# Download the dataset
curl -L -o oxford_pets.tar.gz "https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz"
# Extract the dataset
mkdir -p oxford_pets
tar -xzf oxford_pets.tar.gz -C oxford_pets
Step 5. アプリを実行する
streamlit run app.py
ブラウザを開いて http://localhost:8501 にアクセスします。
Step 6. データを読み込む
サンプルアプリでは、Load Sample Data ボタンをクリックして、いくつかのサンプルデータをデータベースに読み込めます。
また、Oxford Pets dataset のすべてのデータを読み込みたい場合は、Load All Data ボタンをクリックします。
Step 7. 検索する
- サイドバーで Search type を選択します。
- 探しているペットのテキスト説明を入力するか、犬または猫の写真をアップロードします。
- Search ボタンをクリックします。
関連リソース
- ソースコード: GitHub で見る
