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.
Note
Búsqueda de Azure AI está disponible a través del portal de Azure, las API REST y los SDK de Azure. También respalda Foundry IQ, la capa de conocimiento administrada que transforma el contenido empresarial en bases de conocimiento reutilizables y compatibles con permisos para agentes en el portal de Microsoft Foundry.
Las inserciones o la representación numérica del contenido heterogéneo son la base de las cargas de trabajo de búsqueda vectorial. Sin embargo, los tamaños de las incrustaciones hacen que sean difíciles de escalar y costosos de procesar. La investigación y la productoización importantes han producido varias soluciones para mejorar la escala y reducir los tiempos de procesamiento. Búsqueda de Azure AI aprovecha varias de estas funcionalidades para cargas de trabajo vectoriales más rápidas y baratas.
En este artículo se tratan todas las técnicas de optimización de Búsqueda de Azure AI que pueden ayudarle a reducir el tamaño de vector y los tiempos de procesamiento de consultas.
Especifique la configuración de optimización de vectores en las definiciones de campos vectoriales en un índice de búsqueda. La mayoría de las características descritas en este artículo están generalmente disponibles en la última versión estable de la API REST y en los paquetes de SDK de Azure dirigidos a esa versión.
Evaluación de las opciones
Revise los enfoques de Búsqueda de Azure AI para reducir la cantidad de almacenamiento que usan los campos vectoriales. Estos enfoques no son mutuamente excluyentes, por lo que puede combinarlos para reducir el tamaño máximo del vector.
Se recomienda la cuantificación integrada porque comprime el tamaño del vector en memoria y en el disco con un esfuerzo mínimo. Este enfoque tiende a proporcionar la mayor ventaja en la mayoría de los escenarios. En cambio, los tipos estrechos (excepto float16) requieren un esfuerzo especial para crearlos y stored ahorra espacio en almacenamiento en disco, que no es tan caro como la memoria.
| Enfoque | ¿Por qué usar este enfoque? |
|---|---|
| Adición de cuantificación escalar o binaria | Comprima incrustaciones float32 o float16 nativas en int8 (escalar) o byte (binario). Esta opción reduce el almacenamiento en memoria y en el disco sin degradar el rendimiento de las consultas. Los tipos de datos más pequeños, como int8 o byte, producen índices vectoriales menos enriquecidos que los que tienen incrustaciones más grandes. Para compensar la pérdida de información, la compresión integrada incluye opciones para el procesamiento posterior a la consulta mediante incrustaciones sin comprimir y sobremuestreo para devolver resultados más relevantes. El reordenamiento y el sobremuestreo son características específicas de la cuantización incorporada de campos float32 o float16 y no pueden utilizarse en incrustaciones sometidas a una cuantización personalizada. |
| Truncamiento de dimensiones para modelos de inserción de texto compatibles con MRL-3 | Use menos dimensiones en los modelos de inserción de texto-3. En Azure OpenAI, estos modelos se vuelven a entrenar en la técnica Matryoshka Representation Learning (MRL) que produce varias representaciones vectoriales en distintos niveles de compresión. Este enfoque genera búsquedas más rápidas y costos de almacenamiento reducidos con una pérdida mínima de información semántica. En Búsqueda de Azure AI, la compatibilidad con MRL complementa la cuantificación escalar y binaria. Al usar cualquiera de los métodos de cuantificación, también puede especificar una truncateDimension propiedad en los campos vectoriales para reducir la dimensionalidad de las incrustaciones de texto. |
| Asignación de tipos de datos primitivos más pequeños a campos vectoriales | Los tipos de datos estrechos, como float16, int16, int8 y byte (binario), consumen menos espacio en memoria y en disco. Sin embargo, debe tener un modelo de inserción que genera vectores en un formato de datos estrecho. Como alternativa, debe tener lógica de cuantificación personalizada que genera datos pequeños. Un tercer caso de uso que requiere menos esfuerzo es la redifusión de incrustaciones float32 nativas generadas por la mayoría de los modelos a float16. Para obtener información sobre los vectores binarios, vea Index binary vectors. |
| Eliminación del almacenamiento opcional de vectores recuperables | Los vectores devueltos en una respuesta de consulta se almacenan por separado de los vectores utilizados durante la ejecución de la consulta. Si no necesita devolver vectores, puede desactivar el almacenamiento recuperable para reducir el almacenamiento total en disco por campo hasta un 50 %. |
Defina todas estas opciones en un índice vacío. Para implementar cualquiera de ellos, use el portal de Azure, las API REST o un paquete de SDK de Azure destinado a esa versión de API.
Después de definir el índice, puede cargar e indexar documentos como un paso independiente.
Ejemplo: Tamaño de vector por técnica de compresión vectorial
Vector quantization and storage options using Python es un ejemplo de código Python que crea varios índices de búsqueda que varían según su uso de cuantificación de almacenamiento vectorial, tipos de datos estrechos y propiedades de almacenamiento.
Este código crea y compara el tamaño del índice de almacenamiento y vector para cada opción de optimización de almacenamiento vectorial. A partir de estos resultados, puede ver que la cuantificación reduce el tamaño del vector más, pero se consigue el mayor ahorro de almacenamiento si usa varias opciones.
| Nombre del índice | Tamaño de almacenamiento | Tamaño del vector |
|---|---|---|
| compressiontest-baseline | 21,3613 MB | 4,8277 MB |
| compressiontest-scalar-compression | 17,7604 MB | 1,2242 MB |
| compressiontest-narrow | 16,5567 MB | 2,4254 MB |
| compressiontest-no-stored | 10,9224 MB | 4,8277 MB |
| prueba de compresión - todas las opciones | 4,9192 MB | 1,2242 MB |
Las API REST del servicio de búsqueda notifican el almacenamiento y el tamaño de vector en el nivel de índice, por lo que debe comparar índices, no campos. Use Indexes- Get Statistics (API REST) o una API equivalente en el SDK de Azure para obtener el tamaño del vector.