Use la operación QueryVectors para ejecutar una búsqueda de similitud de vectores.
QueryVectors ejecuta una búsqueda de similitud de vectores en índices de modo Standard. Para los índices de modo Fusion, use la operación QueryVectorsFusion. Por compatibilidad con versiones anteriores, si el esquema de un índice de modo Fusion define únicamente un campo vectorial llamado float32, también puede seguir usando la operación QueryVectors para ejecutar la búsqueda.
Permisos
De forma predeterminada, una cuenta de Alibaba Cloud tiene permisos completos, mientras que un usuario o un rol de RAM no tiene ninguno. El propietario de la cuenta de Alibaba Cloud o un administrador debe otorgar permisos mediante un RAM policy o un bucket policy.
|
API |
Acción |
Descripción |
|
QueryVectors |
|
Consulta datos vectoriales. |
Sintaxis de la solicitud
La tasa de recuperación de las llamadas aQueryVectorspuede ser baja durante los primeros 30 segundos después de crear un índice vectorial. Los datos escritos mediante la operaciónPutVectorsestán disponibles para consulta en aproximadamente 2 o 3 segundos.
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
}
Encabezados de solicitud
Esta operación usa únicamente los encabezados de solicitud comunes. Para obtener más información, consulte Common HTTP headers.
Parámetros de solicitud
|
Parámetro |
Tipo |
Obligatorio |
Ejemplo |
Descripción |
|
indexName |
String |
Sí |
vectorindex1 |
El nombre del índice vectorial. |
|
queryVector |
Container |
Sí |
N/A |
El vector de consulta. La dimensión debe coincidir con la del índice vectorial. |
|
filter |
Container |
No |
N/A |
Filtra los datos con base en los metadatos. A continuación se describen los límites aplicables a los filtros de metadatos:
|
|
returnDistance |
Boolean |
No |
false |
Indica si se devuelve la distancia de similitud. Valores válidos:
|
|
returnMetadata |
Boolean |
No |
false |
Indica si se devuelven los metadatos. Valores válidos:
|
|
topK |
Number |
Sí |
10 |
La cantidad de resultados más similares que se devuelven. El valor debe ser un número entero entre 1 y 500. |
Operadores de filtro
|
Operador |
Tipo |
Descripción |
|
|
String, Number, Boolean |
Coincidencia exacta (para un solo valor). Cuando se aplica a metadatos de tipo arreglo, el operador devuelve |
|
|
String, Number, Boolean |
Coincide con los valores distintos al especificado. |
|
|
Number |
Mayor que. |
|
|
Number |
Mayor o igual que. |
|
|
Number |
Menor que. |
|
|
Number |
Menor o igual que. |
|
|
Arreglo no vacío de tipos primitivos |
Coincide con cualquier valor de un arreglo (similar a la operación |
|
|
Arreglo no vacío de tipos primitivos |
No coincide con ninguno de los valores del arreglo (similar a la operación |
|
|
Boolean |
Comprueba si existe una clave de metadatos. |
|
|
Arreglo no vacío de filtros |
Aplica una operación lógica AND sobre un arreglo de condiciones de filtro. |
|
|
Arreglo no vacío de filtros |
Aplica una operación lógica OR sobre un arreglo de condiciones de filtro. |
|
|
Arreglo no vacío de filtros |
Aplica una operación lógica NOR sobre un arreglo de condiciones de filtro. |
Ejemplos de filtros
A continuación se muestran algunos ejemplos comunes de expresiones de filtro. Si se omite el operador, se usa $eq de forma predeterminada.
// Simple equality (uses $eq by default when the operator is omitted)
{"category": "finance"}
// Explicit equality / inequality
{"category": {"$eq": "finance"}}
{"category": {"$ne": "archived"}}
// Numeric comparison
{"created_year": {"$gt": 2023}}
{"created_year": {"$gte": 2024}}
{"created_year": {"$lt": 2026}}
{"created_year": {"$lte": 2025}}
// Array matching
{"language": {"$in": ["zh", "en"]}}
{"language": {"$nin": ["ja", "ko"]}}
// Existence check
{"author": {"$exists": true}}
// Logical combination
{"$and": [{"category": {"$eq": "finance"}}, {"created_year": {"$gte": 2024}}]}
{"$or": [{"category": {"$eq": "finance"}}, {"category": {"$eq": "tech"}}]}
{"$nor": [{"category": {"$eq": "finance"}}, {"category": {"$eq": "tech"}}]}
// Multiple conditions on the same field (range)
{"score": {"$gte": 0.6, "$lte": 0.95}}
Encabezados de respuesta
Esta operación usa únicamente los encabezados de respuesta comunes. Para obtener más información, consulte Common HTTP headers.
Elementos de respuesta
|
Parámetro |
Tipo |
Ejemplo |
Descripción |
|
vectors |
Arreglo de objetos |
/ |
Una lista con los resultados de la búsqueda vectorial. |
|
key |
String |
doc-001 |
La clave principal del vector. Nodo padre: vectors |
|
distance |
float32 |
0.25 |
La distancia de similitud entre el vector devuelto y el vector de consulta. Un valor menor indica mayor similitud. Este parámetro se devuelve únicamente cuando Nodo padre: vectors |
|
metadata |
Object |
/ |
Los metadatos completos del vector. Este parámetro se devuelve únicamente cuando Nodo padre: vectors |
Ejemplos
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
}
Respuesta de ejemplo
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
La operación QueryVectors está disponible en los siguientes SDK:
ossutil CLI
Use el comando query-vectors de la herramienta de línea de comandos ossutil para ejecutar esta operación.
Códigos de error
|
Código de error |
Código de estado HTTP |
Descripción |
|
VectorIndexParameterInvalid |
400 |
La solicitud contiene parámetros de índice vectorial no válidos. |
|
MalformedJson |
400 |
El formato JSON del cuerpo de la solicitud no es válido. |
|
AccessDenied |
403 |
Entre las posibles causas de este error se incluyen las siguientes:
|
|
NoSuchVectorIndex |
404 |
El índice vectorial especificado no existe. |
|
QpsLimitExceeded |
503 |
La tasa de solicitudes superó el límite de QPS. Las solicitudes se están limitando. |