画像検索の例
この例では、TiDBのベクトル検索機能とマルチモーダル埋め込みモデルを組み合わせることで、画像検索アプリを構築する方法を示します。
ほんの数行のコードで、テキストと画像の両方を理解する検索システムを作成できます。
- テキストから画像への検索:例えば「ふわふわのオレンジ色の猫」のように、自然言語でペットの写真を説明することで、ペットの写真を検索できます。
- 画像検索:写真をアップロードして、犬種、色、ポーズなど、視覚的に類似したペットを検索します。
マルチモーダル埋め込みによるペット画像検索
前提条件
始める前に、以下のものを用意してください。
- Python (>=3.10) : Python 3.10以降のバージョンをインストールしてください。
- TiDB Cloud Starterインスタンス: TiDB Cloudで無料のTiDB Cloud Starterインスタンスを作成できます。
- Jina AI API キー: Jina AI埋め込みから無料の API キーを取得できます。
実行方法
ステップ1. pytidbリポジトリをクローンする
pytidbはTiDBの公式Python SDKであり、開発者がAIアプリケーションを効率的に構築できるよう設計されています。
git clone https://github.com/pingcap/pytidb.git
cd pytidb/examples/image_search/
ステップ2. 必要なパッケージをインストールします
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r reqs.txt
ステップ3.環境変数を設定する
- TiDB Cloudコンソールで、私のTiDBページに移動し、ターゲットのTiDB Cloud Starterインスタンスの名前をクリックして、その概要ページに移動します。
- 右上隅の「接続」をクリックします。接続ダイアログが表示され、接続パラメータが表示されます。
- 接続パラメータに応じて環境変数を以下のように設定してください。
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
ステップ4.データセットをダウンロードして解凍する
オックスフォード・ペットデータセットを使用して、ペット画像をデータベースに読み込んで検索するデモです。
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
ステップ5. アプリを実行する
streamlit run app.py
ブラウザを開いてhttp://localhost:8501にアクセスしてください。
ステップ6.データの読み込み
サンプルアプリでは、 「サンプルデータの読み込み」ボタンをクリックすると、サンプルデータがデータベースに読み込まれます。
または、オックスフォード・ペット・データセットのすべてのデータを読み込みたい場合は、 「すべてのデータを読み込む」ボタンをクリックしてください。
ステップ7. 検索
- サイドバーで検索タイプを選択してください。
- 探しているペットの説明文を入力するか、犬または猫の写真をアップロードしてください。
- 検索ボタンをクリックしてください。
関連リソース
- ソースコード: GitHubでビュー
