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 yretrievable
establecidos en false. En una configuración predeterminada, se almacena una copia recuperable, pero no se devuelve automáticamente en los resultados. Cuandostored
es true, puede alternarretrievable
entre true y false en cualquier momento sin tener que volver a generar un índice. Cuandostored
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:
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.
Agregue una sección
vectorSearch
al índice con perfiles, algoritmos y compresión.En compresión, agregue
rescoringOptions
conenableRescoring
establecido en true,defaultOversampling
establecido en un entero positivo yrescoreStorageMethod
establecido enpreserveOriginals
.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 } ] } }