QueryVectors を呼び出してベクトル類似検索を実行します。
権限
デフォルトでは、Alibaba Cloud アカウント (root ユーザー) はすべての権限を持ちますが、その RAM ユーザーおよび RAM ロールには権限が付与されていません。権限を付与するには、Alibaba Cloud アカウントの所有者または管理者が RAM ポリシー または バケットポリシー を使用する必要があります。
API | Action | 説明 |
QueryVectors |
| ベクトルデータをクエリします。 |
リクエスト構文
ベクトルインデックスを作成した直後の最初の 30 秒間は、QueryVectorsの取得率が低くなります。PutVectorsを使用してデータを書き込んだ後、約 2~3 秒でQueryVectorsによるクエリが可能になります。
POST /?queryVectors HTTP/1.1
Host: examplebucket-123***456.cn-hangzhou.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 ヘッダー」をご参照ください。
リクエストパラメーター
パラメーター | 型 | 必須 | 例 | 説明 |
indexName | String | はい | vectorindex1 | ベクトルインデックスの名前です。 |
queryVector | Container | はい | N/A | クエリベクトルです。ベクトルのディメンションは、対応するベクトルインデックスのディメンションと一致している必要があります。 |
filter | Container | いいえ | N/A | メタデータに基づいて検索結果をフィルターします。以下の制限が適用されます:
|
returnDistance | Boolean | いいえ | false | 類似度距離を応答に含めるかどうかを指定します。有効な値は以下のとおりです:
|
returnMetadata | Boolean | いいえ | false | メタデータを応答に含めるかどうかを指定します。有効な値は以下のとおりです:
|
topK | Integer | はい | 10 | 返す最も類似した結果の数です。値は 1~100 の範囲である必要があります。 |
フィルター演算子
演算子 | 型 | 説明 |
| String | 単一の値と一致します。メタデータフィールドが配列の場合、この演算子はその配列内の任意の要素と一致します。 |
| String | 等しくないことを示します。 |
| String 配列 | 配列内のいずれかの値と一致します(SQL の |
| String 配列 | 配列内のどの値とも一致しません(SQL の |
| Boolean | メタデータキーが存在するかどうかを確認します。 |
| 空でないフィルターの配列 | 2 つ以上のフィルター式からなる配列に対して論理積(AND)演算を実行します。 |
| 空でないフィルターの配列 | 2 つ以上のフィルター式からなる配列に対して論理和(OR)演算を実行します。 |
レスポンスヘッダー
この操作では、共通のレスポンスヘッダーのみを使用します。詳細については、「共通の HTTP ヘッダー」をご参照ください。
レスポンス要素
パラメーター | 型 | 例 | 説明 |
vectors | オブジェクトの配列 | / | 返されたベクトルオブジェクトの配列です。指定されたベクトルのプライマリキーが存在しない場合、その要素は応答から除外され、エラーは報告されません。 |
key | String | doc-001 | ベクトルのプライマリキーです。 親ノード:vectors |
distance | Float | 0.25 | 結果ベクトルとクエリベクトルとの類似度距離です。値が小さいほど類似度が高くなります。 親ノード:vectors |
metadata | Object | / | ベクトルの完全なメタデータです。 親ノード:vectors |
例
POST /?queryVectors HTTP/1.1
Host: examplebucket-123***456.cn-hangzhou.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": "ベクトル検索の概要",
"year": "2020"
}
},
{
"distance": 0.25,
"key": "doc-003",
"metadata": {
"category": ["science"],
"title": "高度なベクトル操作",
"year": "2020"
}
}
]
}SDK
QueryVectors 操作は、以下の SDK で利用可能です:
ossutil CLI
QueryVectors 操作に対応する ossutil コマンドは、query-vectors です。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
VectorIndexParameterInvalid | 400 | リクエストで指定されたベクトルインデックスパラメーターが無効です。 |
MalformedJson | 400 | リクエストボディが有効な JSON 形式ではありません。 |
AccessDenied | 403 | 以下のいずれかの理由により発生します:
|
NoSuchVectorIndex | 404 | 指定されたベクトルインデックスが存在しません。 |
QpsLimitExceeded | 503 | 秒間クエリ数 (QPS) が上限を超えています。リクエストの頻度がスロットルされています。 |