Compartilhar via


Indexação de vetor de meia precisão no Azure DocumentDB

O que é indexação de vetor de meia precisão?

A indexação de vetor de meia precisão permite armazenar e indexar inserções de vetor usando números de ponto flutuante de 16 bits em vez dos floats padrão de 32 bits. Essa otimização leva a reduções substanciais no uso de memória e nos custos de armazenamento, tornando mais viável trabalhar com conjuntos de dados maiores e vetores de maior dimensão. Além disso, ao otimizar a densidade de dados, ele pode contribuir para melhorar o desempenho da consulta em muitos cenários de pesquisa de vetor.

Principais benefícios

  • Aumento do suporte à dimensionalidade: Com a meia precisão, agora você pode indexar vetores com até 4.000 dimensões (um aumento em relação ao limite anterior de 2.000).
  • Volume de armazenamento reduzido: Armazenar vetores em um formato de 16 bits diminui significativamente a quantidade de armazenamento necessária em comparação com vetores de precisão total. Isso pode levar a uma economia de custos considerável, especialmente para bancos de dados de vetor em larga escala.
  • Desempenho configurável vs. Precisão: Para ajustar os resultados da pesquisa, fornecemos um parâmetro de sobrecarga durante a execução da consulta. Isso permite que você controle a compensação entre a velocidade de recuperação e o impacto potencial da precisão reduzida.

Criando um índice de vetor Half-Precision

Ao definir um índice de vetor para sua coleção, você pode habilitar a compactação de meia precisão especificando a opção "compression": "half" dentro do cosmosSearchOptions.

db.runCommand({
  "createIndexes": "<vector_collection_name>",
  "indexes": [
    {
      "key": { "<vector_field_name>": "cosmosSearch" },
      "name": "<index_name>",
      "cosmosSearchOptions": {
        "kind": "vector-hnsw", // or vector-ivf
        "similarity": "cos",
        "dimensions": integer_value, // max 4000
        "compression": "half"
      }
    }
  ]
});

Aprimorando a pesquisa com superamostragem

Ao consultar um índice de vetor que utiliza a compactação de meia precisão, você pode usar o oversampling parâmetro dentro do $search estágio de agregação. Esse parâmetro ajuda a atenuar qualquer possível perda de precisão introduzida pela representação de 16 bits.

O fator oversampling permite que você recupere mais potenciais vizinhos mais próximos do índice de meia precisão do que o número final dos resultados desejados (k). Esses candidatos são comparados usando os vetores originais de precisão total para garantir maior precisão nos resultados finais classificados.

Por exemplo, para obter os 10 principais (k=10) vetores mais semelhantes, uma boa prática pode ser definir oversampling como um valor como 1,5 ou 2,0. Com "oversampling": 1.5, o sistema primeiro obteria 15 candidatos do índice de meia precisão e, em seguida, refinaria os 10 primeiros usando os dados de precisão total.

db.collection.aggregate([
  {
    "$search": {
      "cosmosSearch": {
        "vector": query_vector,
        "path": path_to_property,
        "k":  num_results_to_return,
        "oversampling": double_value
      }
    }
  },
  {
    "$project": {
      "similarityScore": { "$meta": "searchScore" },
      "_id": 0
    }
  }
]);

Observação

O oversampling fator deve ser um duplo com um valor mínimo de 1.0. Esse fator só é relevante para índices vetoriais criados com "compression": "half".

Meia Precisão vs. Quantização de Produto

O Half-Precision e o PQ (Product Quantization) compactam índices de vetor no Azure DocumentDB, mas diferem na forma como alcançam a compactação e afetam a pesquisa:

Característica Precisão Semidobrada Quantização do produto (PQ)
Método de compactação Reduz cada dimensão de vetor para 16 bits. Divide o espaço de vetor em subespaços e quantifica cada um.
Dimensões máximas Até 4 mil Até 16.000
Alteração de precisão Leve perda devido à profundidade de bits mais baixa. Perda potencialmente maior, configurável por meio de pqCompressedDims.
Velocidade de Pesquisa Aumento de velocidade moderado devido ao índice menor. Aumento de velocidade significativo devido a vetores altamente compactados.
Tempo de compilação do índice Relativamente rápido. Pode ser mais longo devido ao treinamento de centroide (pqSampleSize).
Suporte ao índice HNSW, FIV. DiskANN.
Configuration Simples, habilite compression: "half". Mais parâmetros: pqCompressedDims, pqSampleSize.
Uso de Superamostragem Ajuda com a perda leve de precisão. Essencial para recuperar a precisão de uma compressão maior.
Casos de uso ideais Redução de memória moderada, dimensões aumentadas, compensação de precisão aceitável. Conjuntos de dados grandes, alta dimensionalidade, busca rápida priorizada, precisão gerenciada com sobreamostragem.

Próxima etapa