背景
情報が溢れる現代では、ユーザーは膨大なデータの中から必要な情報を迅速に検索することが求められています。オンライン文献データベース、eコマースプラットフォームの商品カタログ、増え続けるマルチメディアコンテンツライブラリなど、効率的な検索システムが不可欠です。データ量が急増する中、従来のキーワードベースの検索手法では、検索精度と速度に対するユーザーの要求を満たせなくなりました。そこで登場したのがベクトル検索技術です。この技術は、テキスト、画像、音声など異なる種類のデータを数学的なベクトルに変換し、ベクトル空間で検索を行います。これにより、システムはデータの深層的な意味情報を捉え、より正確で効率的な検索結果を提供できます。
本記事では、OceanBaseのベクトル検索技術を活用して、あなただけの画像検索アプリケーションを構築します。
イメージ検索アプリケーションのアーキテクチャ
イメージ検索アプリケーションは、画像ライブラリをベクトル形式でデータベース内に格納します。ユーザーは対応するUI画面で検索したい画像をアップロードすると、アプリケーションがその画像をベクトルに変換し、データベース内で類似ベクトルを検索して結果を返します。最終的に、UIページ上に類似した画像が画像形式で表示されます。

前提条件
OceanBase V4.4.0以降のバージョンのクラスタをデプロイし、MySQLモードのテナントを作成していること。OceanBaseクラスタのデプロイに関する詳細は、デプロイの概要を参照してください。
作成したMySQLモードのテナントに挿入およびクエリの権限が付与されていること。権限設定の詳細については、直接権限付与を参照してください。
データベースを作成済みであること。データベースの作成に関する詳細は、データベースの作成を参照してください。
データベースでベクトル検索機能が有効になっていること。ベクトル検索機能の詳細については、SQLを使用した高速なベクトル検索を参照してください。
obclient> ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;必要な画像を準備しておくこと。テスト用の画像が十分にない場合は、各種オープンソースサイトの画像データセットを参考にすることができます。
Python 3.9以降のバージョンをインストールしておくこと。
Poetryをインストールしておくこと:
python3 -m ensurepip python3 -m pip install poetry
手順
コードリポジトリをクローンします。
git clone https://github.com/ob-labs/image-search.git cd image-search依存関係をインストールします。
poetry install環境変数を設定します。
cp .env.example .env # .envファイル内のデータベース情報を更新する vi .env.envの内容を更新します。
HF_ENDPOINT=https://hf-mirror.com DB_HOST="127.0.0.1" ## 対応するテナントのIPを設定 DB_PORT="2881" ## 対応するポートを設定 DB_USER="root@test" ## 対応するテナントとユーザー名を設定 DB_NAME="test" ## 対応するデータベース名を設定 DB_PASSWORD="" ## 対応するテナントユーザーのパスワードを設定用意した画像をサーバーにアップロードします。
画像検索プログラムを起動します。
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インターフェースを開きます。実際の状況に応じて、上記の手順5で対応するURLを開くことができます。
画像読み込み設定の画像読み込みディレクトリに、サーバー上の画像が保存されているディレクトリの絶対パスを入力します。
画像を読み込むをクリックします。
画像の読み込みが完了したら、画像検索を実行できます。
アプリケーションの表示
