Todos os produtos
Search
Central de documentação

DashVector:Schema Free

Última atualização: Jun 29, 2026

O DashVector é schema-free por design. Ao inserir, atualizar ou fazer upsert de um documento, passe quaisquer pares de chave-valor no parâmetro fields. Não é necessário definir um schema antecipadamente.

collection.insert(
    Doc(
        id='1',
        vector=np.random.rand(4),
        fields={
            'name': 'zhangsan',
            'weight': 70.0,
            'age': 30,
            'anykey1': 'anyvalue',
            'anykey2': 1,
            'anykey3': True,
            'anykey4': 3.1415926
            ... ...
        }
    )
)
Nota

Cada campo adicional consome memória e recursos de disco. Inclua apenas os campos que atendam às suas necessidades de filtragem ou recuperação.

Tipos de dados suportados

Os campos aceitam quatro tipos de dados Python:

TipoDescriçãoRestrições
strValores de string--
floatNúmeros de ponto flutuante--
intValores inteirosApenas inteiros com sinal de 32 bits: -2.147.483.648 a 2.147.483.647
boolValores booleanosTrue ou False
Importante

O tipo int do Python suporta precisão arbitrária, mas o DashVector aceita apenas inteiros com sinal de 32 bits (-2.147.483.648 a 2.147.483.647). Valores fora desse intervalo causam erros de overflow.

Filtrar por campos

Use pares de chave-valor de campos em expressões de filtro para restringir os resultados de pesquisa:

ret = collection.query(
    vector=[0.1, 0.2, 0.3, 0.4],
    filter='(age > 18 and anykey2 = 1) or (name like "zhang%" and anykey3 = false)'
)
Nota

Mais campos e expressões de filtro mais complexas aumentam o uso de CPU e a latência de consulta.

Quando predefinir um schema de campo

Embora o DashVector seja schema-free por padrão, predefinir um schema de campo ao criar uma coleção melhora o desempenho de consulta, reduz a sobrecarga de armazenamento e habilita a validação de entrada.

ret = client.create(
    name='complex',
    dimension=4,
    fields_schema={'name': str, 'weight': float, 'age': int}
)

Benefícios dos campos predefinidos

BenefícioDescrição
Filtragem mais rápidaA filtragem condicional em campos predefinidos usa menos CPU e retorna resultados mais rápido do que filtrar em campos ad hoc.
Menor sobrecarga de armazenamentoCampos predefinidos armazenam apenas valores. Campos ad hoc armazenam chaves e valores, consumindo mais memória e espaço em disco.
Pré-validação de filtroO DashVector valida a sintaxe do filtro em relação aos tipos de campo predefinidos e retorna um erro para incompatibilidades de tipo. Sem um schema, a validação de tipo não está disponível.

Abordagem recomendada

Predefina os campos que aparecem na maioria dos documentos e nos quais você filtra com frequência. Use campos ad hoc no momento da inserção para atributos específicos de um subconjunto de documentos.