Compartir a través de


Eliminación de instancias de vector opcionales del almacenamiento

Búsqueda de Azure AI almacena varias copias de campos vectoriales que se usan en cargas de trabajo específicas. Si no necesita admitir un comportamiento específico, como devolver vectores sin procesar en una respuesta de consulta, puede establecer propiedades en el índice que omiten el almacenamiento de esa carga de trabajo.

Requisitos previos

  • Campos vectores de un índice de búsqueda con una configuración de vectorSearch, usando los algoritmos jerárquicos de pequeños mundos navegables (HNSW) o los algoritmos de K-vecino más próximo (KNN) y un nuevo perfil de vector.

Cómo se almacenan los campos vectoriales

Para cada campo vectorial, hay tres copias de los vectores:

Instancia Uso
Vectores de origen (en JSON) recibidos de un modelo de inserción o solicitud de inserción en el índice Se usan para la actualización incremental de datos y si desea que se devuelvan vectores "recuperables" en la respuesta de la consulta.
Vectores de precisión completa originales Se usan para puntuar, si los vectores no están comprimidos, o para volver a puntuar si los resultados de la consulta se obtienen sobre vectores comprimidos. Solo se vuelve a puntuar si los campos vectoriales se someten a cuantificación escalar o binaria.
Vectores del gráfico HNSW para la búsqueda de vecinos más próximos aproximada (ANN) Se usan para la ejecución de consultas.

Puede establecer propiedades que descarten permanentemente las dos primeras instancias del almacenamiento vectorial.

La última instancia (vectores y gráfico) es necesaria para la ejecución de consultas vectoriales ANN. Las técnicas de compresión con pérdida de información como cuantificación escalar o binaria se aplican a esta instancia de vector. Si desea desplazar la compresión con pérdida de información, debe mantener la segunda instancia para volver a puntuar.

Establecer la propiedad stored

La propiedad stored es un valor booleano en una definición de campo vectorial que determina si el almacenamiento se asigna para el contenido del campo vectorial recuperable (la instancia de origen). Esta propiedad stored es true de forma predeterminada. Si no necesita contenido vectorial sin procesar en una respuesta de consulta, puede ahorrar hasta un 50 % de almacenamiento por campo cambiando stored a false.

Consideraciones para establecer stored en false:

  • Dado que los vectores no son legibles para las personas, puede omitirlos de los resultados enviados a los LLM en los escenarios RAG y de los resultados que se muestran en una página de búsqueda. No obstante, manténgalos, si usa vectores en un proceso de bajada que consume contenido vectorial.

  • Sin embargo, si la estrategia de indexación incluye actualizaciones parciales de documentos, como "merge" o "mergeOrUpload" en un documento existente, la configuración stored=false impide las actualizaciones de contenido en esos campos durante la combinación. En cada operación "merge" o "mergeOrUpload" en un documento de búsqueda, debe proporcionar los campos vectoriales en su totalidad, junto con los campos novector que está actualizando, o se quitará el vector.

Establecer la atribución stored=false es irreversible. Se establece durante la creación de índices en campos vectoriales cuando se crean estructuras de datos físicas. Si más adelante quiere recuperar contenido, deberá quitar y recompilar el índice, o bien crear y cargar un nuevo campo que tenga la nueva atribución.

En el ejemplo siguiente se muestra la colección de campos de un índice de búsqueda. Establezca stored en false para quitar permanentemente el almacenamiento recuperable para el campo vectorial.

PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01 
  Content-Type: application/json  
  api-key: [admin key]  

    { 
      "name": "demo-index", 
      "fields": [ 
        { 
          "name": "vectorContent", 
          "type": "Collection(Edm.Single)", 
          "retrievable": false, 
          "stored": false, 
          "dimensions": 1536, 
          "vectorSearchProfile": "vectorProfile" 
        } 
      ] 
    } 

Resumen de puntos clave

  • Se aplica a los campos que tienen un tipo de datos vectorial.

  • Afecta al almacenamiento en disco, no a la memoria y no tiene ningún efecto en las consultas. La ejecución de consultas usa un índice vectorial independiente que no se ve afectado por la propiedad stored porque esa copia del vector siempre se almacena.

  • La propiedad stored se establece durante la creación del índice en los campos vectoriales y es irreversible. Si más adelante quiere recuperar contenido, deberá quitar y recompilar el índice, o bien crear y cargar un nuevo campo que tenga la nueva atribución.

  • Los valores predeterminados son stored establecidos en true y retrievable establecidos en false. En una configuración predeterminada, se almacena una copia recuperable, pero no se devuelve automáticamente en los resultados. Cuando stored es true, puede alternar retrievable entre true y false en cualquier momento sin tener que volver a generar un índice. Cuando stored es false, retrievable debe ser false y no se puede cambiar.

Establecer la propiedad rescoreStorageMethod

Nota:

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin contrato de nivel de servicio y no es aconsejable usarla para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

La propiedad rescoreStorageMethod de una definición de campo vectorial determina si el almacenamiento se asigna a vectores de precisión completa originales. La propiedad rescoreStorageMethod se establece en preserveOriginals de forma predeterminada. Si no usa el sobremuestreo ni se vuelven a puntuar las mitigaciones proporcionadas para consultar vectores comprimidos, puede guardar en el almacenamiento vectorial cambiando rescoreStorageMethod a discardOriginals.

Si piensa usar la cuantificación escalar o binaria, se recomienda conservar rescoreStorageMethod establecido en preserveOriginals.

Para establecer esta propiedad:

  1. Use API de REST Create Index o Create or Update Index 2024-11-01-preview o un paquete beta de Azure SDK que proporcione la característica.

  2. Agregue una sección vectorSearch al índice con perfiles, algoritmos y compresión.

  3. En compresión, agregue rescoringOptions con enableRescoring establecido en true, defaultOversampling establecido en un entero positivo y rescoreStorageMethod establecido en preserveOriginals.

    PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview
    
    {
        "name": "demo-index",
        "fields": [. . . ],
        . . .
        "vectorSearch": {
            "profiles": [
                {
                "name": "myVectorProfile",
                "algorithm": "myHnsw",
                "compression": "myScalarQuantization"
                }
            ],
            "algorithms": [
              {
                "name": "myHnsw",
                "kind": "hnsw",
                "hnswParameters": {
                  "metric": "cosine",
                  "m": 4,
                  "efConstruction": 400,
                  "efSearch": 500
                },
                "exhaustiveKnnParameters": null
              }
            ],
            "compressions": [
                {
                    "name": "myScalarQuantization",
                    "kind": "scalarQuantization",
                    "rescoringOptions": {
                        "enableRescoring": true,
                        "defaultOversampling": 10,
                        "rescoreStorageMethod": "preserveOriginals"
                    },
                    "scalarQuantizationParameters": {
                        "quantizedDataType": "int8"
                    },
                    "truncationDimension": null
                }
            ]
        }
    }