Partilhar via


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

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

A indexação vetorial de meia precisão permite armazenar e indexar embeddings vetoriais usando números de ponto flutuante de 16 bits em vez dos floats padrão de 32 bits. Esta otimização leva a reduções substanciais tanto no uso de memória como nos custos de armazenamento, tornando mais viável trabalhar com conjuntos de dados maiores e vetores de dimensão superior. Além disso, ao otimizar a densidade de dados, pode contribuir para um melhor desempenho de consultas em muitos cenários de pesquisa vetorial.

Principais Benefícios

  • Aumento do Suporte à Dimensionalidade: Com meia precisão, agora pode indexar vetores com até 4.000 dimensões (um aumento em relação ao limite anterior de 2.000).
  • Redução da Área de Armazenamento: Armazenar vetores num formato de 16 bits diminui significativamente a quantidade de armazenamento necessária em comparação com vetores de precisão total. Isto pode levar a poupanças consideráveis de custos, especialmente para bases de dados vetoriais de grande escala.
  • Desempenho Configurável vs. Precisão: Para afinar os resultados da sua pesquisa, fornecemos um parâmetro de sobreamostragem durante a execução da consulta. Isto permite-lhe controlar o equilíbrio entre a velocidade de recuperação e o impacto potencial da redução da precisão.

Criação de um índice vetorial Half-Precision

Ao definir um índice vetorial para a sua coleção, pode ativar a compressã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"
      }
    }
  ]
});

Melhoria da pesquisa com sobreamostragem

Ao consultar um índice vetorial que utiliza compressão de meia-precisão, pode usar o oversampling parâmetro na $search fase de agregação. Este parâmetro ajuda a mitigar qualquer perda potencial de precisão introduzida pela representação de 16 bits.

O oversampling fator permite-lhe obter mais potenciais vizinhos mais próximos a partir do índice de meia precisão do que o número final de resultados desejado (k). Estes candidatos são depois comparados usando os vetores originais de total precisão para garantir maior precisão nos resultados finais classificados.

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

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 valor mínimo de 1.0. Este fator só é relevante para índices vetoriais criados com "compression": "half".

Meia-Precisão vs. Quantização do Produto

Tanto a Half-Precision como a Quantização de Produto (PQ) comprimem índices vetoriais no Azure DocumentDB, mas diferem na forma como conseguem compressão e afetam a pesquisa:

Característica Meia Precisão Quantização de Produto (PQ)
Método de Compressão Reduz cada dimensão vetorial para 16 bits. Divide o espaço vetorial em subespaços e quantiza cada um.
Dimensões Máximas Até 4.000 Até 16.000
Mudança de Precisão Perda ligeira devido à menor profundidade de bits. Perda potencialmente maior, configurável via pqCompressedDims.
Velocidade de Pesquisa Aumento moderado de velocidade devido ao índice menor. Aumento significativo de velocidade devido a vetores altamente comprimidos.
Tempo de Construção do Índice Relativamente rápido. Pode ser mais longo devido ao treino do centroide (pqSampleSize).
Suporte ao Índice HNSW, IVF. DiskANN.
Configuration Basta ativar compression: "half". Mais parâmetros: pqCompressedDims, pqSampleSize.
Uso de Sobreamostragem Ajuda com ligeiras perdas de precisão. Essencial para recuperar a precisão a partir de uma compressão mais extensa.
Casos de Uso Ideais Redução moderada de memória, dimensões aumentadas, compromisso de precisão aceitável. Grandes conjuntos de dados, alta dimensionalidade, a prioridade é dada à pesquisa rápida, precisão gerida com sobreamostragem.

Próximo passo