QueryVectors API を使用して、ベクター類似性検索を実行します。
権限
デフォルトでは、Alibaba Cloud アカウントにはすべての権限があります。一方、RAM ユーザーまたは RAM ロールには権限がありません。Alibaba Cloud アカウントの所有者または管理者は、RAM ポリシーまたはバケットポリシーを使用して権限を付与する必要があります。
|
API |
アクション |
説明 |
|
QueryVectors |
|
ベクターデータをクエリします。 |
リクエスト構文
ベクターインデックスの作成後、最大 30 秒間はQueryVectors呼び出しの再現率が低い場合があります。PutVectorsAPI を使用して書き込まれたデータは、約 2~3 秒でクエリ可能になります。
POST /?queryVectors HTTP/1.1
Host: examplebucket-123***456.cn-hangzhou-internal.oss-vectors.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
Content-type: application/json
{
"filter": {
"$and": [{
"type": {
"$in": ["comedy", "documentary"]
}
}, {
"year": {
"$eq": "2020"
}
}]
},
"indexName": "string",
"queryVector": {
"float32":[float]
},
"returnDistance": boolean,
"returnMetadata": boolean,
"topK": int
}
リクエストヘッダー
この操作では、共通 HTTP ヘッダーのみを使用します。詳細については、「共通 HTTP ヘッダー」をご参照ください。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
例 |
説明 |
|
indexName |
文字列 |
はい |
vectorindex1 |
ベクターインデックスの名前。 |
|
queryVector |
コンテナー |
はい |
N/A |
クエリベクター。ディメンションは、ベクターインデックスのディメンションと一致している必要があります。 |
|
filter |
コンテナー |
いいえ |
N/A |
メタデータに基づいてデータをフィルタリングします。メタデータフィルターには次の制限が適用されます:
|
|
returnDistance |
ブール値 |
いいえ |
false |
類似距離を返すかどうかを指定します。有効な値:
|
|
returnMetadata |
ブール値 |
いいえ |
false |
メタデータを返すかどうかを指定します。有効な値:
|
|
topK |
整数 |
はい |
10 |
返される、最も類似した結果の数。値は 1~500 の整数である必要があります。 |
フィルター演算子
|
演算子 |
タイプ |
説明 |
|
|
文字列、数値、ブール値 |
完全一致 (単一の値)。配列型のメタデータに対して使用した場合、配列内のいずれかの要素に値が一致すると、この演算子は |
|
|
文字列、数値、ブール値 |
指定した値と等しくない値に一致します。 |
|
|
数値 |
より大きい。 |
|
|
数値 |
以上。 |
|
|
数値 |
より小さい。 |
|
|
数値 |
以下。 |
|
|
空ではないプリミティブ配列 |
配列内のいずれかの値に一致します (SQL の |
|
|
空ではないプリミティブ配列 |
配列内のいずれの値にも一致しません (SQL の |
|
|
ブール値 |
メタデータキーが存在するかどうかを確認します。 |
|
|
空ではないフィルター配列 |
フィルター条件の配列に対して論理 AND 演算を実行します。 |
|
|
空ではないフィルター配列 |
フィルター条件の配列に対して論理 OR 演算を実行します。 |
|
|
空ではないフィルター配列 |
フィルター条件の配列に対して論理 NOR 演算を実行します。 |
フィルターの例
以下は、一般的なフィルター式の例です。演算子が省略された場合、デフォルトで $eq が使用されます。
// 単純な等価 (演算子を省略した場合は、$eq がデフォルトで使用されます)
{"category": "finance"}
// 明示的な等価/非等価
{"category": {"$eq": "finance"}}
{"category": {"$ne": "archived"}}
// 数値比較
{"created_year": {"$gt": 2023}}
{"created_year": {"$gte": 2024}}
{"created_year": {"$lt": 2026}}
{"created_year": {"$lte": 2025}}
// 配列の一致
{"language": {"$in": ["zh", "en"]}}
{"language": {"$nin": ["ja", "ko"]}}
// 存在チェック
{"author": {"$exists": true}}
// 論理的な組み合わせ
{"$and": [{"category": {"$eq": "finance"}}, {"created_year": {"$gte": 2024}}]}
{"$or": [{"category": {"$eq": "finance"}}, {"category": {"$eq": "tech"}}]}
{"$nor": [{"category": {"$eq": "finance"}}, {"category": {"$eq": "tech"}}]}
// 同一フィールドに対する複数条件 (範囲)
{"score": {"$gte": 0.6, "$lte": 0.95}}
レスポンスヘッダー
この操作では、共通 HTTP ヘッダーのみを使用します。詳細については、「共通 HTTP ヘッダー」をご参照ください。
レスポンス要素
|
パラメーター |
タイプ |
例 |
説明 |
|
vectors |
オブジェクトの配列 |
/ |
ベクター検索結果のリスト。 |
|
key |
文字列 |
doc-001 |
ベクターのプライマリキー。 親ノード: vectors |
|
distance |
float32 |
0.25 |
返されたベクターとクエリベクターの間の類似距離。この値が小さいほど、類似性が高いことを示します。このパラメーターは、 親ノード: vectors |
|
metadata |
オブジェクト |
/ |
ベクターの完全なメタデータ。このパラメーターは、 親ノード: vectors |
例
POST /?queryVectors HTTP/1.1
Host: examplebucket-123***456.cn-hangzhou-internal.oss-vectors.aliyuncs.com
Date: Thu, 17 Apr 2025 01:33:47 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218
Content-type: application/json
{
"filter": {
"$and": [{
"category": {
"$in": ["technology", "science"]
}
}, {
"year": {
"$eq": "2020"
}
}]
},
"indexName": "vectorindex1",
"queryVector": {
"float32": [0.15, 0.25, 0.35, 0.45, 0.55]
},
"returnDistance": true,
"returnMetadata": true,
"topK": 5
}
レスポンスの例
HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906****
Date: Thu, 17 Apr 2025 01:33:47 GMT
Connection: keep-alive
Server: AliyunOSS
Content-type: application/json
{
"vectors": [
{
"distance": 0.12,
"key": "doc-001",
"metadata": {
"category": ["technology", "ai"],
"title": "Introduction to Vector Search",
"year": "2020"
}
},
{
"distance": 0.25,
"key": "doc-003",
"metadata": {
"category": ["science"],
"title": "Advanced Vector Operations",
"year": "2020"
}
}
]
}
SDK
QueryVectors API は、次の SDK で使用できます:
ossutil CLI
この操作は、ossutil コマンドラインツールの query-vectors コマンドを使用して実行できます。
エラーコード
|
エラーコード |
HTTP ステータスコード |
説明 |
|
VectorIndexParameterInvalid |
400 |
リクエストに無効なベクターインデックスパラメーターが含まれています。 |
|
MalformedJson |
400 |
リクエストボディの JSON 形式が無効です。 |
|
AccessDenied |
403 |
このエラーの原因として、次の理由が考えられます:
|
|
NoSuchVectorIndex |
404 |
指定したベクターインデックスが存在しません。 |
|
QpsLimitExceeded |
503 |
リクエストレートが QPS 制限を超えました。リクエストはスロットリングされています。 |