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

Elasticsearch:Alibaba Cloud Elasticsearch ベクトルエンジン ユーザーガイド

最終更新日:Feb 13, 2026

Alibaba Cloud Elasticsearch のベクトルエンジンは、大規模なベクトルデータを処理します。Elasticsearch の強力な検索機能とベクトル類似度計算を組み合わせています。推奨システム、画像検索、自然言語処理などに使用できます。この Topic では、Alibaba Cloud Elasticsearch ベクトルエンジンを効率的に使用する方法とベストプラクティスについて説明します。ベクトルエンジンは定期的に更新されます。最適なパフォーマンス、コスト効率、ユーザーエクスペリエンスを実現するために、Alibaba Cloud Elasticsearch の最新バージョンを使用してください。

前提条件

ES インスタンスが作成済みであること。インスタンスをまだ作成していない場合は、「クイックスタート:インスタンスの作成からデータ取得まで」をご参照のうえ、最新バージョンの Alibaba Cloud ES 8.x インスタンスを作成してください。

説明

ベクトルエンジンは、大量のオフヒープメモリを使用してベクトルインデックスをキャッシュします。適切なデータノードの仕様と数を選択するには、この Topic の後半にあるメモリ計算ガイダンスを使用して、オフヒープメモリの使用量を見積もってください。

操作手順

1. インデックスの作成

ベクトルデータストレージをサポートするインデックスを作成します。以下にインデックス定義の例を示します。

PUT /my_vector_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "my_vector": {
        "type": "dense_vector",
        "dims": 3
      },
      "my_text" : {
        "type" : "keyword"
      }
    }
  }
}
重要
  • number_of_shardsnumber_of_replicas の設定は、データ量とパフォーマンス要件によって異なります。

  • ベクトルデータを格納するには、dense_vector フィールドタイプを使用します。dims パラメーターをベクトルディメンションに設定します。

  • dense_vector フィールドタイプには多くのパラメーターがあります。詳細については、「Dense vector field type」をご参照ください。

2. データのインポート

Bulk API などのメソッドを使用して、Elasticsearch ベクトルインデックスにデータをインポートします。以下に例を示します。

PUT my_vector_index/_doc/1
{
  "my_text" : "text1",
  "my_vector" : [0.5, 10, 6]
}

PUT my_vector_index/_doc/2
{
  "my_text" : "text2",
  "my_vector" : [-0.5, 10, 10]
}
重要

ベクトルディメンションがインデックスで定義されたディメンションと一致することを確認してください。

3. ベクトル検索の実行

Elasticsearch のベクトル類似検索を使用して、クエリベクトルを指定することで最も類似したドキュメントを検索します。以下にクエリの例を示します。

GET my_vector_index/_search
{
  "knn": {
    "field": "my_vector",
    "query_vector": [-5, 9, -12],
    "k": 10,
    "num_candidates": 100
  },
  "fields": [ "my_text" ]
}

パラメーター

内容

k

(任意) 返される最近傍の数。この値は num_candidates 以下である必要があります。デフォルトでは、size 値と等しくなります。

num_candidates

(任意) 各シャードで考慮される最近傍候補の数。このパラメーターは、パフォーマンスと取得率に大きな影響を与えます。num_candidates の値を大きくすると取得率は向上しますが、パフォーマンスへの影響も大きくなります。この値は k より大きく、10,000 を超えることはできません。Elasticsearch は各シャードから num_candidates の結果を収集し、それらをマージして上位 k 件の結果を見つけます。num_candidates を増やすと、最終的な k 件の結果の精度が向上する傾向があります。デフォルト値は Math.min(1.5 * k, 10,000) です。

説明

このセクションでは、k および num_candidates パラメーターについて説明します。HNSW において、num_candidates はクエリの ef 値を指し、各シャード内で収集される num_candidates 個の最近傍ドキュメントを表します。一方、k は Elasticsearch が最終結果で返すドキュメントの数です。

ベクトル検索の追加機能は次のとおりです。

  • knn クエリは、filter、一致する doc の最小 score を設定するための similarity パラメーター、および nested フィールドをサポートします。

  • 複数の knn フィールドを一度にクエリすることをサポートします。

  • script を使用した正確な knn クエリをサポートします。

  • script を使用した rescore をサポートします。

  • 機能の完全なリストについては、「k-nearest neighbor (knn) search」をご参照ください。