Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
¿Qué es la indexación de vectores de media precisión?
La indexación de vectores de precisión media permite almacenar e insertar vectores de índice mediante números de punto flotante de 16 bits en lugar de los floats de 32 bits estándar. Esta optimización conduce a reducciones sustanciales tanto en el uso de memoria como en los costos de almacenamiento, lo que hace que sea más factible trabajar con conjuntos de datos más grandes y vectores dimensionales superiores. Además, al optimizar la densidad de datos, puede contribuir a mejorar el rendimiento de las consultas en muchos escenarios de búsqueda vectorial.
Ventajas clave
- Mayor compatibilidad con la dimensionalidad: Con la precisión media, ahora puede indexar vectores con hasta 4000 dimensiones (un aumento del límite anterior de 2000).
- Superficie de almacenamiento reducida: El almacenamiento de vectores en un formato de 16 bits reduce significativamente la cantidad de almacenamiento necesario en comparación con los vectores de precisión completa. Esto puede dar lugar a un ahorro considerable de costos, especialmente para las bases de datos vectoriales a gran escala.
- Rendimiento configurable frente a precisión: Para ajustar los resultados de búsqueda, se proporciona un parámetro de sobremuestreo durante la ejecución de la consulta. Esto le permite controlar el equilibrio entre la velocidad de recuperación y el posible impacto de la precisión reducida.
Creación de un índice de vector de media precisión
Al definir un índice vectorial para la colección, puede habilitar la compresión de precisión media especificando la "compression": "half" opción dentro de .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"
}
}
]
});
Mejora de la búsqueda con sobremuestreo
Al consultar un índice vectorial que utiliza la compresión de precisión media, puede usar el oversampling parámetro dentro de la fase de $search agregación. Este parámetro ayuda a mitigar cualquier posible pérdida de precisión introducida por la representación de 16 bits.
El factor oversampling le permite recuperar más vecinos potencialmente más cercanos del índice de media precisión que el número final de resultados que desee k. A continuación, estos candidatos se comparan con los vectores de precisión completa originales para garantizar una mayor precisión en los resultados clasificados finales.
Por ejemplo, para obtener los 10 principales vectores (k=10) más similares, un procedimiento recomendado podría ser establecer oversampling en un valor como 1,5 o 2,0. Con "oversampling": 1.5, el sistema obtendría primero 15 candidatos del índice de precisión media y, a continuación, refinaría los 10 primeros con los datos de precisión completa.
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
}
}
]);
Nota:
El oversampling factor debe ser un doble con un valor mínimo de 1.0. Este factor solo es relevante para los índices vectoriales creados con "compression": "half".
Half-Precision frente a Cuantización de Producto
Tanto la Half-Precision como la cuantificación de productos (PQ) comprimen los índices de vectores en Azure DocumentDB, pero difieren en cómo logran la compresión y afectan a la búsqueda:
| Característica | Media Precisión | Cuantificación de productos (PQ) |
|---|---|---|
| Método de Compresión | Reduce cada dimensión vectorial a 16 bits. | Divide el espacio vectorial en subespacios y cuantifica cada uno. |
| Dimensiones máximas | Hasta 4000 | Hasta 16 000 |
| Cambio de precisión | Pérdida leve debido a una profundidad de bits inferior. | Pérdida potencialmente mayor, configurable mediante pqCompressedDims. |
| Velocidad de búsqueda | Aumento de velocidad moderada debido a un índice más pequeño. | Aumento significativo de la velocidad debido a vectores altamente comprimidos. |
| Tiempo de compilación del índice | Relativamente rápido. | Puede prolongarse debido al entrenamiento centroide (pqSampleSize). |
| Compatibilidad con índices | HNSW, IVF. | DiskANN. |
| Configuración | Simplemente, habilite compression: "half". |
Más parámetros: pqCompressedDims, pqSampleSize. |
| Uso de sobremuestreo | Ayuda a mitigar pequeñas pérdidas de precisión. | Esencial para recuperar la precisión de una compresión mayor. |
| Casos de uso ideales | Reducción moderada de la memoria, aumento de las dimensiones, equilibrio de precisión aceptable. | Grandes conjuntos de datos, dimensiones altas, búsqueda rápida priorizada, precisión administrada con sobremuestreo. |