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

OpenSearch:ベクターベースのクエリ

最終更新日:Jul 26, 2025

説明

OpenSearch Vector Search Edition インスタンスにベクトルデータをインポートし、そのインスタンスを使用してベクターベースのクエリを実行できます。

: データをベクトルに変換するためのベクトルモデルがない場合は、OpenSearch Vector Search Edition の 画像のベクトル化 および テキストのベクトル化 機能を使用し、組み込みのベクトルモデルを使用してデータをベクトルに変換できます。その後、予測ベースのクエリ を実行できます。

URL

/vector-service/query

  • サンプル URL では、リクエストヘッダーやエンコーディングメソッドなどの情報は省略されています。

  • サンプル URL では、OpenSearch アプリケーションへの接続に使用するエンドポイントも省略されています。

  • 上記の URL に連結されているすべてのリクエストパラメーターの定義、使用方法、および値の例については、このトピックの「リクエストパラメーター」セクションをご参照ください。

プロトコル

HTTP

リクエストメソッド

POST

サポートされている形式

JSON

リクエスト署名

次の表のフィールドを使用して、リクエスト署名を計算できます。 リクエスト署名は 承認 ヘッダーに格納されます。

パラメーター

説明

accessUserName

STRING

ユーザー名。 インスタンスの詳細ページの [API エンドポイント] セクションでユーザー名を確認できます。

accessPassWord

STRING

パスワード。インスタンスの詳細ページの [API エンドポイント] セクションでパスワードを変更できます。

import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;

public class GenerateAuthorization {

 public static void main(String[] args) throws Exception {
 String accessUserName = "username";
 String accessPassWord = "password";
 String realmStr = "" + accessUserName + ":" + accessPassWord + "";
 String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
 System.out.println(authorization);
		}
}

[authorization] ヘッダーの値の有効な形式:

cm9vdDp******mdhbA==

HTTP リクエストで [authorization] ヘッダーを指定する場合は、Basic プレフィックスを追加します。

例:

authorization: Basic cm9vdDp******mdhbA==

リクエストパラメーター

パラメーター

説明

デフォルト値

必須

tableName

クエリ対象のテーブルの名前。

該当なし

STRING

はい

vector

クエリ対象のベクトルデータ。

該当なし

LIST[FLOAT]

はい

vectorCount

[vector] パラメーターで指定されたベクトルの数。

1

INT

いいえ

namespace

ベクトルデータの名前空間。

""

STRING

いいえ

topK

返される結果の数。

100

INT

いいえ

includeVector

ドキュメントにベクトル情報を返すかどうかを指定します。

false

BOOLEAN

いいえ

outputFields

返されるフィールド。

[]

LIST[STRING]

いいえ

order

デフォルトでは昇順でソートします。

ASC

STRING

いいえ

searchParams

データのクエリに使用されるパラメーター。

""

STRING

いいえ

filter

フィルター式。

""

STRING

いいえ

scoreThreshold

ドキュメントをフィルタリングするために使用されるしきい値スコア。スコアがユークリッド距離の二乗である場合、ユークリッド距離の二乗が [scoreThreshold] パラメーターの値よりも小さいドキュメントのみが返されます。スコアが内積である場合、内積が [scoreThreshold] パラメーターの値よりも大きいドキュメントのみが返されます。

デフォルトでは、結果はフィルタリングされません。

FLOAT

いいえ

sort

ソートの式。ベクトル類似性と他の検索を組み合わせる必要がある場合は、_vs_vector_score を使用します。たとえば、create_gmt と組み合わせるには、「-create_gmt;+_vs_vector_score_」のようにします。

""

string

sorts

多次元ソート。ソートを設定した後、結果のスコアは次元に合わせて変更されます。

order: 昇順 (ASC)、降順 (DESC)

[]

List<sort>

ソート:

パラメーター

説明

デフォルト

必須

order

昇順 (ASC)、降順 (DESC)

""

string

いいえ

expression

ソートの式。

""

string

いいえ

単一ベクトルを使用したクエリ

{
    "tableName": "gist",
    "vector": [
        0.1,
        0.2,
        0.3
    ],
    "topK": 3,
    "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
    "includeVector": true
}

名前空間ベースのクエリ

OpenSearch Vector Search Edition では、名前空間を使用してインデックスをパーティション分割できます。ベクトルインデックスに名前空間を設定した後、名前空間を指定してデータをクエリできます。このようにして、異なるクエリリクエストを送信することで、インデックスの異なるサブセットをクエリできます。

: ベクトルインデックスに名前空間を設定する場合は、データをクエリするときに名前空間を指定する必要があります。

{
    "tableName": "gist",
    "namespace": "space_b",
    "vector": [
        0.1,
        0.2
    ],
    "topK": 3,
    "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
    "includeVector": true
}

複数の名前空間を使用したクエリ

ベクトルインデックスに名前空間を設定する場合は、複数の名前空間のデータをクエリできます。

{
    "tableName": "gist",
    "queries": [
        {
            "vector": [
                0.1,
                0.2,
                0.3
            ],
            "namespace": "space_a"
        },
        {
            "vector": [
                0.4,
                0.5,
                0.6
            ],
            "namespace": "space_b"
        }
    ],
    "topK": 3,
    "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
    "includeVector": true
}

フィルター条件を使用したクエリ

フィルター式 を使用して、データクエリのフィルター条件を指定できます。

{
    "tableName": "gist",
    "vector": [
        0.1,
        0.2
    ],
    "topK": 3,
    "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
    "filter": "a > 10",
    "includeVector": true,
    "outputFields": [
        "a",
        "b"
    ]
}

複数ベクトルを使用したクエリ

複数のベクトルを同時にクエリできます。OpenSearch はすべてのベクトルの結果をマージしてソートし、上位 K 件の結果を返します。次のサンプルコードは、2 つの2次元ベクトルを同時にクエリする方法の例を示しています。

{
    "tableName": "gist",
    "vector": [
        0.1,
        0.2,
        0.3,
        0.4
    ],
    "vectorCount": 2,
    "topK": 3,
    "searchParams":"{\"qc.searcher.scan_ratio\":0.01}",
    "includeVector": true,
    "outputFields": [
        "a",
        "b"
    ]
}

レスポンスパラメーター

パラメーター

説明

result

返された結果。

LIST[ITEM]

totalCount

結果の数。

INT

totalTime

応答時間。単位: ミリ秒。

FLOAT

errorCode

リクエストが失敗した場合に返されるエラーコード。

INT

errorMsg

リクエストが失敗した場合に返されるエラーメッセージ。

STRING

Item

パラメーター

説明

score

ベクトルのスコア。

FLOAT

fields

フィールドと対応する値。

MAP<STRING, FieldType>

vector

ベクトル値。

LIST[FLOAT]

id

プライマリキー値。値は定義されたデータ型です。

FieldType

namespace

ベクトルの名前空間。このパラメーターは、ベクトルに名前空間が設定されている場合に返されます。

STRING

:

{
    "result": [
        {
            "id": 1,
            "score": 1.0508723258972169,
            "vector": [
                0.1,
                0.2,
                0.3
            ]
        },
        {
            "id": 2,
            "score": 1.0329746007919312,
            "vector": [
                0.2,
                0.2,
                0.3
            ]
        },
        {
            "id": 3,
            "score": 0.980593204498291,
            "vector": [
                0.3,
                0.2,
                0.3
            ]
        }
    ],
    "totalCount": 3,
    "totalTime": 2.943
}