説明
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
}