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

OpenSearch:ベクトルインデックス

最終更新日:Jun 23, 2026

ベクトルインデックスは、アイテムやコンテンツをベクトルとして表現し、ベクトル距離に基づく Top-K 類似性検索をサポートします。

ベクトルインデックスの概要

ベクトル検索は、アイテムやコンテンツをベクトルとして表現し、ベクトルインデックスを構築します。1 つ以上のユーザーまたはアイテムのベクトルを入力して、ベクトル距離に基づいて Top-K のアイテムやコンテンツを取得できます。

ベクトルインデックスの設定

カテゴリなしのベクトル設定

{
  "table_name": "test_vector",
  "summarys": {
    "summary_fields": [
      "id",
      "vector_field"
    ]
  },
  "indexs": [
    {
      "index_name": "pk",
      "index_type": "PRIMARYKEY64",
      "index_fields": "id",
      "has_primary_key_attribute": true,
      "is_primary_key_sorted": false
    },
    {
      "index_name": "embedding",
      "index_type": "CUSTOMIZED",
      "index_fields": [
        {
          "boost": 1,
          "field_name": "id"
        },
        {
          "boost": 1,
          "field_name": "vector_field"
        }
      ],
      "indexer": "aitheta2_indexer",
      "parameters": {
        "enable_rt_build": "false",
        "min_scan_doc_cnt": "20000",
        "vector_index_type": "Qc",
        "major_order": "col",
        "builder_name": "QcBuilder",
        "distance_type": "SquaredEuclidean",
        "embedding_delimiter": ",",
        "enable_recall_report": "false",
        "is_embedding_saved": "false",
        "linear_build_threshold": "5000",
        "dimension": "128",
        "search_index_params": "{\"proxima.qc.searcher.scan_ratio\":0.01}",
        "searcher_name": "QcSearcher",
        "build_index_params": "{\"proxima.qc.builder.quantizer_class\":\"Int8QuantizerConverter\",\"proxima.qc.builder.quantize_by_centroid\":true,\"proxima.qc.builder.optimizer_class\":\"BruteForceBuilder\",\"proxima.qc.builder.thread_count\":10,\"proxima.qc.builder.optimizer_params\":{\"proxima.linear.builder.column_major_order\":true},\"proxima.qc.builder.store_original_features\":false,\"proxima.qc.builder.train_sample_count\":3000000,\"proxima.qc.builder.train_sample_ratio\":0.5}"
      }
    }
  ],
  "attributes": [
    "id",
    "vector_field"
  ],
  "fields": [
    {
      "field_name": "id",
      "field_type": "INTEGER"
    },
    {
      "user_defined_param": {
        "multi_value_sep": ","
      },
      "field_name": "vector_field",
      "field_type": "FLOAT",
      "multi_value": true
    }
  ]
}

カテゴリありのベクトル設定

{
  "table_name": "test_vector",
  "summarys": {
    "summary_fields": [
      "id",
      "vector_field",
      "category_id"
    ]
  },
  "indexs": [
    {
      "index_name": "pk",
      "index_type": "PRIMARYKEY64",
      "index_fields": "id",
      "has_primary_key_attribute": true,
      "is_primary_key_sorted": false
    },
    {
      "index_name": "embedding",
      "index_type": "CUSTOMIZED",
      "index_fields": [
        {
          "boost": 1,
          "field_name": "id"
        },
        {
          "field_name": "category_id",
          "boost": 1
        },
        {
          "boost": 1,
          "field_name": "vector_field"
        }
      ],
      "indexer": "aitheta2_indexer",
      "parameters": {
        "enable_rt_build": "false",
        "min_scan_doc_cnt": "20000",
        "vector_index_type": "Qc",
        "major_order": "col",
        "builder_name": "QcBuilder",
        "distance_type": "SquaredEuclidean",
        "embedding_delimiter": ",",
        "enable_recall_report": "false",
        "is_embedding_saved": "false",
        "linear_build_threshold": "5000",
        "dimension": "128",
        "search_index_params": "{\"proxima.qc.searcher.scan_ratio\":0.01}",
        "searcher_name": "QcSearcher",
        "build_index_params": "{\"proxima.qc.builder.quantizer_class\":\"Int8QuantizerConverter\",\"proxima.qc.builder.quantize_by_centroid\":true,\"proxima.qc.builder.optimizer_class\":\"BruteForceBuilder\",\"proxima.qc.builder.thread_count\":10,\"proxima.qc.builder.optimizer_params\":{\"proxima.linear.builder.column_major_order\":true},\"proxima.qc.builder.store_original_features\":false,\"proxima.qc.builder.train_sample_count\":3000000,\"proxima.qc.builder.train_sample_ratio\":0.5}"
      }
    }
  ],
  "attributes": [
    "id",
    "vector_field",
    "category_id"
  ],
  "fields": [
    {
      "field_name": "id",
      "field_type": "INTEGER"
    },
    {
      "user_defined_param": {
        "multi_value_sep": ","
      },
      "field_name": "vector_field",
      "field_type": "FLOAT",
      "multi_value": true
    },
    {
      "field_name": "category_id",
      "field_type": "INTEGER"
    }
  ]
}
重要
  • カテゴリを使用して、カテゴリ別のベクトル検索をサポートできます。たとえば、1 つの画像に複数のカテゴリを設定できます。カテゴリなしでインデックスを構築し、取得したベクトルをフィルタリングするだけでは、検索で結果が返されない場合があります。

  • 管理者モードでベクトルインデックスを設定する場合、build_index_params パラメーターと search_index_params パラメーターの内容のエスケープ解除をする必要があります。

フィールドの説明

  • field_name:ベクトルインデックスを構築するためのフィールド。プライマリキー (またはそのハッシュ値) とベクトルフィールドの少なくとも 2 つのフィールドを含める必要があります。プライマリキーの値は整数である必要があります。カテゴリ別にインデックスを構築するには、整数値を持つカテゴリフィールドも追加する必要があります。index_fields 配列内のフィールドは、プライマリキー、カテゴリ (該当する場合) 、ベクトルの順序でなければなりません。

  • index_name:ベクトルインデックスの名前。

  • index_type:インデックスタイプ。CUSTOMIZED に設定する必要があります。

  • indexer:ベクトルインデックスを構築するためのプラグイン。aitheta2_indexer のみがサポートされています。

  • parameters:ベクトルインデックスのビルドおよびクエリパラメーター。

    • dimension:次元

    • embedding_delimiter:ベクトル要素の区切り文字。デフォルト:カンマ (,)。

    • distance_type:距離メトリック。サポートされている値:

      • Inner Product (内積)

      • SquaredEuclidean (二乗ユークリッド距離) :正規化されたデータにはこのタイプを使用します。

    • major_order:データストレージ形式。サポートされている値:

      • col (列ストア) :パフォーマンスを向上させるには、この形式を使用します。次元は 2 のべき乗である必要があります。

      • row (行ストア) :これはデフォルトの形式です。

    • builder_name:インデックスビルダーのタイプ。推奨されるタイプは以下のとおりです。詳細なパラメーターについては、お問い合わせください。

      • QcBuilder

      • LinearBuilder (線形ビルド) :ドキュメント数が 10,000 未満の場合に推奨されるビルダーです。

    • searcher_name:インデックスサーチャーのタイプ。builder_name の値に対応している必要があります。GPU サポートについては、お問い合わせください。

      • QcSearcherQcBuilder に対応する CPU ベースのサーチャー。

      • LinearSearcherLinearBuilder に対応する CPU ベースの総当たりサーチャー。

    • build_index_params:インデックスビルドパラメーター。builder_name の値に対応します。詳細については、「Quantized Clustering (QC) の設定」をご参照ください。

    • search_index_params:インデックス検索パラメーター。searcher_name の値に対応します。詳細については、「search_index_params」をご参照ください。

    • linear_build_threshold:線形ビルドのしきい値。ドキュメント数がこの値を下回る場合、LinearBuilderLinearSearcher を使用します。デフォルト:10,000。線形ビルドはメモリを節約し、ロスレスな検索を提供しますが、大規模なデータセットではパフォーマンスが低下します。

    • min_scan_doc_cnt:検索の候補セット内のドキュメントの最小数。デフォルト:10,000。proxima.qc.searcher.scan_ratio と同様です。両方が設定されている場合は、大きい方の値を使用します。

      • scan_ratio または min_scan_doc_cnt の値は、大きくすればするほど良いというわけではありません。値が大きすぎると、パフォーマンスに大きな影響を与え、レイテンシーが増加する可能性があります。

      • 一般的に、Top-K ベクトルを取得するための min_scan_doc_cnt の推奨値は max(10000, 100 * topk) です。scan_ratio の推奨値は max(10000, 100 * topk) / total_doc_cnt です。具体的な値は、データサイズ、再現率、およびパフォーマンス要件によって異なります。

      • これら 2 つの類似したパラメーターは、リアルタイムおよび複数カテゴリのシナリオの要件を満たすために用意されています。ほとんどの場合、scan_ratio を設定するだけで十分です。

    • enable_recall_report:再現率メトリクスをレポートするかどうか。デフォルト:false

    • is_embedding_saved:元のベクトルを保存するかどうか。デフォルト:falseINT8/FP16 の量子化とリアルタイム検索を有効にする場合は、true に設定する必要があります。そうしないと、バッチ増分ビルドが失敗します。

    • enable_rt_build:リアルタイムインデックス作成を有効にするかどうか。デフォルト:false

    • ignore_invalid_doc:無効なベクトルデータを無視するかどうか。デフォルト:true

    • rt_index_params:リアルタイムインデックスパラメーター。enable_rt_buildtrue の場合に適用されます。例:

      {
        "proxima.oswg.streamer.segment_size": 2048
      }