Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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. |