Compartir a través de


Truncado de dimensiones mediante compresión MRL (versión preliminar)

Importante

Esta característica se encuentra en versión preliminar pública en los Términos de uso complementarios. La API REST de versión preliminar admite esta característica.

Use la capacidad para usar menos dimensiones en modelos text-embedding-3. En Azure OpenAI, los modelos text-embedding-3 se han vuelto a entrenar en la técnica Matryoshka Representation Learning (MRL) que genera 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 propiedad truncationDimension en los campos vectoriales para reducir la dimensionalidad de las incrustaciones de texto.

La compresión multinivel MRL guarda en el almacenamiento vectorial y mejora los tiempos de respuesta de las consultas vectoriales en función de las incrustaciones de texto. En Búsqueda de Azure AI, la compatibilidad con MRL solo se ofrece junto con otro método de cuantificación. El uso de la cuantificación binaria con MRL proporciona la reducción máxima del tamaño del índice vectorial. Para lograr la reducción máxima del almacenamiento, use la cuantificación binaria con MRL y stored establecido en false.

Esta característica se encuentra en versión preliminar. Está disponible en 2024-09-01-preview y en paquetes de SDK beta destinados a esa versión preliminar de la API.

Requisitos previos

  • Modelos text-embeding-3 como Text-embeding-3-small o Text-embeding-3-large (solo contenido de texto).

  • Nuevos campos vectoriales de tipo Edm.Half o Edm.Single (no se puede agregar compresión MRL a un campo existente).

  • Algoritmo Hierarchical Navigable Small World (HNSW) (sin compatibilidad con KNN exhaustivo en esta versión preliminar).

  • Cuantificación escalar o binaria. Las dimensiones truncadas solo se pueden establecer cuando se configura la cuantificación escalar o binaria. Se recomienda la cuantificación binaria para la compresión MRL.

Clientes compatibles

Puede usar las API de REST o los paquetes beta del SDK de Azure para implementar la compresión MRL.

No hay compatibilidad con Azure Portal ni Estudio de IA de Azure en este momento.

Cómo usar incrustaciones de texto extendido de MRL

MRL es una funcionalidad integrada en el modelo de inserción de texto que ya está usando. Para beneficiarse de esas funcionalidades en Búsqueda de Azure AI, siga estos pasos.

  1. Use el índice Crear o Actualizar (versión preliminar) o la API equivalente para especificar el esquema de índice.

  2. Agregue campos vectoriales a la definición de índice.

  3. Especifique un objeto vectorSearch.compressions en la definición de índice.

  4. Incluya un método de cuantificación, escalar o binario (recomendado).

  5. Incluya el parámetro truncationDimension establecido en 512 o tan bajo como 256 si usa el modelo de inserción de texto-3-large.

  6. Especifique un perfil de vector que especifique el algoritmo HNSW y el objeto de compresión vectorial.

  7. Asigne el perfil de vector a un campo vectorial de tipo Edm.Half o Edm.Single en la colección fields.

No hay modificaciones en el lado de la consulta para usar un modelo de inserción de texto compatible con MRL. La vectorización integrada, las conversiones de texto a consulta en el momento de la consulta, la clasificación semántica y otras características de mejora de relevancia, como la reclasificación con vectores originales y el sobremuestreo no se ven afectados por la compatibilidad con MRL.

La indexación es más lenta debido a los pasos adicionales, pero las consultas son más rápidas.

Ejemplo de una configuración de búsqueda vectorial que admite MRL

En el ejemplo siguiente se muestra una configuración de búsqueda vectorial que cumple los requisitos y recomendaciones de MRL.

truncationDimension es una propiedad de compresión. Especifica cuánto se reduce el gráfico vectorial en la memoria junto con un método de compresión como la compresión escalar o binaria. Se recomienda 1024 o superior para truncationDimension con la cuantificación binaria. Una dimensionalidad de menos de 1000 degrada la calidad de los resultados de búsqueda al usar MRL y compresión binaria.

{ 
  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "use-bq-with-mrl", 
        "compression": "use-mrl,use-bq", 
        "algorithm": "use-hnsw" 
      } 
    ],
    "algorithms": [
       {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
             "m": 4,
             "efConstruction": 400,
             "efSearch": 500,
             "metric": "cosine"
          }
       }
    ],
    "compressions": [ 
      { 
        "name": "use-mrl", 
        "kind": "truncation", 
        "rerankWithOriginalVectors": true, 
        "defaultOversampling": 10, 
        "truncationDimension": 1024
      }, 
      { 
        "name": "use-bq", 
        "kind": "binaryQuantization", 
        "rerankWithOriginalVectors": true,
        "defaultOversampling": 10
       } 
    ] 
  } 
} 

Este es un ejemplo de una definición de campo vectorial totalmente especificada que cumple los requisitos de MRL.

Recuerde que los campos vectoriales deben ser de tipo Edm.Half o Edm.Single. Los campos vectoriales deben tener una propiedad vectorSearchProfile que determine la configuración de algoritmo y compresión. Los campos vectoriales tienen una propiedad dimensions utilizada para especificar el número de dimensiones para los resultados de puntuación y clasificación. Su valor debe ser el límite de dimensiones del modelo que usa (1536 para la inserción de texto-3-small).

{
    "name": "text_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "stored": false,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "normalizer": null,
    "dimensions": 1536,
    "vectorSearchProfile": "use-bq-with-mrl",
    "vectorEncoding": null,
    "synonymMaps": []
}