Use a operação QueryVectors para realizar uma busca por similaridade de vetores.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais, enquanto um usuário RAM ou função RAM não tem nenhuma. O proprietário da conta Alibaba Cloud ou um administrador deve conceder permissões usando uma política do RAM ou uma política de bucket.
|
API |
Ação |
Descrição |
|
QueryVectors |
|
Consulta dados vetoriais. |
Sintaxe da solicitação
A taxa de recall das chamadasQueryVectorspode ser baixa por até 30 segundos após a criação de um índice vetorial. Os dados gravados com a operaçãoPutVectorsficam disponíveis para consulta em aproximadamente 2 a 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
}
Cabeçalhos da solicitação
Esta operação usa apenas cabeçalhos de solicitação comuns. Para mais informações, consulte Cabeçalhos HTTP comuns.
Parâmetros da solicitação
Parâmetro | Tipo | Obrigatório | Exemplo | Descrição |
indexName | String | Sim | vectorindex1 | Nome do índice vetorial. |
queryVector | Container | Sim | N/A | Vetor de consulta. A dimensão deve corresponder à do índice vetorial. |
filter | Container | Não | N/A | Filtra dados com base em metadados. As seguintes restrições se aplicam aos filtros de metadados:
|
returnDistance | Boolean | Não | false | Defina se a distância de similaridade deve ser retornada. Valores válidos:
|
returnMetadata | Boolean | Não | false | Defina se os metadados devem ser retornados. Valores válidos:
|
topK | Number | Sim | 10 | Número de resultados mais similares a retornar. O valor deve ser um inteiro entre 1 e 500. |
Operadores de filtro
|
Operador |
Tipo |
Descrição |
|
|
String, Number, Boolean |
Correspondência exata (para um único valor). Em metadados do tipo array, o operador retorna |
|
|
String, Number, Boolean |
Corresponde a valores diferentes do especificado. |
|
|
Number |
Maior que. |
|
|
Number |
Maior ou igual a. |
|
|
Number |
Menor que. |
|
|
Number |
Menor ou igual a. |
|
|
Array não vazio de primitivos |
Corresponde a qualquer valor presente em um array (semelhante à operação |
|
|
Array não vazio de primitivos |
Não corresponde a nenhum valor no array (semelhante à operação |
|
|
Boolean |
Verifica se uma chave de metadados existe. |
|
|
Array não vazio de filtros |
Executa uma operação lógica AND em um array de condições de filtro. |
|
|
Array não vazio de filtros |
Executa uma operação lógica OR em um array de condições de filtro. |
Exemplos de filtro
Veja a seguir exemplos comuns de expressões de filtro. Se o operador for omitido, $eq será usado por padrão.
// 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"}}]}
// Multiple conditions on the same field (range)
{"score": {"$gte": 0.6, "$lte": 0.95}}
Cabeçalhos da resposta
Esta operação usa apenas cabeçalhos de resposta comuns. Para mais informações, consulte Cabeçalhos HTTP comuns.
Elementos da resposta
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
vectors |
Array de objetos |
/ |
Lista de resultados da busca vetorial. |
|
key |
String |
doc-001 |
Chave primária do vetor. Nó pai: vectors |
|
distance |
float32 |
0,25 |
Distância de similaridade entre o vetor retornado e o vetor de consulta. Um valor menor indica maior similaridade. Este parâmetro é retornado apenas quando Nó pai: vectors |
|
metadata |
Object |
/ |
Metadados completos do vetor. Retornado apenas quando Nó pai: vectors |
Exemplos
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
}
Resposta de exemplo
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
A operação QueryVectors está disponível nos seguintes SDKs:
ossutil CLI
Use o comando query-vectors na ferramenta de linha de comando ossutil para executar esta operação.
Códigos de erro
Código de erro | Código de status HTTP | Descrição |
VectorIndexParameterInvalid | 400 | A solicitação contém parâmetros de índice vetorial inválidos. |
MalformedJson | 400 | O formato JSON do corpo da solicitação é inválido. |
AccessDenied | 403 | Possíveis causas deste erro:
|
NoSuchVectorIndex | 404 | O índice vetorial especificado não existe. |
QpsLimitExceeded | 503 | A taxa de solicitações excedeu o limite de QPS. As solicitações estão sendo limitadas. |