Todos os produtos
Search
Central de documentação

DashVector:Recuperação filtrada com DashVector

Última atualização: Jun 29, 2026

A busca por similaridade de vetores, isoladamente, raramente atende aos requisitos reais. As aplicações geralmente precisam restringir resultados com base em metadados — por exemplo, retornar apenas produtos dentro de uma faixa de preço ou documentos de uma categoria específica. A filtragem condicional do DashVector permite associar campos de metadados a vetores e passar uma expressão filter durante a consulta. Assim, os resultados de similaridade incluem apenas os vetores correspondentes às condições definidas.

Início rápido

Este exemplo consulta uma coleção para encontrar homens com mais de 18 anos e peso superior a 65 kg:

docs = collection.query(
    [0.1, 0.1, 0.1, 0.1],
    topk=10,
    filter='age > 18 and weight > 65.0 and male = true'
)

O parâmetro filter aceita uma expressão booleana construída com operadores de comparação, string e lógicos. Para a sintaxe completa, consulte Sintaxe de expressão de filtro.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma chave de API e um endpoint de cluster do DashVector

  • Uma coleção chamada quickstart. Para instruções de configuração, consulte a seção "Exemplo" em Crie uma coleção

Inserir documentos com campos de metadados

Insira documentos na coleção quickstart. Cada documento inclui um ID, um vetor de 4 dimensões e um conjunto de campos de metadados:

import dashvector
import numpy as np

client = dashvector.Client(
    api_key='<your-api-key>',
    endpoint='<your-cluster-endpoint>'
)
collection = client.get(name='quickstart')

ret = collection.insert([
    ('1', np.random.rand(4), {'name': 'alice', 'age': 10, 'male': True, 'weight': 35.0}),
    ('2', np.random.rand(4), {'name': 'bob', 'age': 20, 'male': False, 'weight': 45.0}),
    ('3', np.random.rand(4), {'name': 'carol', 'age': 30, 'male': True, 'weight': 75.0}),
    ('4', np.random.rand(4), {'name': 'dave', 'age': 5, 'male': False, 'weight': 18.0}),
    ('5', np.random.rand(4), {'name': 'eve', 'age': 40, 'male': True, 'weight': 70.0})
])
assert ret

Substitua os seguintes espaços reservados pelos valores reais:

Espaço reservado

Descrição

<your-api-key>

Sua chave de API do DashVector

<your-cluster-endpoint>

URL do endpoint do seu cluster

Nota

A coleção quickstart é criada com três campos predefinidos: name (str), weight (float) e age (int). Como o DashVector é livre de esquema, você pode adicionar campos não definidos na criação da coleção — como o campo male acima — ao inserir documentos.

Consultar com uma expressão de filtro

Passe uma string filter para collection.query() e restrinja os resultados. Este exemplo busca homens com mais de 18 anos e peso superior a 65 kg:

import dashvector

client = dashvector.Client(
    api_key='<your-api-key>',
    endpoint='<your-cluster-endpoint>'
)
collection = client.get(name='quickstart')

# Filter: males over 18 weighing more than 65 kg
docs = collection.query(
    [0.1, 0.1, 0.1, 0.1],
    topk=10,
    filter='age > 18 and weight > 65.0 and male = true'
)
print(docs)

Sintaxe de expressão de filtro

Uma expressão de filtro consiste em uma ou mais condições unidas por operadores lógicos. Cada condição segue o padrão:

<field> <operator> <value>

Operadores de comparação

Operador

Descrição

Tipos suportados

Exemplo

Corresponde quando

<

Menor que

int, float

age < 10

age é menor que 10

<=

Menor ou igual a

int, float

weight <= 60.0

weight é no máximo 60.0

=

Igual a

int, float, bool, str

name = 'alice'

name é igual a alice

!=

Diferente de

int, float, bool, str

male != true

male não é verdadeiro

>=

Maior ou igual a

int, float

age >= 10

age é pelo menos 10

>

Maior que

int, float

weight > 60.0

weight excede 60.0

Operador de string

Use o operador like para correspondência de prefixo em campos str.

Operador

Descrição

Exemplo

Corresponde quando

like

Correspondência de prefixo

name like 'al%'

name começa com al

Operadores lógicos

Combine várias condições com and ou or.

Operador

Descrição

Exemplo

Corresponde quando

and

Ambas as condições devem ser verdadeiras

age > 18 and male = true

age excede 18 e male é verdadeiro

or

Pelo menos uma condição deve ser verdadeira

age < 10 or age > 60

age é menor que 10 ou maior que 60

Use parênteses () para controlar a ordem de avaliação. Exemplo:

age > 18 and (weight > 65.0 or male = true)

Essa expressão avalia primeiro (weight > 65.0 or male = true) e depois combina o resultado com age > 18.

Tipos de campo suportados

Os campos do DashVector suportam os seguintes tipos de dados Python:

Tipo

Descrição

Intervalo

str

String

--

int

Inteiro

32 bits com sinal: -2.147.483.648 a 2.147.483.647

float

Número de ponto flutuante

--

bool

Booleano

True ou False

Importante

Inteiros em Python têm tamanho ilimitado, mas o DashVector suporta apenas inteiros com sinal de 32 bits. Mantenha os valores inteiros dentro do intervalo de -2.147.483.648 a 2.147.483.647 para evitar estouro.