すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:エンドツーエンド画像検索ソリューション

最終更新日:Aug 21, 2026

このトピックでは、既存のベクトルデータがない場合でも、OpenSearch Vector Search Edition を使用して画像検索サービスを迅速に構築する方法について説明します。

画像ソースデータを OpenSearch に直接インポートして画像をベクトル化し、ベクトル検索を実行できます。これにより、画像で検索やテキストから画像への検索など、さまざまな画像検索機能を実現できます。

ソリューションアーキテクチャ

画像をアップロードして画像検索エンジンを構築する方法は 4 つあります:

  • Object Storage Service (OSS) + MaxCompute + OpenSearch Vector Search Edition: 画像を OSS にアップロードします。次に、ビジネスデータと各データエントリに対応する画像パスを MaxCompute テーブルに保存します。画像パスは、/image/1.jpg などの OSS パスです。

  • MaxCompute + OpenSearch Vector Search Edition: Base64 エンコードされた画像と対応するテーブルデータを MaxCompute テーブルに保存します。

  • API + OpenSearch Vector Search Edition: データプッシュ API を呼び出して、Base64 エンコードされた画像と対応するテーブルデータを OpenSearch Vector Search Edition インスタンスにプッシュします。

  • Data Lake Formation (DLF) + OpenSearch Vector Search Edition: 画像データを DLF 2.0 Catalog のデータテーブルに移行します。

このトピックでは、OSS、MaxCompute、および OpenSearch Vector Search Edition を使用して画像検索エンジンを構築する方法を説明します。

前提条件

1. AccessKey ペアの作成

Alibaba Cloud アカウントをアクティブ化し、初めてコンソールにログインすると、続行する前に AccessKey ペアを作成するように求められます。

  • アプリケーションを作成して使用するには、Alibaba Cloud アカウントの AccessKey ペアが必要です。

  • Alibaba Cloud アカウントの AccessKey ペアを作成した後、サービスにアクセスするために RAM ユーザーの AccessKey ペアを作成することもできます。RAM ユーザーに必要なアクセス権限を付与する必要があります。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。

2. OSS バケットの作成

  1. OSS のアクティブ化

  2. OSS コンソールの使用開始

  3. OSS コンソールの使用開始

  1. opensearch タグを追加します。キーと値の両方を opensearch に設定します。

このトピックでは、OSS にアップロードされた 1,000 枚の画像を例として使用します。

以下は、一般的な画像タイプの一部です:

OpenSearch Vector Search Edition インスタンスの購入

インスタンスを購入するには、「OpenSearch Vector Search Edition インスタンスの購入」をご参照ください。

インスタンスの設定

[インスタンスリスト] ページで、新規購入したインスタンスを探します。インスタンスは設定保留中です。検索を実行する前に、インスタンスのテーブルを設定する必要があります。

1. 基本テーブル情報

設定の説明:

  • [テーブル名]: テーブルに設定する任意の名前です。

  • [データシャード数]: 256 以下の正の整数を入力します。シャーディングにより、フルビルドの速度と単一クエリのパフォーマンスが向上します。一部の既存のインスタンスでは、すべてのインデックステーブルが同じシャード数を持つ必要があります。または、1 つのインデックステーブルが単一のシャードを持ち、他のインデックステーブルが同じシャード数を持つ必要があります。

  • [データ更新用リソース数]: データ更新に使用されるリソースの数です。デフォルトでは、各インデックスに 2 つの 4 コア 8 GB の更新リソースが無料で提供されます。無料枠を超えるリソースには課金されます。詳細については、「Vector Search Edition の課金概要」をご参照ください。

  • シナリオテンプレート: [ベクトル: 画像検索] を選択します。

2. データ同期

フルデータソースには、MaxCompute + API を選択します。パラメータを順番に設定します。次のステップに進む前に、データソースが検証に合格する必要があります。

パラメータの説明:

  • AccessKey ID: Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID です。

  • AccessKey シークレット: AccessKey ID に対応する AccessKey シークレットです。

  • プロジェクト名 (Project): 対象の MaxCompute プロジェクトの名前です。

  • テーブル名 (Table): 対象の MaxCompute テーブルの名前です。

  • テーブルデータパーティション (Partition): MaxCompute データソースにはパーティションキーが必要です。例: ds=20170626

  • 自動再インデックス: 自動再インデックスを有効にするかどうかを指定します。有効にすると、データソースに変更が検出されたときに、システムがテーブルのインデックスを自動的に再構築します。

説明

自動再インデックスを有効にする場合は、done テーブルを作成する必要があります。詳細については、「自動再インデックス」をご参照ください。

3. フィールドの設定

Vector Search Edition は、選択したシナリオテンプレートに基づいてプリセットフィールドを提供します。また、フルデータソースからフィールドリストにフィールドを自動的にインポートします。次の図は、[ベクトル: 画像検索] テンプレートの 4 つのプリセットフィールドを示しています。

フィールド設定の説明:

  • [プリセットフィールド]: 1. id (プライマリキー)、2. source_image (ソース画像)、3. namespace (名前空間)、4. source_image_vector (ソース画像ベクトル)

  • 必須フィールド: プライマリキーフィールドとベクトルフィールドが必要です。プライマリキーフィールドは INT 型または STRING 型である必要があり、プライマリキーとして指定する必要があります。ベクトルフィールドは FLOAT 型である必要があり、ベクトルフィールドとして指定する必要があります。

  • デフォルトでは、ベクトルフィールドは複数値の FLOAT フィールドであり、その値はカンマ (,) で区切られます。任意の区切り文字を指定できます。

  • 画像のベクトル化が必要なフィールドについては、[データ前処理が必要] 列で [設定] を選択して、[source_image] プリセットフィールドを設定します。

  • フィールドは特定の順序で定義する必要があります:プライマリキーフィールド、名前空間フィールド (オプション)、ベクトルフィールドの順です (上図を参照)。

source_image フィールドのデータ前処理の設定の説明:

  • データソース: Object Storage Service (OSS) または Base64 エンコーディングを選択できます。

    • Object Storage Service (OSS): 画像は OSS フォルダーに保存され、直接インポートされます。OSS パスを指定する必要があります。

    • Base64 エンコーディング: 画像を最初にエンコードしてから、データベースに保存するか、API を使用して直接転送する必要があります。

  • 前処理テンプレート: 使用可能なテンプレートは、データタイプによって異なります。画像フィールドの場合、使用可能な前処理テンプレートは次のとおりです: 1. 画像のベクトル化、2. OCR 画像テキスト認識、3. OCR 画像テキスト認識 + 画像のベクトル化

  • サービスリスト:

    • 前処理テンプレートを選択すると、そのテンプレートのサービスリストが自動的に表示され、テンプレートで使用されるモデルタイプが表示されます。

    • モデルは 2 つのソースから利用できます:

      • 組み込みモデル: 利用できるモデルの種類は限られており、無料で呼び出すことができます。

      • AI Search Open Platform: 豊富なモデル機能を利用できます。呼び出し回数に基づいて課金されます。課金の詳細については、「課金方法と課金項目」をご参照ください。AI Search Open Platform を使用する前に、ワークスペースと API キーをアクティブ化する必要があります。

      • カスタムモデル: ユーザーが作成したカスタムモデルです。作成するには、「カスタムモデル」をご参照ください。

    • AI Search Open Platform OCR 画像テキスト認識/テキスト埋め込みサービス

      • OCR 画像テキスト認識: アーキテクチャ図や分析チャートなどの画像データに対して、AI Search Open Platform は画像内容理解サービスを提供します。このサービスは、大規模なマルチモーダルモデルを使用して、画像内のテキストを解析、理解、認識します。また、OCR 機能を使用して画像内のテキストを認識し、画像検索や Q&A ペアなどのシナリオで使用するテキスト情報を抽出することもできます。

      • テキスト埋め込み: このサービスは、テキストデータを密なベクトル表現に変換します。さまざまな言語、入力長、出力次元を持つ複数のテキスト埋め込みモデルをサポートします。情報検索、テキスト分類、類似性比較などのシナリオで使用できます。

  • 生成されたフィールド: モデルがソース画像データを処理した後、データは自動的に他の形式に変換され、新しいフィールドが生成されます。

    • 埋め込みを実行するサービスの場合、デフォルトで生成されたフィールドが必要です。

    • OCR サービスの場合、フィールドを生成するかどうかを選択できます。

  • API 呼び出しの設定: AI Search Open Platform に正常にアクセスするには、ワークスペース、API キー、接続ドメイン名を設定します。

4. インデックススキーマ

設定の説明:

  • ベクトルインデックス名は、ベクトルフィールド名と同じです。

  • 含まれるフィールドは、プライマリキーとベクトルフィールドです。名前空間フィールドはオプションです。

  • 必要に応じて詳細設定パラメータを設定します。詳細については、「ベクトルインデックスの一般的な設定」をご参照ください。

5. 作成の確認

[作成の確認] をクリックしてテーブルを作成します。左側のナビゲーションペインで、[ログレコード] > [変更履歴] を選択して、テーブル作成の進行状況を確認します。ステータスが「完了」に変わると、クエリテストを実行できます。

クエリテスト

1. コンソールでのクエリテスト

左側のナビゲーションペインで、[ベクトル管理] > [クエリテスト] を選択します。コンソールのクエリテスト機能は、フォームモードと開発者モードをサポートしています。コンソールでのクエリテストの使用方法の詳細については、「クエリテスト」をご参照ください。

1.1 フォームモード

[フォームモード] を選択してから、[テーブル名] を選択します。[クエリタイプ] では、この例では「画像」を選択します (ベクトル、テキスト、画像がサポートされています)。[画像プロバイダー] では、「画像ファイルのアップロード」を選択します。クエリ画像をアップロードした後、[検索] をクリックすると、結果が検索結果ペインに表示されます。

1.2 開発者モード

[開発者モード] を選択してから、[テーブル名] を選択します。検索ボックスにクエリパラメータを入力します。次に、[検索] をクリックすると、クエリ結果が右側の結果ペインに表示されます。

フィールドの説明:

  • vector: 検索対象のベクトルです。

  • topK: 取得する上位K件の結果数です。

  • includeVector: ドキュメント内のベクトル情報を返すかどうかを指定します。

詳細なクエリ構文については、以下の構文の説明をご参照ください。

2. SDK クエリ

クエリの例: 詳細については、「予測クエリ」をご参照ください。

結果:

{
    "totalCount": 5,
    "result": [
        {
            "id": 5,
            "score": 1.103209137916565
        },
        {
            "id": 3,
            "score": 1.1278988122940064
        },
        {
            "id": 2,
            "score": 1.1326735019683838
        }
    ],
    "totalTime": 242.615
}

result フィールドには、検索結果が含まれます。

構文の説明

SDK でのベクトル検索の使用