OceanBaseのベクトル検索技術を利用して、独自の画像検索アプリケーションを構築します。
説明
このチュートリアルは、OB Cloudコンソールでもインタラクティブなチュートリアルとして公開されています。実際のOB Cloud環境で操作しながら体験することも可能です。OB Cloudコンソール にログインし、左側のナビゲーションバーから 実践チュートリアル をクリックすると、公開されているすべてのインタラクティブチュートリアルをご覧いただけます。
概念
- 画像検索:画像検索タスクとは、大規模な画像データベースから、指定された画像に最も類似する結果を検索することです。検索時に使用される画像特徴はベクトルデータベースに格納でき、高性能なインデックスストレージにより効率的な類似度計算が実現され、検索内容に一致する画像結果が返されます。例えば、顔認識などが該当します。
アーキテクチャ
画像検索アプリケーションでは、画像ライブラリをベクトル形式でデータベース内に保存します。ユーザーは対応するUI画面で検索したい画像をアップロードし、アプリケーションがその画像をベクトルに変換します。データベース内で類似ベクトルを検索して結果を返し、最終的にUIページ上に類似した画像を画像形式で表示します。
前提条件
環境に利用可能なトランザクション型(MySQL)クラスタインスタンスがあります。テナントの作成を参照してテナントを作成した後、以下の手順を実行してください。
環境に使用可能なMySQL互換モードのテナント、MySQLデータベース、およびデータベースアカウントが既に存在し、データベースアカウントに読み書き権限が付与されていること。作成が必要な場合は、詳細についてはアカウントの作成およびデータベースの作成(MySQL専用)に関するドキュメントをご参照ください。
プロジェクト管理者またはインスタンス管理者として、プロジェクト内のインスタンスに対する読み書き操作権限を持っていること。権限がない場合は、組織管理者に連絡して権限の追加を依頼してください。
Python 3.9以降のバージョンをインストールしていること。
Poetryをインストールしていること:
python3 -m ensurepip python3 -m pip install poetryベクトル検索機能を有効にするには、インスタンスのワークベンチで
ob_vector_memory_limit_percentageパラメータを設定していること。推奨設定値は30です。より正確にこのパラメータを設定する必要がある場合は、ob_vector_memory_limit_percentageに関するドキュメントを参照してこの値を計算してください。
ステップ1:データベース接続情報を取得する
ドロップダウンリストから、ID でクラスタインスタンスを選択します。
概要 ページに移動します。
接続をクリックし、接続文字列を取得 を選択します。
ポップアップウィンドウで、パブリックネットワークを使用 を選択します。
アクセスアドレスを取得し、現在のブラウザのIPアドレスを追加 を選択します。
データベース関連情報を入力し、**接続文字列をコピー**します。
ステップ2:画像検索アプリケーションを構築する
コードリポジトリのクローン
git clone https://gitee.com/oceanbase-devhub/image-search.git
cd image-search
依存関係のインストール
poetry install
環境変数の設定
cp .env.example .env
# .envファイル内のデータベース情報を更新します。DB_HOST、DB_PORT、DB_USER、DB_NAME、DB_PASSWORDフィールドが含まれます。
vi .env
UI検索インターフェースの起動
poetry run streamlit run --server.runOnSave false image_search_ui.py
期待される実行結果は次のとおりです:
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://xxx.xxx.xxx.xxx:8501
External URL: http://xxx.xxx.xxx.xxx:8501 # このリンクを開くことで画像検索アプリケーションにアクセスできます
アプリケーションの表示
ご自身でいくつかの画像を用意し、フォルダに配置してください。開いたUIで、画像読み込み設定 を更新します。画像読み込みディレクトリ には、サーバー上に保存されている画像のディレクトリの絶対パスを入力する必要があります。
テスト用の画像が十分にない場合は、各オープンソースサイトの画像データセットをご参照ください。